WordPress 是一個基於 PHP 和 MySQL 的開源博客軟體與內容管理系統,全球超過43%的網站都在使用。本文將指導您在香港伺服器上利用 Docker Compose 部署 WordPress,結合 Nginx 和 Let’s Encrypt SSL 證書,確保網站運行環境安全且高效。
準備工作:在香港VPS上安裝 Docker
在您的香港VPS上安裝 Docker,以運行 WordPress 和 MariaDB 容器。以下為安裝步驟:
- 更新系統套件
sudo apt update - 安裝 Docker
若尚未安裝 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安裝並啟動 Docker:
sudo apt update sudo apt install docker-ce docker-ce-cli containerd.io sudo systemctl start docker sudo systemctl enable docker - 驗證 Docker Compose 安裝
確認 Docker Compose 已安裝:docker-compose --version
建立 Docker Compose 設定檔
在您的香港雲伺服器上建立一個專案資料夾,例如 ~/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
啟動容器
在 ~/wordpress 目錄下執行以下指令以啟動容器:
sudo docker-compose up -d
設定 Nginx 反向代理
為確保安全存取,需在香港伺服器上設定 Nginx 作為反向代理。
- 安裝 Nginx
sudo apt install nginx - 檢查 Nginx 狀態
sudo systemctl status nginx - 啟動並設定開機自動啟動
sudo systemctl start nginx sudo systemctl enable nginx - 設定 Nginx
建立 Nginx 設定檔:sudo nano /etc/nginx/sites-available/wordpress新增以下內容(將
yourdomain.com替換為您的域名):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; } }啟用設定檔:
sudo ln -s /etc/nginx/sites-available/wordpress /etc/nginx/sites-enabled/ sudo nginx -t sudo systemctl reload nginx
設定 Let’s Encrypt SSL 證書
為提升安全性,設定 Let’s Encrypt SSL 證書:
- 安裝 Certbot
sudo apt-get update sudo apt-get install certbot - 產生 DNS-01 挑戰
sudo certbot certonly --manual --preferred-challenges dns -d yourdomain.comCertbot 將提供一筆 TXT 記錄,需新增至您的 DNS 設定。
- 新增 TXT 記錄
登入您的 DNS 提供商控制台,新增 TXT 記錄,名稱為_acme-challenge.yourdomain.com,值為 Certbot 提供的字串。 - 驗證 DNS 記錄
nslookup -q=TXT _acme-challenge.yourdomain.com確認返回的值與 Certbot 提供的字串相符。
- 完成證書頒發
返回 Certbot 終端機,按 Enter 繼續,完成證書頒發。 - 自動化更新(選項)
若您的 DNS 提供商支援 API,可使用外掛程式自動化證書更新。例如,使用 Cloudflare:sudo certbot certonly --dns-cloudflare --dns-cloudflare-credentials path/to/your/cloudflare.ini -d yourdomain.com
存取並設定 WordPress
在瀏覽器中訪問 https://yourdomain.com,進入 WordPress 安裝介面,依提示完成初始化設定。
總結
通過以上步驟,您已在香港VPS或香港雲伺服器上成功使用 Docker Compose 部署 WordPress,並設定了 Nginx 和 SSL 證書,確保網站安全高效運行。