CentOS 8/nginx 1.14.1/php-fpm 7.3.24/mariaDB 10.3.17构建MediaWiki 1.34

一.事前准备

CentOS 8(腾讯云)、putty(远程控制台)、winSCP(远程文件操作)、网站域名、出入站端口安全组等不表。

二.安装所需软件

1.代理服务器nginx

yum install -y nginx
systemctl enable nginx(开机自动运行)

2.运行环境php7.3

文章发表时,mediawiki提示不与php7.4兼容,同时自我测试php7.2也会出问题,然而centOS 8的yum并不自带php7.3,因此需要额外下载

dnf install dnf-utils http://rpms.remirepo.net/enterprise/remi-release-8.rpm -y
dnf module reset php
dnf module enable php:remi-7.3 -y
yum install -y php php-mysqlnd
systemctl enable php-fpm(开机自动运行)

3.数据库mariaDB

yum install -y mariadb-server
service mariadb start
systemctl enable mariadb
mysql_secure_installation(安装配置,会问你是否设置root密码,是否删除test表、是否允许远程连接root等)
mysql -u root -p(登录)
(输入密码)
grant all privileges on *.* to 'root'@'%' identified by '(yourPassword)';(开放远程权限)
flush privileges;
exit;

(如果内存太小,比如我的服务器是1核1G,mariadb会经常报内存不足自动关闭,所以要做虚拟内存)
dd  if=/dev/zero  of=/var/swapfile  bs=1024  count=1048576
mkswap  /var/swapfile
swapon   /var/swapfile

4.MediaWiki 1.34

从官网上下载后,转移到/var/www/下,解压,并改名。

三.环境配置

1.nginx配置

[/etc/nginx/conf.d]
新建yourName.conf,内容如下。修改 [www.yoursite.com]与[mediawiki文件夹名]

