以下命令均基于 root
用户, shell 目录为 /root
.
在执行本文的操作前, 检查是否满足以下条件:
- 有一个带有静态 IPv4 地址的主机
- 有一个域名
- 域名的 A 记录指向主机的 IPv4 地址
- 主机系统为 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/
区内的 Options
和 AllowOverride
所在的两行修改为以下内容:
Options FollowSymLinks
AllowOverride All
然后重启即可.