如何在 Ubuntu 20.04 上安装 MediaWiki Apache/Nginx

本教程将向您展示 如何在 Ubuntu 20.04 上安装 MediaWiki. MediaWiki 是支持维基百科的后端软件。 它是免费的开源软件,也是当今使用最广泛的 wiki 软件。 MediaWiki 的知名用户包括 Wikipedia.org 和 wikia.com。

您可以使用 MediaWiki 创建您自己的私人或公共 wiki 站点。 MediaWiki 有许多有用的扩展,它们是为 Wikipedia 和其他 wiki 站点创建的。

先决条件

MediaWiki 是一个用 PHP 编写的程序。 要遵循本教程,首先您需要在 Ubuntu 20.04 服务器上安装 LAMP 或 LEMP 堆栈。

若你宁可 Apache Web 服务器,然后设置 LAMP 堆栈。

  • 如何在 Ubuntu 20.04 服务器/桌面上安装 LAMP 堆栈

若你宁可 nginx Web 服务器,然后设置 LEMP 堆栈。

  • 如何在 Ubuntu 20.04 LTS 上安装 LEMP Stack(Nginx、MariaDB、PHP7.4)

您还需要一个域名。 我从 NameCheap 注册了我的域名,因为价格低廉,而且他们提供终身免费的 whois 隐私保护。

安装 LAMP 或 LEMP 堆栈后,请阅读以下说明以安装 MediaWiki。

第 1 步:下载 MediaWiki

下载 MediaWiki 的最新稳定版本:

wget https://releases.wikimedia.org/mediawiki/1.35/mediawiki-1.35.1.tar.gz

将存档解压缩到 /var/www/.

sudo mkdir -p /var/www/  sudo tar xvf mediawiki-1.35.1.tar.gz -C /var/www/

重命名目录。

sudo mv /var/www/mediawiki-1.35.1 /var/www/mediawiki

然后我们需要安装一些MediaWiki需要的PHP扩展。

sudo apt install php7.4-mbstring php7.4-xml php7.4-fpm php7.4-json php7.4-mysql php7.4-curl php7.4-intl php7.4-gd php7.4-mbstring texlive imagemagick

如果你使用 Apache web服务器,那么你需要重新启动 Apache.

sudo systemctl restart apache2

接下来,我们需要通过 Composer(一个 PHP 依赖管理器)安装外部依赖。

sudo apt install composer  cd /var/www/mediawiki/  sudo composer install --no-dev

请注意,MediaWiki 目前不支持 PHP8.0。 如果你已经在你的 Ubuntu 服务器上安装了 PHP8.0,那么你应该运行 sudo update-alternatives --config php 命令将 PHP7.4 设置为默认版本。

安装所有依赖项后,运行以下命令设置 Web 服务器用户(www-data) 作为此目录的所有者。

sudo chown www-data:www-data /var/www/mediawiki/ -R

步骤 2:创建数据库

使用以下命令登录 MariaDB 服务器。

sudo mysql -u root

为 MediaWiki 创建一个数据库。 本教程命名数据库 mediawiki,但您可以使用任何您喜欢的名称。

CREATE DATABASE mediawiki;

然后在 MariaDB 提示符下运行以下命令以创建数据库用户并授予该用户权限。 代替 mediawiki, wikiuserpassword 分别使用您首选的数据库名称、数据库用户名和用户密码。

GRANT ALL PRIVILEGES ON mediawiki.* TO 'wikiuser'@'localhost' IDENTIFIED BY 'password';

接下来,刷新 MariaDB 权限并退出。

flush privileges;  exit;

第 3 步:创建 Apache MediaWiki 的虚拟主机或 Nginx 配置文件

Apache

如果你使用 Apache web 服务器,为 MediaWiki 创建一个虚拟主机。

sudo nano /etc/apache2/sites-available/mediawiki.conf

将以下文本复制并粘贴到文件中。 代替 wiki.your-domain.com 使用您的实际域名。 不要忘记为此域名创建 DNS A 记录。

<VirtualHost *:80>     ServerAdmin [email protected]     DocumentRoot /var/www//mediawiki/     ServerName wiki.your-domain.com      <Directory /var/www/html/mediawiki/>         Options FollowSymLinks         AllowOverride All         Order allow,deny         allow from all     </Directory>      ErrorLog /var/log/apache2/mediawiki_error     CustomLog /var/log/apache2/mediawiki_access common </VirtualHost>

Save 和 close 文件。 然后启用这个虚拟主机。

sudo a2ensite mediawiki.conf

重新加载 Apache 以使上述更改生效。

sudo systemctl reload apache2

nginx

如果您使用 Nginx 网络服务器,请在下为 MediaWiki 创建一个服务器块文件 /etc/nginx/conf.d/ 目录。

sudo nano /etc/nginx/conf.d/mediawiki.conf

复制以下文本并将其粘贴到文件中。 代替 wiki.your-domain.com 使用您的实际域名。 不要忘记为此域名创建 DNS A 记录。

server {         listen 80;         listen [::]:80;         server_name wiki.your-domain.com;          root /var/www/mediawiki;         index index.php;             error_log /var/log/nginx/mediawiki.error;         access_log /var/log/nginx/mediawiki.access;          location / {                 try_files $uri $uri/ /index.php;         }          location ~ /.well-known {             allow all;         }          location ~ /.ht {           deny all;          }          location ~ .php$ {             fastcgi_pass unix:/run/php/php7.4-fpm.sock;             fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;             include fastcgi_params;             include snippets/fastcgi-php.conf;         } }

Save 和 close 文件。 然后测试 Nginx 配置。

sudo nginx -t

如果测试成功,请重新加载 Nginx Web 服务器。

sudo systemctl reload nginx

步骤 4:启用 HTTPS

为了加密 HTTP 流量,我们可以通过安装 Let’s Encrypt 颁发的免费 TLS 证书来启用 HTTPS。 运行以下命令在 Ubuntu 20.04 服务器上安装 Let’s Encrypt 客户端(certbot)。

sudo apt install certbot

如果你使用 Apache, 安装 Certbot Apache 插入。

sudo apt install python3-certbot-apache

并运行此命令以获取并安装 TLS 证书。

sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d wiki.your-domain.com

如果你使用 nginx,那么你还需要安装Certbot Nginx插件。

sudo apt install python3-certbot-nginx

接下来,运行以下命令获取并安装 TLS 证书。

sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d wiki.your-domain.com

在哪里

  • --nginx: 使用nginx插件。
  • --apache: 使用 Apache 插入。
  • --agree-tos: 同意服务条款。
  • --redirect: 通过 301 重定向强制 HTTPS。
  • --hsts:将 Strict-Transport-Security 标头添加到每个 HTTP 响应。 强制浏览器始终对域使用 TLS。 防御 SSL/TLS 剥离。
  • --staple-ocsp:启用 OCSP 装订。 有效的 OCSP 响应被装订到服务器在 TLS 期间提供的证书。

现在应该获得并自动安装证书。

步骤 5:运行基于 Web 的安装脚本

https://wiki.you-domain.com 在 Web 浏览器中启动基于 Web 的安装脚本。 点击 完成安装 链接以启动设置向导。