server {
    listen       80;
    listen       [::]:80;
    server_name  [www.yoursite.com];
    root         /var/www;

    # Load configuration files for the default server block.
    include /etc/nginx/default.d/*.conf;

location ~ ^/[mediawiki文件夹名]/(index|load|api|thumb|opensearch_desc|rest)\.php$ {
	include /etc/nginx/fastcgi_params;
	fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
	fastcgi_pass 127.0.0.1:9000; # or whatever port your PHP-FPM listens on
}
}

2.php配置

[/etc/php.ini]
找到如下字段,设置为0(不过好像他默认注释掉了)

cgi.fix_pathinfo=1

[/etc/php-fpm.d/www.conf]
修改如下字段为nginx(应该是和/etc/nginx/nginx.conf中的user保持一致)

user = apache
group = apache

[/var/lib/php]
循环赋予权限777

3.生成mediawiki配置文件

启动nginx,php-fpm,mariadb
(service nginx start,其他同理)
访问[域名]/[mediawiki文件夹名]/index.php,进行mediawiki配置,完成后产生LocalSettings.php文件,放到mediawiki文件夹下,即可访问

四.完成之后

1.域名主页跳转、短路径

[/etc/nginx/conf.d/[yourname.conf]]
在server中加入

#短域名
# Images
location /[mediawiki文件夹名]/images {
	# Separate location for images/ so .php execution won't apply
}
location /[mediawiki文件夹名]/images/deleted {
	# Deny access to deleted images folder
	deny all;
}
# MediaWiki assets (usually images)
location ~ ^/[mediawiki文件夹名]/resources/(assets|lib|src) {
	try_files $uri 404;
	add_header Cache-Control "public";
	expires 7d;
}
# Assets, scripts and styles from skins and extensions
location ~ ^/[mediawiki文件夹名]/(skins|extensions)/.+\.(css|js|gif|jpg|jpeg|png|svg|wasm)$ {
	try_files $uri 404;
	add_header Cache-Control "public";
	expires 7d;
}
# Favicon
location = /favicon.ico {
	alias /[mediawiki文件夹名]/images/6/64/Favicon.ico;
	add_header Cache-Control "public";
	expires 7d;
}

## 如果想使用 installer/updater就取消下面的注释
## 
#location /[mediawiki文件夹名]/mw-config/ {
#	# Do this inside of a location so it can be negated
#	location ~ \.php$ {
#		include /etc/nginx/fastcgi_params;
#		fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
#		fastcgi_pass 127.0.0.1:9000; # or whatever port your PHP-FPM listens on
#	}
#}

# Handling for Mediawiki REST API, see [[mw:API:REST_API]],visualEditor扩展必须要有这一段,否则无论什么页面都会重定向到主页
location /[mediawiki文件夹名]/rest.php/ {
	try_files $uri $uri/ /[mediawiki文件夹名]/rest.php?$query_string;
}

    location /wiki/ {
        rewrite ^/wiki/(?<pagename>.*)$ /[mediawiki文件夹名]/index.php;
    }


    #域名主页跳转
location / {
        return 301 /wiki/Mainpage;
    }

    error_page 404 /404.html;
        location = /40x.html {
    }

    error_page 500 502 503 504 /50x.html;
        location = /50x.html {
    }

[LocalSettings.php]

#短域名
$actions = array( 'edit', 'watch', 'unwatch', 'delete','revert', 'rollback',
  'protect', 'unprotect', 'markpatrolled', 'render', 'submit', 'history', 'purge', 'info' );
foreach ( $actions as $action ) {
  $wgActionPaths[$action] = "/wiki/$1/$action";
}
$wgActionPaths['view'] = "/wiki/$1";

$wgArticlePath = "/wiki/$1";
$wgUsePathInfo = true;

2.其他扩展(均需额外下载)

每个扩展的详细配置请自行查看扩展主页

#变量扩展(多个模版使用)
wfLoadExtension( 'Variables' );

#评论扩展(其中[Avatar](https://github.com/nbdd0121/MW-Avatar)和[FlowThread](https://github.com/nbdd0121/MW-FlowThread)需要从github下载)
wfLoadExtension( 'Echo' );
wfLoadExtension('Avatar'); 
wfLoadExtension('FlowThread');

#页签扩展
wfLoadExtension( 'Tabber' );

#弹窗扩展(可预览链接与注释的内容)
wfLoadExtension( 'Popups' );
$wgPopupsHideOptInOnPreferencesPage = true;
$wgPopupsOptInDefaultState = '1';
$wgPopupsReferencePreviewsBetaFeature = false;

#手机前端扩展
wfLoadExtension( 'MobileFrontend' );

#页面点击计数扩展(需在[mediawiki文件夹]/maintance下运行“php update.php”命令)
wfLoadExtension( 'HitCounters' );
$wgDisableCounters = false;
$wgEnableCountersAtTheFooter = true;

#审核扩展,必须放最后(需在[mediawiki文件夹]/maintance下运行“php update.php”命令)
wfLoadExtension( 'Moderation' );

2.1 VisualEditor

其实还有一个可视化编辑器visualEditor的扩展,但是不知道什么原因,安装Parsoid之后我的1核1G的小服务器就经常cpu超载,不停断连,最后只得重装系统。所以虽然曾经配置过能用,但碰过不少坑,几经修改,所以不能保证从零开始配置就一定能成。总而言之先写在这里。
注:我后来将mediawiki升级到1.35,已附带VisualEditor,可略去后面的过程。其他配置不变,可以正常使用

2.1.1安装Parsoid
dnf install git npm make python2 gcc-c++ -y
cd /opt
git clone --recursive https://gerrit.wikimedia.org/r/mediawiki/services/parsoid/deploy
git clone https://gerrit.wikimedia.org/r/mediawiki/services/parsoid
cd parsoid
PYTHON=python2 npm install
cp config.example.yaml config.yaml
chown apache:apache /opt/parsoid
2.1.2 修改config.yaml
services:
    conf:
        mwApis:
        #修改下面这两个
          uri: 'http://[www.yoursite.com]/[mediawiki文件夹名]/api.php'
          domain: '[www.yoursite.com]'  # optional
2.1.3 创建/etc/systemd/system/parsoid.service
[Unit]
Description=Mediawiki Parsoid web service on node.js
Documentation=http://www.mediawiki.org/wiki/Parsoid
Wants=local-fs.target network-online.target
After=local-fs.target network-online.target

[Install]
WantedBy=multi-user.target

[Service]
Type=simple
User=apache
Group=apache
WorkingDirectory=/opt/parsoid
ExecStart=/usr/bin/node /opt/parsoid/bin/server.js
KillMode=process
Restart=on-failure
PrivateTmp=true
StandardOutput=syslog
2.1.4 创建 /etc/firewalld/services/parsoid.xml
<?xml version="1.0" encoding="utf-8"?>
<service>
  <short>Parsoid</short>
  <description>Wikitext converter for Mediawiki</description>
  <port protocol="tcp" port="8000"/>
</service>
2.1.5 防火墙配置

(虽然我这边运行的时候报firewall-cmd命令找不到,就直接跳过了)

firewall-cmd --reload
firewall-cmd --add-service=parsoid --permanent
firewall-cmd --reload
2.1.6 运行
systemctl enable parsoid --now
curl http://localhost:8000(也可以直接访问http://[域名]:8000以查看是否正确运行)
2.1.7 LocalSettings.php
#可视化编辑器扩展
wfLoadExtension( 'VisualEditor' );
$wgVirtualRestConfig['modules']['parsoid'] = array(
    // URL to the Parsoid instance.
    // You should change $wgServer to match the non-local host running Parsoid
    'url' => 'http://[www.yoursite.com]:8000',
    // Parsoid "domain", see below (optional, rarely needed)
     'domain' => 'http://[www.yoursite.com]'
);
$wgDefaultUserOptions['visualeditor-enable'] = 1;

3.模板

个人常用模板:
黑幕注音colordeadnavboxhide
以上模板在萌娘百科均可查到效果与源代码,并转移到自己的wiki中,在此不多复述。如果发现没有效果,可能是因为mediawiki:common.js与mediawiki:common.css中还有代码需要复制。

4.多站点配置

1.只需在/var/www下再解压一个mediawiki的文件夹,改名,然后再复制一个[/etc/nginx/conf.d/[yourname.conf]]修改内容为相应的名字即可。
2.如果同样需要VisualEditor,就在原修改位置再加两行

  uri: 'http://[www.yoursite.com]/[mediawiki文件夹名]/api.php'
  domain: '[www.yoursite.com]'  # optional
  uri: 'http://[www.yoursite.com]/[mediawiki文件夹名]/api.php'
  domain: '[www.yoursite.com]'  # optional
  ……
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
编写php服务的dockerfile文档,满足如下要求: 1)基础镜像:centos:7 2)作者信息:姓名首字母 3)下载gcc gcc-c++ gd-devel libxml2-devel libcurl-devel libjpeg-devel libpng-devel openssl-devel make perl 4)将本地文件libzip-1.2.0.tar.gz解压并复制到容器中的/tmp中 5)通过以下命令对libzip进行配置编译: cd /tmp/libzip-1.2.0 && ./configure && make && make install 6)在容器中复制并解压文件php-7.3.9.tar.gz到/tmp文件夹中,然后进入到/tmp/php-7.3.9文件夹下,并通过以下命令进行编译: ./configure --prefix=/usr/local/php \ --with-config-file-path=/usr/local/php/etc \ --with-mysql --with-mysqli \ --with-openssl --with-zlib --with-curl --with-gd \ --with-jpeg-dir --with-png-dir --with-iconv \ --enable-fpm --enable-zip --enable-mbstring 6)在容器中将/usr/local/lib/libzip/include/zipconf.h文件复制到 /usr/local/include/文件加下 7)继续进行编译make -j 4 && make install 8)在容器中将/usr/local/php/etc/php-fpm.conf.default文件复制为 /usr/local/php/etc/php-fpm.conf文件 9)在容器中将文件/usr/local/php/etc/php-fpm.d/www.conf.default 复制成/usr/local/php/etc/php-fpm.d/www.conf 文件 10)在容器中修改/usr/local/php/etc/php-fpm.d/www.conf文件中的127.0.0.1为0.0.0.0 11)在容器中复制./sapi/fpm/init.d.php-fpm文件成 /etc/init.d/php-fpm文件 12)在容器中修改/etc/init.d/php-fpm权限为可执行 13)端口9000 14)在容器启动时执行命令:/etc/init.d/php-fpm start && tail -F /var/log/messages
最新发布
06-09

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值