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,您現在應該能夠在網頁瀏覽器中查看這些測試網頁