如何在 Linux 上使用 Apache Web 伺服器設定虛擬主機


在本文中,您將瞭解如何在 Ubuntu Linux 上設定 Apache 虛擬主機。在此過程中,您將學習如何根據使用者請求的域名/站點向不同的使用者提供不同的站點。

Apache Web 伺服器

Apache Web 伺服器是網際網路上提供網站最流行和最強大的方式。它用於網際網路上超過一半的活動網站,並且功能極其強大且靈活。

Apache 將其功能和元件提供給各個單元,這些單元可以獨立自定義和配置。描述站點或域的基本單元稱為虛擬主機。

這允許管理員使用一種機制使用一臺伺服器透過單個介面或 IP 地址託管多個域或站點。

Apache 安裝

$ sudo apt-get update
$ sudo apt-get install apache2

完成這些步驟後,我們就可以開始了。

出於演示目的,我們將配置 **apache** 為 webserver1.com 建立一個虛擬主機,為 webserver2.com 建立另一個虛擬主機。這將類似於參考指南,但您應該替換您自己的站點/域名。

建立目錄結構

這裡的第一步是,目錄結構將儲存將提供給訪問者的站點資訊和資料。預設情況下,apache 的頂級目錄是 /var/www,我們將為每個站點/域將其設定為 /var/www 目錄下的各個目錄。

對於我們的每個站點,我們將建立站點目錄 -

$ sudo mkdir -p /var/www/webserver1.com
$ sudo mkdir -p /var/www/webserver2.com

授予許可權

現在,我們有了站點/域的目錄結構,但它們是由我們的 root 使用者建立和擁有的。如果我們希望我們的普通使用者能夠修改我們的 Web 目錄中的檔案,那麼我們必須將所有權更改為其他普通使用者。

$ sudo chown -R $USER:$USER /var/www/webserver1.com
$ sudo chown -R $USER:$USER /var/www/webserver2.com

我們還應該稍微修改一下許可權,以確保允許對通用 Web 目錄及其包含的所有檔案和資料夾進行讀取訪問,以便可以正確提供頁面

$ sudo chmod -R 755 /var/www

您的 Web 伺服器現在應該具有為站點提供服務所需的許可權,並且您的使用者應該能夠在必要的資料夾中建立內容。

為每個虛擬主機建立演示頁面

首先,我們將從 webserver1.com 開始。然後,我們可以在編輯器中透過鍵入以下命令建立 index.html 檔案

$ touch /var/www/webserver1.com/index.html

使用一個簡單的 HTML 指令碼編輯 index.html 檔案,該指令碼指示其連線的站點。<html>

$ nano /var/www/webserver1.com/ index.html
<html>
   <head>
      <title>Welcome to webserver1.com!</title>
   </head>
   <body>
      <h1>Success! The webserver1.com virtual host is working!</h1>
   </body>
</html>
class="result notranslate"$ cp /var/www/webserver1.com/index.html /var/www/webserver2.com/index.html

然後,我們可以編輯檔案並修改相關的資訊

$ nano /var/www/webserver2.com/public_html/index.html
<html>
   <head>
      <title>Welcome to webserver2.com!</title>
   </head>
   <body>
      <h1>Success! The webserver2.com virtual host is working!</h1>
   </body>
</html>

建立新的虛擬主機檔案

虛擬主機檔案是指定虛擬主機並指示 Apache 響應各種域名請求的配置檔案。

$ sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/webserver1.com.conf
$ sudo nano /etc/apache2/sites-available/webserver1.com.conf
<VirtualHost *:80>
   ServerAdmin admin@webserver1.com
   ServerName webserver1.com
   ServerAlias www.webserver1.com
   DocumentRoot /var/www/webserver1.com/public_html
   ErrorLog ${APACHE_LOG_DIR}/error.log
   CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

複製第一個虛擬主機檔案併為第二個域名 webserver2.com 自定義

$ sudo cp /etc/apache2/sites-available/webserver1.com.conf /etc/apache2/sites-available/webserver2.com.conf
$ sudo nano /etc/apache2/sites-available/webserver2.com.conf

您現在需要修改所有資訊以引用您的第二個域名。完成後,它可能如下所示

<VirtualHost *:80>
   ServerAdmin admin@webserver2.com
   ServerName webserver2.com
   ServerAlias www.webserver2.com
   DocumentRoot /var/www/webserver2.com/public_html
   ErrorLog ${APACHE_LOG_DIR}/error.log
   CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

啟用新的虛擬主機檔案

現在我們已經建立了虛擬主機檔案,我們必須啟用這些站點。Apache 有自己的工具允許我們這樣做。

$ sudo a2ensite webserver1.com.conf
$ sudo a2ensite webserver2.com.conf

我們需要重新啟動 Apache 以使這些更改生效

$ sudo service apache2 restart
* Restarting web server apache2
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1.
Set the 'ServerName' directive globally to suppress this message.
This is a harmless message that does not affect our site.

測試網站

由於這些站點/域名不是公開的,因此沒有條目可以簡化步驟,我們需要編輯 /etc/hosts 檔案,以便如果我們使用域名 webserver1.com 和 webserver2.com 瀏覽,我們可以看到網頁

$ sudo /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.1.84 website1.com
192.168.1.84 website1.com

現在您已經配置了兩個主機,您可以透過開啟您喜歡的瀏覽器並開啟域名輕鬆測試您的設定。

http://webserver1.com


http://webserver2.com

配置完成後,您現在應該有一個處理兩個單獨域名/站點名稱的單個伺服器。您可以按照上面概述的步驟擴充套件此過程以建立其他虛擬主機。沒有軟體限制配置 Apache 可以處理的域名數量,我們可以建立任意數量的站點/域名,直到您的伺服器能夠處理它們。

更新於:2020年1月20日

21K+ 瀏覽量

開啟你的 職業生涯

透過完成課程獲得認證

開始
廣告
© . All rights reserved.