写在前面
WordPress 是一个以 PHP 和 MySQL 为平台的自由开源的博客软件和内容管理系统。WordPress 具有插件架构和模板系统。截至2018年4月,排名前1000万的网站中超过30.6%使用 WordPress。WordPress 是最受欢迎的网站内容管理系统。全球有大约43%的网站都是使用 WordPress 架设网站的。WordPress 是目前因特网上最流行的博客系统。WordPress 在最著名的网络发布阶段中脱颖而出。如今,它被使用在超过7000万个站点上。本文旨在分享使用 Docker Compose 部署 WordPress 的方法。
安装 Docker
# 1. 更新系统包
sudo apt update
# 2. 安装 Docker(如果还没有安装)
sudo apt install apt-transport-https ca-certificates curl software-properties-common gnupg lsb-release
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 如果你无法连接上官方源,则使用以下命令
curl -fsSL https://mirrors.cloud.tencent.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.cloud.tencent.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io
sudo systemctl start docker
sudo systemctl enable docker
# 3. 验证安装
docker-compose --version创建容器组
在系统任意位置创建一个文件夹,本文以 ~/wordpress 为例
mkdir ~/wordpress
cd ~/wordpress
编写 docker-compose.yaml 文件
version: '3'
services:
wordpress:
image: wordpress:latest
ports:
- "8080:80"
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: wordpress_user
WORDPRESS_DB_PASSWORD: yourpassword
WORDPRESS_DB_NAME: wordpress_db
volumes:
- ./wp_data:/var/www/html
db:
image: mariadb:latest
environment:
MYSQL_DATABASE: wordpress_db
MYSQL_USER: wordpress_user
MYSQL_PASSWORD: yourpassword
MYSQL_ROOT_PASSWORD: yourpassword
volumes:
- ./mariadb:/var/lib/mysql
启动容器
sudo docker-compose up -d
安装并配置Nginx
安装 Nginx
sudo apt install nginx查看 Nginx 运行状态
sudo systemctl status nginx启动 Nginx
sudo systemctl start nginx配置 Nginx 开机自启
sudo systemctl enable nginx配置 Nginx 文件
sudo nano /etc/nginx/sites-available/wordpress修改配置文件如下:
server {
listen 80;
server_name yourdomain.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name yourdomain.com;
ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;
location / {
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
配置 Let’s Encrypt SSL 证书
安装 Certbot: Certbot 是 Let’s Encrypt 的官方客户端,用于获取 SSL 证书。
sudo apt-get update
sudo apt-get install certbot生成 DNS-01 验证的挑战: 使用 Certbot 生成 DNS-01 验证所需的挑战。运行以下命令:
sudo certbot certonly --manual --preferred-challenges dns -d yourdomain.com
这将生成一个 TXT 记录,您需要将其添加到您的 DNS 配置中。
添加 TXT 记录: 登录到您的 DNS 提供商的管理控制台,找到您的域名的 DNS 设置,并添加一个新的 TXT 记录。记录的名称通常是 _acme-challenge.yourdomain.com,值是 Certbot 提供的字符串。
验证 DNS 记录: 添加 TXT 记录后,您可以使用以下命令来验证记录是否正确添加:
nslookup -q=TXT _acme-challenge.yourdomain.com
确认返回的 TXT 记录与 Certbot 提供的值匹配。
完成验证并获取证书: 返回到 Certbot 命令行,按 Enter 键继续。Certbot 将验证您添加的 TXT 记录,并在验证成功后颁发证书。
自动化更新(可选): 如果您的 DNS 提供商支持 API,您可以使用 Certbot 的插件来自动化 DNS-01 验证和证书更新。例如,对于 Cloudflare,您可以使用以下命令:
sudo certbot certonly --dns-cloudflare --dns-cloudflare-credentials path/to/your/cloudflare.ini -d yourdomain.com
访问 WordPress 配置网站具体内容
打开浏览器,访问 https://yourdomain.com 即可看到 WordPress 的安装界面,完成初始化就大功告成了。
冷知识:如果你直接使用
http://your_ip:8080将会设置 WordPress 的站点 URL 为 IP 地址+端口,这样还需要更改后台的 URL 设置为域名,所以推荐直接用域名访问WordPress。