环境安装
安装 Docker
为了方便,推荐使用官方脚本安装。此脚本适用于常用 Linux 发行版。
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
默认情况下,Docker 只能通过 root 用户运行,普通用户通常要加 sudo
。如果觉得麻烦,可以启用 Docker 的 rootless 模式。使用普通用户执行下面这条命令即可安装:
dockerd-rootless-setuptool.sh install
安装 Docker Compose
下载二进制文件
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
赋予执行权限
sudo chmod +x /usr/local/bin/docker-compose
设置容器
创建项目
新建项目目录,这里以
~/my_wordpress
为例。mkdir ~/my_wordpress
进入项目目录
cd ~/my_wordpress
编写配置文件
- 编辑文件
nano docker-compose.yml
- 填入以下配置:
version: "3.9" services: db: image: mysql:5.7 volumes: - db_data:/var/lib/mysql restart: always environment: MYSQL_ROOT_PASSWORD: somewordpress MYSQL_DATABASE: wordpress MYSQL_USER: wordpress MYSQL_PASSWORD: wordpress wordpress: depends_on: - db image: wordpress:latest volumes: - wordpress_data:/var/www/html ports: - "80:80" - "443:443" restart: always environment: WORDPRESS_DB_HOST: db WORDPRESS_DB_USER: wordpress WORDPRESS_DB_PASSWORD: wordpress WORDPRESS_DB_NAME: wordpress volumes: db_data: {} wordpress_data: {}
- 这里用到了
mysql:5.7
和wordpress:latest
两个 Docker 镜像,WordPress 镜像依赖于 MySQL 镜像。 restart: always
参数表明容器服务宕机后会自动重启。MYSQL_ROOT_PASSWORD
为数据库的 root 密码,MYSQL_PASSWORD
为数据库的普通用户密码,请自行修改,对应的WORDPRESS_DB_PASSWORD
也要同时修改。MYSQL_USER
为数据库普通用户的用户名,如果有需要也可以修改,对应的WORDPRESS_DB_USER
也要同时修改。80:80
的意思是把宿主机的 80 端口映射到容器内部的 80 端口。如需通过其他端口访问,只需修改前面的80
。比如,我要通过 8080 端口访问 WordPress,填写8080:80
即可。- 执行 Ctrl + O 保存文件,回车,再执行 Ctrl + X 退出。
启动容器
在 ~/my_wordpress
目录中执行以下命令启动 WordPress:
sudo docker-compose up -d
构建完成后就可以通过 http://ip:port
来访问 WordPress(请将 ip
替换为 VPS 的 IP,port
替换为你使用的端口,如果是 80 端口则可以省略)。如果提示 Error establishing a database connection
,说明配置尚未完成,等待 1~2 分钟,刷新网页即可进入安装界面。
配置 SSL
由于本人对 Apache2 不熟悉,且网上很多教程所介绍的方法已不适用,本章的撰写花费了较多时间。
进入容器
sudo docker-compose exec wordpress bash
注意:本章中后续命令都要在容器中执行!
安装 cron 及 nano
apt update && apt install -y cron nano
安装 acme.sh 用于签发 SSL 证书(请把 my@example.com
改为你的邮件地址)
curl https://get.acme.sh | sh -s email=my@example.com
将域名解析至 VPS 的 IP,然后执行以下命令签发证书(请把 example.com
改为你的域名)
bash ~/.acme.sh/acme.sh --issue -d example.com --apache --tlsport 56789
启用模块
a2enmod rewrite
a2enmod ssl
创建证书目录
mkdir -p /etc/apache2/ssl
复制证书(请把 example.com
改为你的域名)
bash ~/.acme.sh/acme.sh --install-cert -d example.com \
--cert-file /etc/apache2/ssl/cert.pem \
--key-file /etc/apache2/ssl/key.pem \
--fullchain-file /etc/apache2/ssl/fullchain.pem \
--reloadcmd "service apache2 force-reload"
创建站点(将以下全部内容粘贴进终端执行):
cat > wordpress.conf << EOF
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerAdmin webmaster@localhost
ServerName yourdomain.com
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/cert.pem
SSLCertificateKeyFile /etc/apache2/ssl/key.pem
SSLCACertificateFile /etc/apache2/ssl/fullchain.pem
</VirtualHost>
</IfModule>
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName yourdomain.com
RewriteEngine on
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*) https://%{SERVER_NAME}$1 [L,R]
</VirtualHost>
EOF
启用站点
a2ensite wordpress
service apache2 restart
编辑 /var/www/html/.htaccess
,在顶部加入以下内容:
# BEGIN SSL Redirect
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTPS} !=on [NC]
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
</IfModule>
# END SSL Redirect
最后一步,访问域名,进入 WordPress 后台,打开 「设置」-「常规选项」,并把 WordPress地址 和 站点地址 中的 http
改为 https
,并保存。
至此,SSL 配置已完成。
常用命令
以下命令必须在 docker-compose.yml
所在目录执行(本文是 ~/my_wordpress
)
查看 WordPress 运行日志:
sudo docker-compose logs
关闭 WordPress 服务:
sudo docker-compose stop
再次启动 WordPress 服务:
sudo docker-compose start
完全删除 WordPress 服务及其 Docker 镜像:
sudo docker-compose down --volumes --rmi all
博客加速
AHdark 大佬为广大网友提供了免费优质的 CDN 加速服务,可以极大得加快博客访问速度。配套的 Source Global CDN 插件可以在 「插件」 - 「添加插件」 中搜索安装并启用。