网站和优化 · 17 7 月, 2025

在香港伺服器上使用 Docker Compose 部署 WordPress

WordPress 是一個基於 PHP 和 MySQL 的開源博客軟體與內容管理系統,全球超過43%的網站都在使用。本文將指導您在香港伺服器上利用 Docker Compose 部署 WordPress,結合 Nginx 和 Let’s Encrypt SSL 證書,確保網站運行環境安全且高效。

準備工作:在香港VPS上安裝 Docker

在您的香港VPS上安裝 Docker,以運行 WordPress 和 MariaDB 容器。以下為安裝步驟:

  1. 更新系統套件
    sudo apt update
    
  2. 安裝 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
    
  3. 驗證 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 作為反向代理。

  1. 安裝 Nginx
    sudo apt install nginx
    
  2. 檢查 Nginx 狀態
    sudo systemctl status nginx
    
  3. 啟動並設定開機自動啟動
    sudo systemctl start nginx
    sudo systemctl enable nginx
    
  4. 設定 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 證書:

  1. 安裝 Certbot
    sudo apt-get update
    sudo apt-get install certbot
    
  2. 產生 DNS-01 挑戰
    sudo certbot certonly --manual --preferred-challenges dns -d yourdomain.com
    

    Certbot 將提供一筆 TXT 記錄,需新增至您的 DNS 設定。

  3. 新增 TXT 記錄
    登入您的 DNS 提供商控制台,新增 TXT 記錄,名稱為 _acme-challenge.yourdomain.com,值為 Certbot 提供的字串。
  4. 驗證 DNS 記錄
    nslookup -q=TXT _acme-challenge.yourdomain.com
    

    確認返回的值與 Certbot 提供的字串相符。

  5. 完成證書頒發
    返回 Certbot 終端機,按 Enter 繼續,完成證書頒發。
  6. 自動化更新(選項)
    若您的 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 證書,確保網站安全高效運行。