WordPress / 多重架站二:設定 Domain Name,指定多個 WordPress 的網址 (使用subdomain)

WordPress / 多重架站二:設定 Domain Name,指定多個 WordPress 的網址 (使用subdomain)

架設好第二個網站之後,預設是用子目錄的方式連結到網站。到底該用子網域還是子目錄作為新網站的網址好,這會考量到 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 樣式的純文字內容。

multiple-wp-2-1-failed-subdomain
網站不認識自己的網址,找不到 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/