Ubuntu 20.10 上搭建 WordPress 博客

详细介绍了 WordPress 博客的搭建过程, 适用于 Debian 系的 linux.

以下命令均基于 root 用户, shell 目录为 /root.

在执行本文的操作前, 检查是否满足以下条件:

  1. 有一个带有静态 IPv4 地址的主机
  2. 有一个域名
  3. 域名的 A 记录指向主机的 IPv4 地址
  4. 主机系统为 Debian 系 (最好是 Ubuntu 20.10)

升级系统

apt update
apt upgrade -y
apt autoremove -y

安装必需软件

apt install -y apache2 mysql-server php phpmyadmin

安装 MySQL 时可能出现内存不够导致安装失败的情况, 可以通过如下命令创建虚拟内存:

dd if=/dev/zero of=/swap bs=4k count=512000
mkswap /swap
swapon /swap

以上命令创建了约 2 GB 的虚拟内存, 但重启后就无效了, 因为没有设置开机挂载. 想要永久生效, 须修改 /etc/fstab 文件, 添加如下一行:

/swap swap swap defaults 0 0

安装 phpMyAdmin 时会弹出两个窗口, 第一个是选择网络服务器, 按上下键将光标移至 apache2 后按空格键选中, 然后按 Tab 将光标移至 OK, 最后按下回车确认.

第二个会询问是否使用 dbconfig-common 设置数据库, 选择 Yes, 然后设置密码并确认.

配置 TLS 证书

首先安装 Certbot:

apt install -y certbot

确保关闭 Apache 后申请证书:

systemctl stop apache2
certbot certonly --standalone --agree-tos --register-unsafely-without-email -d your-domain -d www.your-domain

创建符号链接以启用 Apache 上的 https 页面:

ln -s /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-enabled/default-ssl.conf

编辑 /etc/apache2/sites-available/default-ssl.conf 文件, 修改这两行:

SSLCertificateFile /etc/letsencrypt/live/your-domain/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/your-domain/privkey.pem

再在 VirtualHost 区内添加这一行以移除 HSTS. 如果你不知道 HSTS 是什么, 请忽略这一步和下一步, 直接进入 "启用 Apache 的 SSL 模块" 部分 (关于这个, 我在这篇文章中给予了说明):

Header always set Strict-Transport-Security "max-age=0"

还需启用 Apache 的 Headers 模块:

a2enmod headers

启用 Apache 的 SSL 模块:

a2enmod ssl

编辑 /etc/apache2/sites-available/000-default.conf 文件, 在 VirtualHost 区内添加这三行以强制 http 转 https:

RewriteEngine on
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*) https://%{SERVER_NAME}$1 [R=301]

还需启用 Apache 的 Rewrite 模块:

a2enmod rewrite

安装 WordPress

下载, 解压, 复制 WordPress 到 Apache 目录, 并删除 Apache 原有的默认主页:

wget https://wordpress.org/latest.tar.gz
tar -zxvf latest.tar.gz
rm -f /var/www/html/index.html
cp -rf wordpress/* /var/www/html

授予权限:

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

启用 php 的 mbstring 插件:

phpenmod mbstring

为更改 MySQL 的 root 账户认证方式, 需在 MySQL 的 shell 环境下操作. 先进入 MySQL 的 shell 环境:

mysql

输入以下命令以查询当前的账户认证方式:

SELECT user,authentication_string,plugin,host FROM mysql.user;

root 用户的插件使用的是 auth_socket, 需要修改为 mysql_native_password.

输入以下命令以修改:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '$PASSWORD';
FLUSH PRIVILEGES;

其中 $PASSWORD 是 root 用户的密码.

再次查询账户认证方式, 就能发现修改成功了.

启动 Apache:

systemctl enable apache2 --now

浏览器打开 https://your-domain/phpadmin 就能进入数据库后台了, 输入 root 密码登录, 新建一个数据库给 WordPress 使用.

浏览器打开 https://your-domain, 开始配置 WordPress, 输入刚才新建的数据库名称和密码, 并创建一个账号, 重新登录就完成了博客的搭建.

WordPress 后台地址为 https://your-domain/wp-admin.

一些说明

如果执行 WordPress 的站点健康检测, 可能会提示 imagick 没有安装, 可以执行以下命令安装:

apt install php-imagick

如果想使用 WordPress 固定链接的 "文章名" 模式, 需要修改 /etc/apache2/apache2.conf 文件. 将 Directory /var/www/ 区内的 OptionsAllowOverride 所在的两行修改为以下内容:

Options FollowSymLinks
AllowOverride All

然后重启即可.