Table of Contents
前言
第一篇文章,就該是這個網誌的誕生日誌
將會介紹使用了哪些工具
以及使用上的注意事項
比較需要詳細說明的細節將會在未來的文章中做教學
Docker 架設 WordPress 會是今天的焦點
目的是看著這篇文章一步一步做也可以架出屬於自己的站
更新
2023.10.18 發佈了【憑證】Let’s Encrypt 申請過程,Let’s Encrypt 的部分可以參考看看
必要條件
安裝環境
- OS: ubuntu 20.04 (VM)
- Docker: 20.10.12
- DB: MySQL or Mariadb 皆可
映像檔選擇
WordPress 5.9.1,使用以下命令,先下載至本機
docker pull wordpress:5.9.1
nginx 1.21.6,使用以下命令,先下載至本機
docker pull nginx:1.21.6
certbot/certbot,使用以下命令,先下載至本機
docker pull certbot/certbot
安裝流程
- 建立 macvlan
- 使用 certbot 申請 Lets Encrypt 憑證(免費)
- 編輯 nginx HTTPS 設定
- 開始架設 WordPress
- 備份
建立 macvlan
這邊開始使用 docker 命令
我安裝的系統是 VM,所以並沒有考慮在 VM 中登入 wordpress
使用 macvlan 只是個人的習慣,使用 docker bridge 或者 host network 皆可
docker network create -d macvlan \
--subnet=172.20.10.0/24 \
--gateway=172.20.10.1 \
-o parent=enp2s0 \
tocvlan
subnet
:區域網路的網段,這邊指的是 C class on 172.20.10.1~172.20.10.254
gateway
:輸入路由器的位置parent
:網卡的 interface name
,利用 ifconfig
可以查詢
使用 certbot 申請 Let’s Encrypt
申請
docker stop certbot
docker system prune --volumes -f
docker run -it \
--name certbot \
-v /root/certbot_data/www:/var/www/certbot/:rw \
-v /root/certbot_data/conf:/etc/letsencrypt/:rw \
certbot/certbot:latest certonly -v --webroot --webroot-path /var/www/certbot/ -d blog.tocandraw.com
更新
docker stop certbot
docker system prune --volumes -f
docker run -it \
--name certbot \
-v /root/certbot_data/www:/var/www/certbot/:rw \
-v /root/certbot_data/conf:/etc/letsencrypt/:rw \
certbot/certbot:latest renew
-d blog.tocandraw.com
記得更新為自己網域
Docker 架設 WordPress
rm -rf /root/wordpress_data
echo 'file_uploads = On
post_max_size = 30M
upload_max_filesize = 30M' > /root/wordpress_data/wordpress.ini
docker run -d \
--network tocvlan \
--ip=172.20.10.231 \
--restart always \
--name=wordpress \
-e WORDPRESS_DB_HOST=172.20.10.20 \
-e WORDPRESS_DB_USER=root \
-e WORDPRESS_DB_PASSWORD=asdf0000 \
-e WORDPRESS_DB_NAME=wordpress \
-e WORDPRESS_TABLE_PREFIX=wp_ \
-v /root/wordpress_data:/var/www/html \
-v /root/wordpress_data/wordpress.ini:/usr/local/etc/php/conf.d/wordpress.ini \
wordpress:latest
編輯 nginx HTTPS 設定
rm -rf /root/nginx_data
mkdir /root/nginx_data
echo 'server {
listen 80 default_server;
listen [::]:80 default_server;
server_name blog.tocandraw.com;
location / {
return 301 https://$host$request_uri;
}
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name blog.tocandraw.com;
client_max_body_size 30m;
location / {
proxy_pass http://172.20.10.231;
proxy_http_version 1.1;
proxy_cache_bypass $http_upgrade;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
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;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Port $server_port;
}
ssl_certificate /etc/nginx/ssl/live/blog.tocandraw.com/fullchain.pem;
ssl_certificate_key /etc/nginx/ssl/live/blog.tocandraw.com/privkey.pem;
ssl_session_timeout 1d;
ssl_session_cache shared:MozSSL:10m; # about 40000 sessions
ssl_session_tickets off;
ssl_dhparam /etc/nginx/ssl/live/blog.tocandraw.com/dhparam;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers off;
add_header Strict-Transport-Security "max-age=63072000" always;
ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /etc/nginx/ssl/live/blog.tocandraw.com/chain.pem;
resolver 8.8.8.8;
}' > /root/nginx_data/nginx.conf
啟動 nginx
docker run -d \
--network tocvlan \
--ip=172.20.10.242 \
--restart always \
--name nginx \
-v /root/nginx_data/:/etc/nginx/conf.d/:ro\
-v /root/certbot_data/www:/var/www/certbot/:ro \
-v /root/certbot_data/conf:/etc/nginx/ssl/:ro \
nginx:latest
架設完成囉,如果路由已經設定完成
可以嘗試連連看囉
留言功能已關閉。