cloud-server-setup-series-3

雲端伺服器搭建系列(三):Apache Virtual Host 設定

上文介紹到如何在雲端伺服器上安裝 LAMP (Linux, Apache, MySQL 和 PHP),今次繼續介紹 Apache 網頁伺服器的一些設定。

Apache 的預設網頁根目錄是 /var/www/html,你可將網頁檔案通通上載到這個路徑,然後將你的 Domain (例如 www.codingstartup.com) 的 A Record 指向伺服器的 IP,基本網站就上線了。

但如果我們想在同一個伺服器上寄存多個網站,將多個 Domain 都指向同一個伺服器 IP,我們就需要設定 Apache Virtual Host,自動根據不同的 Domain 顯示不同的網頁內容。

建立 webmaster 帳號

由於 /var/www/html 這個目錄需要 root 帳號權限才能存取,而 root 帳號可以控制整台伺服器,所以筆者慣常會先建立一個較低權限的帳號:

adduser webmaster

執行此指令即建立一個帳號名為 webmaster(讀者可自行命名),接著它會要求你為這個帳號建立一個密碼。

建立完成後,可直接從 root 帳號切換為 webmaster 身份(建議):

su - webmaster

或登出目前帳號,重新以 webmaster 登入:

exit
ssh webmaster@xxx.xxx.xxx.xxx

建立網頁目錄

筆者習慣將不同 Domain 以如下架構規劃:

/home/webmaster/domains/example.com
/home/webmaster/domains/codingstartup.com
...

我們會先建立好相對應的資料夾(請先確認目前是以 webmaster 身份登入,就不用再為資料夾設定用戶組及權限),假如我們需為 example.com 建立網頁根目錄,就執行如下指令:

cd ~
mkdir -p domains/example.com

這樣 /home/webmaster/domains/example.com 就會成功建立,我們只需將所有網頁檔案放到這個資料夾下即可。

設定 Apache Virtual Host 檔案

網頁目錄準備好了,餘下一個步驟,就是讓 Apache 知道當用戶瀏覽 example.com 時,應該指向到哪個網頁目錄。

在 Ubuntu 上建立這個設定檔十分簡單,進行以下操作前,請先切換為 root 身份:

如剛剛是通過

su - webmaster

切換為 webmaster 的話,可通過

exit

退出 webmaster 帳號,返回到 root 帳號。

如果剛剛是重新以 webmaster 帳號登入的話,可執行:

su

並輸入 root 密碼以切換為 root 帳號。

切換成 root 身份後,在 /etc/apache2/sites-available/ 下建立一個 Virtual Host 的設定檔,副檔名為 .conf。

筆者一般會用 Domain + .conf 來名命,在此例中即是 example.com.conf

nano /etc/apache2/sites-available/example.com.conf

然後貼上以下內容:

<VirtualHost *:80>
    ServerName example.com
    ServerAlias www.example.com
    ServerAdmin your@email.com
    DocumentRoot /home/webmaster/domains/example.com/public_html

    ErrorLog ${APACHE_LOG_DIR}/error-example.com.log
    CustomLog ${APACHE_LOG_DIR}/access-example.com.log combined

    <Directory /home/webmaster/domains/example.com/public_html/>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

讀者會注意到一個叫 ServerName 的參數,另一個叫 ServerAlias,原因是一般 Domain 都會有一個名為 www 的 sub-domain,這樣一來用戶無論是否在 Domain 前加上 www 都可瀏覽你的網站。

另外必須將 ServerAdmin 內的 Email 更改為你的電郵地址喔,然後按 Ctrl + O 儲存。

以上步驟都完成後,需要將這個設定檔生效:

a2ensite example.com

這個指令其實會自動搜尋 /etc/apache2/sites-available/ 下的 *.conf 檔案並啟用之。

最後,讓 Apache 重新載入一下設定檔:

service apache2 reload

再到 example.com 即可看到 /home/webmaster/domains/example.com 下的網站。

總結

本文介紹了如何設定 Apache 的 Virtual Host 讓一個網頁伺服器寄存多個不同網站,以及建立用戶帳號 (webmaster)。

補充一點,通常只有在安裝軟件、系統更新或重新啟動諸如 Apache 或 MySQL 此類系統服務才會以 root 身份進行,日常處理網頁更新等建議使用較低權限的帳號(本例中的 webmaster 帳號)。

如有任何問題歡迎留言及指教,感謝。

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *