使用 Google App Engine 標準環境託管 WordPress 教學
使用 Google Cloud Platform 代管 WordPress 方法很多,本篇著重以下兩個特點:
- 部屬在 Google App Engine 第一代標準環境。
- 所有過程都在 Cloud Shell 中完成,代表您只要有瀏覽器就可以從無到有完成一個Wordpress網站,不需要在電腦安裝任何額外軟體。
部屬在 Google App Engine 標準環境的好處
GAE 是 Google 元老級的 Platform-as-a-Service 雲端服務,現在常說的 Serverless。使用者不需維護主機,自動擴展應付大流量,每日有28實例小時的免費額度,如果流量不大幾乎不需要費用,也支援自訂網域和免費代管的 SSL 憑證提供 https 服務。
所應用到的 Google Cloud Platform 服務
- Google App Engine 第一代標準環境,運行 PHP 7.2
- 第二代 Cloud SQL,運行 MySQL 5.7
- Google Cloud Storage,存放靜態媒體檔案
因為 GAE 跟 Cloud SQL 第二代尚無法選擇台灣區域,所以本文選擇區域為東京(asia-northeast1)。另外,GCP 專案中的 GAE 服務一旦建立就無法更改區域。
事前準備
您必須要具備以下基本知識才能完成以下教學
- 了解如何建立與管理GCP專案:
https://cloud.google.com/resource-manager/docs/creating-managing-projects - 了解 Cloud Shell 基本操作:
https://cloud.google.com/shell/docs/starting-cloud-shell - 了解基本的 linux 指令。
開始前,建立一個全新的專案並啟動 Cloud Shell
建立資料庫
在 Cloud SQL 建立一個 MYSQL 實例,命名為 wordpress ,在 Cloud Shell 下輸入:
$ gcloud sql instances create wordpress \
--activation-policy=ALWAYS \
--region=asia-northeast1 \
--tier=db-n1-standard-1
測試用途可以改用 db-f1-micro 或 db-g1-small 取代 db-n1-standard-1 以減少支出,正式環境則不建議。接著建立資料庫,命名為 wpdb:
$ gcloud sql databases create wpdb --instance wordpress
設定 root 密碼:
$ gcloud sql users set-password root \ --host=% \ --instance wordpress \ --password=p@ssw0rd # 請修改為自己的密碼
建立 GAE 服務
為專案啟用 GAE 服務,只能執行一次,區域必須慎選,無法再修改。建議要與資料庫同一個區域以降低延遲。
$ gcloud app create --region=asia-northeast1
設定 Google Cloud Storage
我們會使用 Google Cloud Storage 作為媒體存放區,預設的 bucket 名稱為 YOUR_PROJECT_ID.appspot.com,本範例的專案 ID 為 wp-on-gae1(請修改為您的專案ID),輸入以下指令將預設的存取權設定為公開:
$ gsutil defacl ch -u AllUsers:R gs://wp-on-gae1.appspot.com
安裝 WordPress
下載程式並切換到安裝目錄
$ git clone https://github.com/GoogleCloudPlatform/php-docs-samples.git $ cd php-docs-samples/appengine/php72/wordpress $ sudo apt-get install php-zip $ composer install $ php wordpress.php create
最後一個指令下達後,會進入互動模式,按照提示輸入資料
- 輸入您的 Wordprees 專案目錄名稱:my-wordpress-project
- 確認路徑,如果目錄存在會複寫所有內容:Y
- 輸入 Cloud SQL instance 的區域:10
- 輸入專案 ID:wp-on-gae1 (請修改為您的專案ID)
- 輸入資料庫實例:wordpress
- 輸入資料庫名稱:wpdb
- 輸入資料庫使用者名稱:root
- 輸入資料庫密碼:p@ssw0rd (請修改為您設定的密碼)
部屬程式到 GAE
切換到您的 WordPress 專案根目錄:
$ cd my-wordpress-project
執行以下指令將程式部屬到 GAE:
$ gcloud app deploy app.yaml cron.yaml
您的網站已經上線了!網址為 https://PROJECT_ID.appspot.com/,進入並繼續完成設定。
然後進入到後台的外掛設定畫面中,啟動 Google Cloud Storage plugin
點選 Settings,輸入 GCS bucket 名稱,預設為 PROJECT_ID.appspot.com 並儲存設定
大功告成了,您可以發佈一則貼文測試。
在 Cloud Shell 中建立開發環境
Google App Engine 標準環境是一個「沙盒」,無法直接安裝外掛程式或主題,必須在本地端修改好後重新佈署,因此我們需要在 Cloud Shell 下建立起一個本地端開發環境,確定修改完成再部屬到 GAE。同時 Cloud Shell 也提供線上編輯器可以方便的修改程式

從 wp-config.php 的程式片段可以看出,透過 onGae 變數判斷執行環境是 GAE 還是本地端開發環境
// ** MySQL settings - You can get this info from your web host ** // if ($onGae) { /** The name of the Cloud SQL database for WordPress */ define('DB_NAME', 'wpdb'); /** Production login info */ define('DB_HOST', ':/cloudsql/wp-on-gae1:asia-northeast1:wordpress'); define('DB_USER', 'root'); define('DB_PASSWORD', '12345678'); } else { /** The name of the local database for WordPress */ define('DB_NAME', 'wpdb'); /** Local environment MySQL login info */ define('DB_HOST', '127.0.0.1'); define('DB_USER', 'root'); define('DB_PASSWORD', '12345678'); }
我們會透過 Cloud SQL proxy 這個程式,在開發環境下間接地連線到 Cloud SQL 資料庫。
開啟一個新的 Cloud Shell 連線階段分頁

然後切換到HOME目錄,下載 cloud_sql_proxy 程式
$ cd ~ $ wget https://dl.google.com/cloudsql/cloud_sql_proxy.linux.amd64 -O cloud_sql_proxy $ chmod +x cloud_sql_proxy
之後啟動指如下(請修改 wp-on-gae1 為您的專案ID):
$ cloud_sql_proxy -instances=wp-on-gae1:asia-northeast1:wordpress=tcp:3306
出現 Ready for new connections 提示則代表已準備就緒。
切換回原本的連線階段分頁,在 WordPress 專案底下輸入以下指令啟動開發環境伺服器:
$ dev_appserver.py . --php_executable_path /usr/bin/php-cgi
接著點擊 [Preview on port 8080] 選單 或 點擊 [Starting module “default” running at] 後面的 http://0.0.0.0:8080 網址,會開啟新分頁顯示開發中的 WordPress 網站。

安裝完外掛或主題後,在發佈到GAE即可。