架設好第二個網站之後,預設是用子目錄的方式連結到網站。到底該用子網域還是子目錄作為新網站的網址好,這會考量到 SEO、品牌經營、網站結構或甚至個人偏好等眾多因素。另外,SSL 加密連線也是現在網站必備的安全性設定。如果有看過 WordPress 系列的架站教學,我提過好多次由於 Bitnami 對系統的優化及模組化管理的考量,讓整個 Apache server 的參數設定疊床架屋,變得非常複雜。接下來兩篇教學會告訴你如何正確的設定 domain name 和 SSL 連線,步驟其實非常簡單,只是當初我花了非常多的時間爬了很多文件和參考資料,try and error 最後才成功的設定。
網站的 Domain Name 設定,採用子網域
設定 domain name 主要只有四個步驟:
取消預設 prefix 模式 → 引入各網站的 virtual host 參數檔案 → 設定個網站 virtual host 參數 → 更新 WordPress 參數及資料庫
環境說明
- 伺服器架設在 Google Cloud Platform (GCP)
- 使用 WordPress Bitnami 部署
- 網站根目錄位置:
主站:/opt/bitnami/apps/wordpress
副站:/opt/bitnami/apps/newblog - Domain name 設定:
主站:https://test.charlestw.com/
副站:https://newblog.charlestw.com/
Apache 參數設定
▍ 修改 bitnami apache configuration 取消預設的 prefix
這標題聽起來有點拗口,簡單來說我們要取消預設的 prefix 模式,讓網站分別讀取各網站的 virtual host 參數設定。
- 首先開啟 Bitnami Apache 參數檔 bitnami.conf:
sudo nano /opt/bitnami/apache2/conf/bitnami/bitnami.conf
- 接著找到下列這一行,將它註解掉:
# Include "/opt/bitnami/apps/wordpress/conf/httpd-prefix.conf"
▍ 重新給定網站根目錄位置,指向主網站
在 prefix 模式之下,Apache 的網站根目錄指向 /opt/bitnami/apps/wordpress/htdocs
這個位置,但因為我們把 prifix 模式關閉了,Apache 的網站根目錄會參考 bitnami.conf 裡面的根目錄設定,預設都是 /opt/bitnami/apache2/htdocs
,所以我們必須重新指定。
- 我們將主站的 domain name 設定在 bitnami.conf 中
分別有四個根目錄要改:分別是 port 80 (http) 和 port 443 (https) 的參數
<VirtualHost _default_:80>
DocumentRoot "/opt/bitnami/apps/wordpress/htdocs"
<Directory "/opt/bitnami/apps/wordpress/htdocs">
<VirtualHost _default_:443>
DocumentRoot "/opt/bitnami/apps/wordpress/htdocs"
<Directory "/opt/bitnami/apps/wordpress/htdocs">
上面紅字的目錄是預設的 WordPress 網站根目錄位置,我以這個網站作為主站。你也可以置換成任何你想做為主站的根目錄位址。
▍ 引入各網站的 Virtual Host 參數
關閉了 prefix 模式之後就可以將所有的網站參數引入 Apache 伺服器上,首先先開啟 /opt/bitnami/apache2/conf/bitnami/bitnami-apps-vhosts.conf
這個檔案:
sudo nano /opt/bitnami/apache2/conf/bitnami/bitnami-apps-vhosts.conf
將各網站的 virtual host 參數檔引入,加入下面參數 (每個網站各一行):
Include "/opt/bitnami/apps/wordpress/conf/httpd-vhosts.conf"
Include "/opt/bitnami/apps/newblog/conf/httpd-vhosts.conf"
上面這是我的主副站的參數檔位置,將紅字替換成你的 WordPress instance 名稱即可。
▍ 編輯各網站的 Virtual Host 參數
打開各網站的 virtual host 參數檔,也就是上一個步驟引入的那些檔案。例如開啟主站參數檔:
sudo nano /opt/bitnami/apps/wordpress/conf/httpd-vhosts.conf
Virtual host 參數:
<VirtualHost *:80>
ServerName test.charlestw.com
ServerAlias www.test.charlestw.com
DocumentRoot "/opt/bitnami/apps/wordpress/htdocs"
Include "/opt/bitnami/apps/wordpress/conf/httpd-app.conf"
</VirtualHost>
<VirtualHost *:443>
ServerName test.charlestw.com
ServerAlias www.test.charlestw.com
DocumentRoot "/opt/bitnami/apps/wordpress/htdocs"
SSLEngine off
#SSLCertificateFile "/opt/bitnami/apps/wordpress/conf/cert/server.crt"
#SSLCertificateKeyFile "/opt/bitnami/apps/wordpress/conf/cert/server.key"
Include "/opt/bitnami/apps/wordpress/conf/httpd-app.conf"
</VirtualHost>
這裡說明一下各參數的意義:
- ServerName: 主網址
- ServerAlias: 網址別名,使用這些網址也能訪問該網站 (選用,用空格隔開)
- DocumentRoot: 網站根目錄
- SSLEngine: SSL 連線
- SSL CertificateFile, SSL CertificateKeyFile: SSL 憑證檔案
其中 port 80 指的是 http 連線,而 https 連線使用的是 port 443。
這裡主要要修改的只有 ServerName 和 ServerAlias,將網站的 subdomain 加進去,如果你沒有網址別名也可以直接將 ServerAlias 那一行刪除。
記得每一個網站都要分別設定好 subdomain。
更新 WordPress 資料庫
設定完 Apache 參數也得更新 WordPress 本身的參數和資料庫,否則會出現成功連線到網站,但網站無法正確讀取網站內容的狀況。這是因為如果 WordPress 本身並不知道自己的網址,雖然連線訪問進來 Apache server 有將連線導向正確的網站根目錄,但 WordPress 卻不認識自己的網址,無法讀取相關檔案。最顯而易見的狀況就是當我們開啟網站首頁,會發現網站只是一堆沒有套用過任何 CSS 樣式的純文字內容。
▍ 重新 mapping 網址
還好 Bitnami 的 bnconfig 本身有提供重新 mapping 網址的指令,輸入以下指令即可更改:
sudo /opt/bitnami/apps/wordpress/bnconfig --appdomain blog.DOMAIN.com
記得每個網站都必須執行一次,紅字的部分分別替換成各網站的目錄位置和各自的 subdomain。
重啟 Apache
最後重啟 Apache server,新參數就會被重新載入囉!
sudo /opt/bitnami/ctlscript.sh restart apache
下一篇:WordPress / 多重架站三:設定 SSL 加密連線 (以 Apache 為例)
WordPress 網站架設與搬家教學系列
WordPress 快速架站教學 (濃縮版):
在 Google Cloud (GCP) 台灣主機上免費架設 WordPress Bitnami
WP 架站教學一:使用 Google 台灣主機免費架設自己的網站 (Mac/Win版)
WP 架站教學二:透過 SSH 連線遠端控制 GCP 並設定 FTP 伺服器 (使用 WordPress Bitnami)
WP 架站教學三:更改 MySQL Administrator 密碼、設定外部靜態 IP 位址
WP 架站教學四:設定 Domain Name 及 Apache 參數
WP 架站教學五:設定 SSL 加密連線,讓網站連線更安全 (以Apache為例)
WP 架站教學六:WordPress 檔案及目錄的結構簡介與預設檔案權限
WP 架站教學七:修改網站外觀樣式,如何建立子主題 (child theme)
WP 多重架站一:如何在同一個伺服器架設第二個 WordPress (Multiple WordPress)
WP 多重架站二:設定 Domain Name,指定多個 WordPress 的網址 (使用subdomain)
WP 多重架站三:設定 SSL 加密連線 (以 Apache 為例)
WP 搬家教學:一個按鍵幫網站搬家,使用 All-in-One Migration
WordPress / 網站架設與搬家教學系列簡介及目錄
https://note.charlestw.com/wordpress-tutorial-category/
Copyright announcement:
the featured image: Photo by Daniel von Appen on Unsplash