Docker Compose 部署Nginx + WordPress + Https個人站點
前段時間自己透過docker compose部署了Nginx + WordPress 個人網站並設定SSL 證書,將自己的設定流程記錄在這裡,接下來我將介紹如何使用 Docker Compose
來快速部署一個包含Nginx 和WordPress 的個人站點,並為其配置SSL 憑證。透過這種方式,你可以簡化伺服器管理,快速建立一個安全的WordPress 網站。
1.前置條件
在開始部署之前,你需要確保以下條件已經具備:
- 一台安裝了Docker 和Docker Compose 的伺服器(建議使用Linux 系統)。
- 已註冊的網域名稱(用於SSL 憑證的產生)。
- 基本的Linux 命令列操作能力。
如果你還沒有安裝Docker 和Docker Compose,可以透過以下命令進行安裝:
# 安裝Docker sudo apt update sudo apt install docker.io # 安裝Docker Compose sudo apt install docker-compose
2.環境準備
在部署Nginx + WordPress 的過程中,我們需要用到以下幾個Docker 容器:
- Nginx:作為反向代理伺服器,用於處理HTTPS 請求。
- WordPress:網站的內容管理系統。
- MySQL:WordPress 使用的資料庫。
建立一個專案目錄來存放Docker Compose 設定檔和相關資料:
mkdir wordpress-nginx-ssl cd wordpress-nginx-ssl
3.Docker Compose 配置文件
接下來我們將創建一個 docker-compose.yml
文件,其中包含Nginx、WordPress 和MySQL 服務的設定。以下是配置的詳細步驟:
Nginx 服務配置
首先,在 docker-compose.yml
文件中新增Nginx 反向代理的設定。我們將使用一個獨立的Nginx 容器來處理HTTPS 請求,並代理到WordPress 容器。
version: '3' services: nginx: image: nginx:latest container_name: nginx ports: - "80:80" - "443:443" volumes: - ./nginx/conf.d:/etc/nginx/conf.d - ./nginx/ssl:/etc/nginx/ssl depends_on: - wordpress networks: - wp_net
其中:
ports
將主機的80 和443 連接埠對應到Nginx 容器中。volumes
用來掛載Nginx 設定檔和SSL 憑證。depends_on
表示Nginx 依賴WordPress 服務。
WordPress 服務配置
接下來設定WordPress 服務:
wordpress: image: wordpress:latest container_name: wordpress environment: WORDPRESS_DB_HOST: db:3306 WORDPRESS_DB_USER: wordpress WORDPRESS_DB_PASSWORD: wordpress WORDPRESS_DB_NAME: wordpress: ///////////L:L::O: N:D:::D:::S >: > > >S +/Low: 7: 7:L:Sd: N5:com: //form::::::3: NEs: >: n/www: 7: N:D::Sd: N5: Noc: 7:/html: 系統_/L: form:d::::D:::::O: >: >: n: > > > >S/ 從/ 」 _net
其中:
environment
用來指定WordPress 連線MySQL 資料庫的設定資訊。volumes
掛載了WordPress 網站的檔案目錄到主機上,以便持久化儲存。
MySQL 服務配置
最後設定MySQL 服務:
?
MYSQL_ROOT_PASSWORD
是MySQL root 使用者的密碼。MYSQL_DATABASE
是WordPress 使用的資料庫名稱。volumes
掛載了資料庫文件,確保資料的持久化。
定義網路
在 docker-compose.yml
的最後,定義一個自訂的網路:
networks: wp_net: driver: bridge
4. 產生SSL 憑證
為了讓我們的網站能夠使用HTTPS,需要產生SSL 憑證。這裡我們使用 Certbot
來產生免費的Let's Encrypt 憑證。首先安裝 Certbot
:
sudo apt install certbot
接下來使用Certbot 產生憑證:
sudo certbot certonly --standalone -d yourdomain.com -d www.yourdomain.com
產生的憑證將會儲存在 /etc/letsencrypt/live/yourdomain.com/
目錄中。接下來,將憑證複製到Docker 容器中的Nginx 掛載目錄下:
sudo cp /etc/letsencrypt/live/yourdomain.com/fullchain.pem ./nginx/ssl/ sudo cp /etc/letsencrypt/live/yourdomain.com/privkey.pem ./nginx/ssl/
在 nginx/conf.d
目錄下建立Nginx 設定檔 wordpress.conf
,內容如下:
server { listen 80; server_name yourdomain.com www.yourdomain.com; return 301 https://$server_name$request_uri; } server { listen 443 ssl; server_name yourdomain.com www.yourdomainm.com ssl/wperwate sperslin/fullin.com www.yourdo pem; ssl_certificate_key /etc/nginx/ssl/privkey.pem; location / { proxy_pass http://wordpress:80; proxy_set_header Host $host; proxy_set_header X-Real-IP 1TP4dward_pward; xy_set_header X-Forwarded -Proto $scheme; } }
這段配置將:
- 強制將HTTP 請求重定向到HTTPS。
- 使用SSL 憑證來加密通訊。
- 將來自Nginx 的請求轉送給WordPress 容器。
5. 啟動服務並測試
完成所有配置後,執行以下命令啟動容器:
docker-compose up -d
你可以透過以下命令查看容器是否啟動成功:
docker-compose ps
瀏覽器中造訪你的域名 https://yourdomain.com
,如果一切正常,應該可以看到WordPress 的安裝頁面。
到這裡我們的個人站點就搭建完成了,後續可能還會遇到一些配置方面的問題,這個後續有時間再更新。
6.總結
透過Docker Compose,我們可以輕鬆部署Nginx + WordPress 站點,並快速為其配置SSL 證書,確保網站的安全性。這種方法不僅方便管理,還能確保站點的資料持久化和服務的高效運作。如果你有任何問題或建議,歡迎在留言區留言。
祝你的網站建設順利!
docker composedocker composedocker composedocker composedocker composedocker composedocker composedocker composedocker composedocker composedocker compose