如何在 QNAP Container Station 運行 WordPress 開源內容管理系統

如果有一天,你不小心手滑買了一個網域,請不要緊張。你只需要把瀏覽器關掉,然後假裝這件事情沒有發生。

但是看著家裡的那台 NAS 每天這麼無所事事,我都替它感到不好意思。不如乾脆在上面架個 WordPress,順便弄個自己的部落格,還可以省下租用主機的費用。

等你回過神來,家裡卻已經多出了一套小型網站基礎架構。今天就來教大家如何在 QNAP Container Station 運行 WordPress 吧。

如何部署 GoDaddy DDNS 與 Nginx Proxy Manager 請參考之前的文章。

WordPress

WordPress 是目前廣泛使用的網站內容管理系統,主要用途是讓使用者不需要從零開始撰寫整套網站程式,可以用來建立個人部落格、企業官網、新聞網站、作品集、會員網站,甚至電子商務網站。

採用佈景主題(Theme) 與外掛(Plugin)的架構,佈景主題主要負責網站外觀與版面設計,而外掛則可以替網站增加額外功能,例如 SEO、備份、安全防護、表單、快取與電子商務等。

雖然我們可以在AppCenter 直接安裝 WordPress 使用。

若您對 Docker 有基本概念,而且本來就有在使用 Container Station 的話,我會比較傾向用 Container Station 來跑 WordPress。這種架構最大的優點,就是能讓各個服務彼此解耦、各司其職。

WordPress 本身只需要專注於網站內容與功能,不必處理 Let’s Encrypt 憑證申請與更新,也不需要直接對外開放至 Internet。

Nginx Proxy Manager 則負責 Let’s Encrypt 憑證的申請與更新、HTTPS 安全連線、網域名稱,以及特定來源 IP 的存取限制等工作,讓 WordPress 能專注於網站本身的服務。

如此一來,不僅整體架構更加清楚,日後要新增網站、調整憑證或修改存取規則時,也會更容易管理與維護。

使用應用程式運行

到應用程式,點選建立。

使用下列 YAML 來建立 WordPress

version: '3'

services:

wordpress:
image: wordpress
restart: always
ports:
- 8000:80
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: exampleuser
WORDPRESS_DB_PASSWORD: examplepass
WORDPRESS_DB_NAME: exampledb
volumes:
- wordpress_html:/var/www/html

db:
image: mysql:8.0
restart: always
environment:
MYSQL_DATABASE: exampledb
MYSQL_USER: exampleuser
MYSQL_PASSWORD: examplepass
MYSQL_RANDOM_ROOT_PASSWORD: '1'
volumes:
- wordpress_db:/var/lib/mysql

volumes:
wordpress_html:
wordpress_db:

應用程式與容器順利運行

應用程式會自動新增儲存空間如下

  • app-1_wordpress_html:你安裝的外掛、佈景主題、上傳的圖片,以及 WordPress 相關網站檔案,都會持久化保存。
  • app-1_wordpress_db:保存 MySQL 資料庫

應用程式所建立的容器預設會使用 DDAP 這個 Docker Network,IP 範圍為 172.29.0.0/16。

不過我會比較建議大家讓容器取得區域網路獨立 IP,之後設定反向代理比較不會有問題。使用下列 YAML 來建立應用程式,將 ipv4_address 取代為您的區域網路 IP 位址。

version: '3'

services:

wordpress:
image: wordpress
restart: always
networks:
qnet:
ipv4_address: 192.168.0.101
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: exampleuser
WORDPRESS_DB_PASSWORD: examplepass
WORDPRESS_DB_NAME: exampledb
volumes:
- wordpress_html:/var/www/html

db:
image: mysql:8.0
restart: always
networks:
qnet:
ipv4_address: 192.168.0.102
environment:
MYSQL_DATABASE: exampledb
MYSQL_USER: exampleuser
MYSQL_PASSWORD: examplepass
MYSQL_RANDOM_ROOT_PASSWORD: '1'
volumes:
- wordpress_db:/var/lib/mysql

volumes:
wordpress_html:
wordpress_db:

networks:
qnet:
external: true
name: qnet-static-eth0-0fa2ce

透過區域網路的 IP 位址就可以存取 WordPress

填寫需要的基本資訊,點選 Install WordPress。

這樣就安裝完成了,點選 Log In。

輸入剛剛填寫的帳號密碼,點選 Log In。

就可以在管理介面開始規畫您的網站了

點選上方 Home 圖示,點選 Visit Site。

就可以看到預設的首頁的外觀了

下一篇,我們將繼續介紹如何透過 Nginx Proxy Manager 建立反向代理,將外部流量轉送至 WordPress,並完成網域名稱與 HTTPS 的相關設定。

今天的分享就到這邊,感謝收看。

參考文件

https://hub.docker.com/_/wordpress