Ubuntu 20.04 上的 Apache 設置虛擬主機(Virtual Hosts)


標籤: ,

前言

需求是讓單一Public IP可以對應多重網域,實現單一系統多個不同站台服務

以WordPress為例,啟用多重網站時就能指定子網域的安裝目錄

藉由以下的方式就能實現,不用一站架一台佔一個IP

(1)建立目錄並設置權限(Permissions)

我們需要在 /var/www/ 目錄中為我們的兩個網域建立兩個新目錄。

sudo mkdir -p /var/www/side1.com.tw/side1_html
sudo mkdir -p /var/www/side2.com.tw/side2_html

我們還必須修改共用的網絡目錄 /var/www 和其內容的權限設置

sudo chmod -R 755 /var/www

(2)建立測試頁面

我們現在將使用 nano 文本編輯器為每個網域創建一個簡單的 index.html 網頁。

請不要忘記將 side1.com.tw 替換為您自己的域名。

sudo nano /var/www/side1.com.tw/side1_html/index.html

將以下內容貼上:

<html>
   <head>
     <title>Welcome to side1.com.tw</title>
   </head>
   <body>
      <h1>Welcome to side1.com.tw</h2>
   </body>
</html>

保存並退出(按 CTRL + X,按 Y,然後按 ENTER)。

現在對 side2.com.tw 執行相同的操作。

sudo nano /var/www/side2.com.tw/side2_html/index.html

將以下內容貼上:

<html>
   <head>
     <title>Welcome to side2.com.tw</title>
   </head>
   <body>
      <h1>Welcome to side2.com.tw</h2>
   </body>
</html>

保存並退出(按 CTRL + X,按 Y,然後按 ENTER)。

(3)建立虛擬主機文件(Virtual Host Files)虛擬主機文

虛擬主機文件位於 /etc/apache2/sites-available/ 中,其用於告訴 Apache 網頁伺服器如何響應(Respond )各種網域請求(Request)。

讓我們為 side1.com.tw 網域創建一個新的虛擬主機文件。

sudo nano /etc/apache2/sites-available/side1.com.tw.conf

將以下內容貼上:

<VirtualHost *:80>
    ServerAdmin webmaster@side1.com.tw
    ServerName side1.com.tw
    ServerAlias www.side1.com.tw
    DocumentRoot /var/www/side1.com.tw/side1_html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

請必須將所有的 side1.com.tw 更改為你自己的域名。

保存並退出(按 CTRL + X,按 Y,然後按 ENTER)。

現在對 side2.com.tw 執行相同的操作。

sudo nano /etc/apache2/sites-available/side2.com.tw.conf

將以下內容貼上:

<VirtualHost *:80>
    ServerAdmin webmaster@side2.com.tw
    ServerName side2.com.tw
    ServerAlias www.side2.com.tw
    DocumentRoot /var/www/side2.com.tw/side2_html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

請必須將所有的 side2.com.tw 更改為你自己的域名。

保存並退出(按 CTRL + X,按 Y,然後按 ENTER)。

(4)啟用新的虛擬主機文件(Virtual Host Files)

現在我們有兩個虛擬主機文件,我們需要使用 a2ensite 工具來啟用它們。

sudo a2ensite side1.com.tw
sudo a2ensite side2.com.tw

測試配置語法是否有錯誤。

apachectl configtest

如果「Syntax OK」,重啟 Apache。

sudo systemctl reload apache2

假設你已經在網域註冊商上配置了 DNS ,將你的網域指向 Apache 伺服器的 IP,您現在應該能夠在網頁瀏覽器中查看這些測試網頁

Leave a Reply

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *