在 Ubuntu 16.04 使用 Docker 快速架設 Wordpress 的簡易指南
Docker 是一種可以創建容器的工具,而 Wordpress 是一個免費且開源的 php 與 mysql 的內容管理系統以及部落格工具,非常多人用它來進行網站架設、電子商務等等,本篇將幫助你在 Ubuntu 系統使用 docker 方式進行在 nginx 網站伺服器安裝 wordpress。
使用 Docker 的好處
一般來說,要進行安裝 Wordpress 系統,需要相關的服務 lamp (Linux, Apache, MySQL, PHP),安裝所有的組件相當耗時,也沒有靈活的方式好好管理。而 Docker 正解決了這件事情,可以透過 compose 快速的架設想要安裝的服務,並且可以運行多個容器的應用程式。
接下來讓我們開始吧。
必要條件
- Ubuntu 16.04
- Root Privileges
安裝 Docker
當你拿到一台全新的 Ubuntu 16.04 的虛擬主機時,我們將重頭開始安裝 Docker。在開始之前請先更新 Ubuntu 以及更新到最新。
1 | $ sudo apt-get update |
注意:你在執行
sudo apt-get update
時,出現sudo: unable to resolve host localhost.localdomain
錯誤時。請先編輯 /etc/hosts ,將
127.0.0.1 localhost
修改成127.0.0.1 localhost.localdomain localhost
在預設的情況下,在 ubuntu 存儲庫 docker 可用的,安裝 docker 請執行以下
1 | $ sudo apt-get install -y docker.io |
安裝完成後,啟動 docker 以及設定開機時要自動啟動 docker
1 | $ systemctl start docker |
那麼現在可以測試一下 docker 是否已在執行中,可以試著用 hello-world
確認一下
1 | $ docker run hello-world |
在執行之後,你可以看到你的 docker 已經啟動 hello-world 程序
1 | $ root@localhost:~# docker images |
就可以看到有印象檔抓下來,代表 docker 有正常執行。
安裝 Docker-Compose
Docker-compose 是一個採用 python 的腳本撰寫的。我們需要先安裝 python, python-pip 套件
1 | $ sudo apt-get install -y python python-pip |
接下一步是,要安裝 docker-compose
1 | $ pip install docker-compose |
接著就等待安裝結束,結束之後可以檢查安裝是否完成
1 | $ docker-compose -v |
顯示
1 | root@localhost:~# docker-compose -v |
安裝 Wordpress
這樣子的話,已經將 docker 和 docker-compose 安裝到系統上了。在這步驟中,將進行 wordpress 建立以及 docker-compose 環境。在這裡我們透過 docker-compose 方式進行管理將 nginx 作為 web 部署的網站伺服器、MariaDB 作為 MySQL 資料庫,每一個服務都有自己的容器。
- Nginx: 使用最新版
nginx: latest
- Wordpress: 在 odcker-hub 有提供了 docker 印象黨,我們要使用 wordpress 4.7 版本以及 php-fpm 7.0 版本
- MySQL: 使用 mariadb 官方的容器,使用最新版本
我們需要 docker hub 註冊表設定上述三個 docker 印象檔。首先,我們不以 root 身份運行 docker 那麼要建立一個帳號,就使用一般的 liunx 帳號。
1 | $ useradd -m -s /bin/bash docadmin |
現在我們將使用者增加到 docker
群組,方便使用者可以使用 docker 指令,設定之後再重啟 docker 服務
1 | $ usermod -a -G docker docadmin |
如此一來就完成新增 docadmin
使用者,那麼就直接登入 docadmin
帳號並且進行 wordpress 建立
1 | $ su - docadmin |
接下來,建立一個 docker-compose.yml
檔案,首先是先新增一個資料夾
1 | $ touch docker-compose.yml |
- docker-compose.yml: 主要是用來配置文件,是啟動 docker-compose 需要的文件檔案
- nginx 資料夾: nginx 組態配置
- db-data 資料夾: mysql 資料庫目錄,
/var/lib/mysql
會被掛載到 db-data 資料夾 - logs 資料夾: 應用程式資料夾,用來寫入 nginx, mariadb, php-fpm 日誌
- wordpress 資料夾: wordpress 的所有檔案
在 nginx 資料夾,我們建立一個 wordpress.conf 組態配置資料夾
建立一個新的 wordpress.conf
1 | $ vim nginx/wordpress.conf |
貼上以下的組態內容
1 | server { |
完成後,存檔。
組態設定 Docker-Compose
在這個步驟裡,我們編輯 docker-compose.yml
文件。請編輯 nginx, mysql, wordpress
1 | $ vim docker-compose.yml |
貼上以下的組態內容:
1 | nginx: |
那麼,docker-compose 組態設定就完成了。
執行 Docker-Compose
在這一步驟要開始用 docker-compose 建立容器,請先到 wordpress-compose
資料夾
1 | $ cd ~/wordpress-compose/ |
執行過程顯示
1 | ... (以下省略) |
在執行的過程你可以陸陸續續看到創建了三個容器,可以使用 ps 檢查容器狀態
1 | $ docker-compose ps |
顯示結果
1 | docadmin@localhost:~/wordpress-compose$ docker-compose ps |
你可以使用 logs
指令顯示出容器的執行結果。
1 | $ docker-compose logs nginx |
啟動 Wordpress
在這步驟之前,我們檢查系統上可用的端口是 80, 3306, 9000
1 | $ netstat -plntu |
顯示結果
1 | docadmin@localhost:~/wordpress-compose$ netstat -plntu |
現在你可以打開瀏覽器輸入服務器的 ip 位置
1 | http://yourserverIP/ |
你可以看到 wordpress 安裝頁面。選擇你的語言,請點選繼續
填入網站的詳細資訊,填寫完畢之後,就按下「安裝」
安裝完畢後,就會被導向到 wordpress 控制台
也可以造訪 wordpress 畫面,就完成安裝 wordpress 囉!
檢查 Docker Container
這個步驟是瞭解如何使用 docker-compose 容器的狀態
1 | $ docker-compose ps |
我們知道我們建立了三個容器,可以試著登入某一個容器,比如 nginx
1 | $ docker-compose exec nginx bash |
- nginx: 屬於在 docker-compose.yml 的服務名稱
- bash: 執行 bash shell 命令
此時你就進入到 nginx 容器裡了
1 | docadmin@localhost:~/wordpress-compose$ docker-compose exec nginx bash |
現在我們檢查一下 wordpress 虛擬主機的配置
1 | $ cat /etc/nginx/conf.d/wordpress.conf |
顯示結果
確認之後,結束時,輸入 exit
退出容器。
那麼繼續登入 mysql 容器
1 | $ docker-compose exec mysql bash |
查詢資料庫列表
1 | $ show databases; |
最後在檢視 wordpress 容器
1 | $ docker-compose exec wordpress bash |
Done!
參考資料: