如何在CentOS 7上使用Nginx安装MediaWiki
MediaWiki是一个流行的维基软件,最初是为维基百科使用而开发的。 这是一个用PHP编程语言编写的免费和开源的wiki软件。 该工具于2002年由Magnus Manske带动,现在版本为1.30。 MediaWiki已被许多大公司使用,包括Nginx,Intel,Novell等。
在本教程中,我们将讨论如何在CentOS 7上逐步安装带有Nginx Web服务器的MediaWiki。我们还将指导您如何安装和配置用于MediaWiki安装的LEMP,包括生成和配置新的免费SSL Letsencrypt MediaWiki安全。
我们将要做什么
- 在CentOS 7上安装Nginx
- 安装并配置PHP-FPM
- 安装和配置MariaDB数据库
- 下载并配置MediaWiki
- 在CentOS 7上生成新的SSL Letsencrypt
- 为MediaWiki安装配置Nginx虚拟主机
- MediaWiki基于Web的安装
- 配置MediaWiki默认皮肤
先决条件
- CentOS 7服务器
- 根特权
第1步 - 在CentOS 7上安装Nginx
对于本教程,我们将使用Nginx Web服务器进行MediaWiki安装。 在CentOS 7上,Nginx包不存在。 所以我们需要从第三方EPEL(Extra Packages for Enterprise Linux)存储库安装它。
使用下面的yum命令更新所有软件包并在CentOS 7系统中安装EPEL存储库。
yum -y update
yum -y install epel-release
接下来,安装Nginx Web服务器。
yum -y install nginx
Nginx安装完成后,启动服务器并使其在系统启动时自动运行。
systemctl start nginx
systemctl enable nginx
所以Nginx的网页服务器已经安装在CentOS 7服务器上。 使用netstat命令检查网络统计信息,并在结果中获得Nginx服务使用的HTTP端口。
netstat -plntu
第2步 - 安装和配置PHP-FPM
在本教程中,我们将使用PHP 7.0。 在这一步,我们将安装PHP 7.0(包括扩展),并为MediaWiki安装配置PHP-FPM。
我们将使用来自第三方存储库“webtatic”的PHP 7.0包。 使用下面的命令为PHP 7.0安装添加新的“webtatic”存储库。
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
现在我们可以使用下面的yum命令安装PHP 7.0所需的所有扩展。
yum -y install ImageMagick php70w-fpm php70w-intl php70w-xml php70w-curl php70w-gd php70w-mbstring php70w-mysql php70w-cli php70w-pear php70w-pecl-apcu
借此,CentOS 7上的PHP 7.0安装已经完成。
接下来,我们将配置PHP-FPM服务。 我们将编辑php.ini文件来配置CGI路径信息,然后编辑'www.conf'配置来配置PHP-FPM服务。 然后,我们将配置PHP-FPM在sock文件下执行(使用'nginx'用户和组)。
使用vim编辑器编辑'php.ini'文件。
vim /etc/php.ini
取消注释下面的行,并将值更改为0。
cgi.fix_pathinfo=0
保存更改,然后退出编辑器。
现在编辑PHP-FPM配置文件“www.conf”。
vim /etc/php-fpm.d/www.conf
将用户和组的行值更改为'nginx'。
user = nginx
group = nginx
现在将变量'listen'的值更改为'php-fpm.sock'文件,如下所示。
listen = /run/php-fpm/php-fpm.sock
我们需要配置sock文件的权限,以及sock文件目录的所有者。 取消注释listen.owner和listen.group行,并将相应的值更改为“nginx”。
listen.owner = nginx
listen.group =nginx
listen.mode = 0660
有关其他配置,请在下面取消注释。
env[HOSTNAME] = $HOSTNAME
env[PATH] = /usr/local/bin:/usr/bin:/bin
env[TMP] = /tmp
env[TMPDIR] = /tmp
env[TEMP] = /tmp
而已。 保存并退出。
接下来,为会话路径配置创建一个新目录。
运行下面的命令创建会话目录。
mkdir -p /var/lib/php/session/
chown -R nginx:nginx /var/lib/php/session/
完成之后,启动PHP-FPM服务并使其在系统引导时自动运行。
systemctl start php-fpm
systemctl enable php-fpm
使用下面的netstat命令检查PHP-FPM。
netstat -pl | grep php
并确保你得到了php-fpm.sock文件。
第3步 - 安装和配置MariaDB数据库
MediaWiki支持MySQL / MariaDB和SQLite数据库。 但在本教程中,我们将使用MariaDB数据库。
首先,使用下面的yum命令安装MariaDB。
yum -y install mariadb mariadb-server
安装完成后,启动mariadb并使其在系统启动时启动。
systemctl start mariadb
systemctl enable mariadb
现在我们需要为MariaDB数据库配置“root”密码。 运行以下命令来配置MariaDB的“root”密码。
mysql_secure_installation
输入“Y”并按下Enter键。
Set root password? [Y/n] Y
TYPE ROOT PASSWORD HERE
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y
MariaDB已安装在CentOS 7系统上,并且已经配置了“root”用户的密码。
接下来,我们将为MediaWiki创建一个新的数据库。 具体而言,我们将创建一个名为“ mediawikidb ”的新数据库,其中包含新用户/所有者“ mediawiki ”和密码“ mypassword ”。
使用mysql命令连接到mysql shell。
mysql -u root -p
TYPE YOUR ROOT PASSWORD
现在运行下面的mysql查询为MediaWiki创建一个新的数据库。
create database mediawikidb;
grant all privileges on mediawikidb.* to mediawiki@'localhost' identified by 'mypassword';
flush privileges;
exit;
已经创建了MediaWiki安装的新数据库和用户。
第4步 - 下载并配置MediaWiki
在本教程中,我们将使用MediaWiki的最新版本(1.30),我们将从版本库中下载所有的MediaWiki源代码。 所以我们需要在系统上安装git和一些软件包。
使用下面的yum命令安装git和其他软件包。
yum -y install git zip unzip composer
安装完成后,创建新目录“/ var / www / mediawiki”并将mediawiki源代码克隆到该目录。
mkdir -p /var/www/mediawiki
git clone https://gerrit.wikimedia.org/r/p/mediawiki/core.git /var/www/mediawiki
接下来,进入'/ var / www / mediawiki'目录,使用composer命令安装MediaWiki安装所需的一些PHP依赖项,如下所示。
cd /var/www/mediawiki
composer install --no-dev
现在将mediawiki目录的所有权权限更改为'nginx'(用户和组)。
chown -R nginx:nginx /var/www/mediawiki
MediaWiki源代码已经下载到'/ var / www / mediawiki'目录,并且所有的依赖关系都已经安装。
第5步 - 在CentOS 7上生成SSL Letsencrypt
出于安全原因,MediaWiki只能在HTTPS连接上运行。 所有对HTTP的请求都将被Nginx Web服务器重定向到HTTPS。
要在HTTPS安全连接下运行MediaWiki,我们需要SSL证书。 所以我们将使用Letsencrypt的免费SSL证书。
安装使用下面的yum命令来加密命令行工具。
yum -y install letsencrypt
安装完成后,使用systemctl命令停止Nginx服务。
systemctl stop nginx
接下来,我们将使用letsencrypt命令生成新的SSL证书。 但在此之前,请确保已将HTTP和HTTPS服务添加到Firewalld。
以下是向Firewalld添加新的HTTP和HTTPS服务的方法。
firewall-cmd --add-service=http --permanent
firewall-cmd --add-service=https --permanent
firewall-cmd --reload
生成新的免费SSL允许使用下面的letsencrypt命令加密证书。
letsencrypt certonly
该命令将询问你有关ACME认证。 选择数字“1”来旋转临时Web服务器。
接下来,键入您的电子邮件地址的更新通知,然后键入“A”同意Letsencrypt服务条款(TOS),最后键入您的维基的域名。
完成所有工作后,您将得到类似于下图所示的结果。
来自Letsencrypt的新SSL证书已经生成并存储在“/ etc / letsencrypt / live”目录中。
第6步 - 为MediaWiki配置Nginx虚拟主机
在这一步中,我们将为MediaWiki创建新的Nginx虚拟主机配置。
转到“/ etc / nginx”目录,使用vim编辑器创建新的配置文件“mediawiki.conf”。
cd /etc/nginx/
vim conf.d/mediawiki.conf
粘贴下面的配置。
# HTTP Request will be Redirected to the HTTPS
server {
listen 80;
listen [::]:80;
server_name wiki.hakase-labs.co;
return 301 https://$host$request_uri;
}
# HTTPS Configuration
server {
listen 443 ssl;
listen [::]:443;
server_name wiki.hakase-labs.co;
root /var/www/mediawiki;
index index.php;
autoindex off;
# SSL Certificate Configuration
ssl_certificate /etc/letsencrypt/live/wiki.hakase-labs.co/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/wiki.hakase-labs.co/privkey.pem;
client_max_body_size 5m;
client_body_timeout 60;
location / {
try_files $uri $uri/ @rewrite;
}
location @rewrite {
rewrite ^/(.*)$ /index.php?title=$1&$args;
}
location ^~ /maintenance/ {
return 403;
}
# PHP-FPM Configuration Nginx
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/run/php-fpm/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
try_files $uri /index.php;
expires max;
log_not_found off;
}
location = /_.gif {
expires max;
empty_gif;
}
location ^~ ^/(cache|includes|maintenance|languages|serialized|tests|images/deleted)/ {
deny all;
}
location ^~ ^/(bin|docs|extensions|includes|maintenance|mw-config|resources|serialized|tests)/ {
internal;
}
# Security for 'image' directory
location ~* ^/images/.*.(html|htm|shtml|php)$ {
types { }
default_type text/plain;
}
# Security for 'image' directory
location ^~ /images/ {
try_files $uri /index.php;
}
}
而已。 保存更改并退出编辑器。
注意:
- 将域名更改为您自己的域名。
- 更改SSL证书文件的路径
现在测试Nginx配置并确保没有错误,然后重新启动Nginx服务。
nginx -t
systemctl restart nginx
添加了MediaWiki的Nginx虚拟主机配置,并准备从Web浏览器安装MediaWiki。
第7步 - MediaWiki基于Web的安装
打开您的网页浏览器并输入MediaWiki URL。
http://wiki.hakase-labs.co/
您将被重定向到HTTPS连接。 在网页上,点击“设置维基”链接。
语言配置
选择英文“en”语言,然后点击“继续”。
环境检查
确保所有的服务器配置都通过了环境检查。
然后点击“继续”。
数据库配置
输入数据库名称为“mediawikidb”,输入用户名“mediawiki”,密码为“mypassword”。
现在点击“继续”。
数据库设置
保持默认状态,然后点击“继续”。
创建新的管理员用户
输入您自己的管理员用户,电子邮件,密码,然后点击“继续”。
MediaWiki附加配置
现在我们进入到'MediaWiki Additional Configuration'页面,如下所示。
保留默认值的所有字段,然后点击“继续”。
MediaWiki安装
点击“继续”安装MediaWiki。
你会进入下面的页面。
再次点击“继续”。
MediaWiki安装完成。 我们将被提示下载新文件“LocalSettings.php” - 下载该文件。
接下来,我们需要将新下载的“LocalSetting.php”文件上传到服务器上的MediaWiki目录“/ var / www / mediawiki”。 另外,不要忘记将文件的所有权限更改为“www-data”(用户和组)。
scp LocalSettings.php root@hakase-labs.co:/var/www/mediawiki/
chown -R www-data:www-data /var/www/mediawiki
回到你的网页浏览器的MediaWiki安装页面,点击链接“进入你的wiki”。 您将看到MediaWiki已经在CentOS 7服务器上安装了Nginx Web服务器。
第8步 - 下载并配置MediaWiki默认皮肤
在这个阶段,MediaWiki安装已经完成。 在这一步中,我们将配置我们的MediaWiki网站的默认外观/主题。
转到“/ var / www / mediawiki /皮肤”目录,并将名为“Vector”的默认皮肤克隆到该目录。
cd /var/www/mediawiki/skins/
sudo git clone https://gerrit.wikimedia.org/r/mediawiki/skins/Vector
将“外观”目录的所有者更改为“nginx”用户和组。
chown -R nginx:nginx /var/www/mediawiki/skins/
现在使用vim编辑器编辑'LocalSettings.php'文件。
vim /var/www/mediawiki/LocalSettings.php
并将以下PHP代码粘贴到文件末尾。
wfLoadSkin( 'Vector' );
而已。 保存并退出。
回到您的网络浏览器并刷新MediaWiki页面。 确保你看到MediaWiki与'矢量'皮肤如下。
在CentOS 7上安装和配置Nginx Web服务器的MediaWiki已成功完成。