1. 什麼是虛擬主機?爲什麼要用它?

在Linux服務器上,一臺物理服務器可以通過“虛擬主機”技術同時運行多個網站,每個網站就像獨立的“小服務器”一樣對外提供服務。這樣做的好處是節省服務器資源(不需要爲每個網站單獨購買服務器),適合個人開發者、小型團隊或創業項目快速建站。

虛擬主機主要分爲兩類:基於域名(最常用)和基於IP(較少用)。本文重點講解基於域名的虛擬主機配置,適合有域名的場景(或本地測試環境)。

2. 準備工作:安裝Apache服務器

首先需要在Linux服務器上安裝Apache(Web服務器軟件)。不同Linux發行版安裝命令不同,以下是常見系統的安裝步驟:

CentOS/RHEL系統

# 安裝Apache
sudo yum install httpd -y  

# 啓動Apache並設置開機自啓
sudo systemctl start httpd  
sudo systemctl enable httpd  

# 檢查狀態(確認服務運行正常)
sudo systemctl status httpd  

Ubuntu/Debian系統

# 安裝Apache
sudo apt update  
sudo apt install apache2 -y  

# 啓動Apache並設置開機自啓
sudo systemctl start apache2  
sudo systemctl enable apache2  

# 檢查狀態
sudo systemctl status apache2  

驗證安裝成功

安裝完成後,打開瀏覽器訪問服務器的IP地址(例如 http://192.168.1.100),如果看到Apache默認頁面,說明安裝成功。

3. 準備網站文件與目錄

虛擬主機需要爲每個網站創建獨立的文件存放目錄。以兩個示例網站(site1.comsite2.com)爲例:

# 創建site1和site2的網站根目錄
sudo mkdir -p /var/www/site1/public  
sudo mkdir -p /var/www/site2/public  

# 創建簡單的測試頁面(site1的首頁)
echo "歡迎來到 Site1" | sudo tee /var/www/site1/public/index.html  

# 創建site2的首頁
echo "歡迎來到 Site2" | sudo tee /var/www/site2/public/index.html  

4. 配置虛擬主機(核心步驟)

Apache通過配置文件管理虛擬主機。以Ubuntu爲例,配置文件存放在 /etc/apache2/sites-available/;CentOS則在 /etc/httpd/conf.d/ 目錄下。這裏以Ubuntu爲例講解,步驟通用。

步驟1:創建虛擬主機配置文件

進入配置文件目錄,爲每個網站創建獨立的配置文件(以 site1.confsite2.conf 爲例):

# 進入Apache配置目錄
cd /etc/apache2/sites-available  

# 創建site1的配置文件
sudo nano site1.conf  

# 創建site2的配置文件
sudo nano site2.conf  

步驟2:編寫site1的虛擬主機配置

site1.conf 中寫入以下內容(替換域名和目錄路徑爲實際值):

<VirtualHost *:80>
    # 網站管理員郵箱(可自定義)
    ServerAdmin webmaster@site1.com  

    # 網站主域名(必選)
    ServerName www.site1.com  
    # 支持不帶www的域名(可選,如site1.com)
    ServerAlias site1.com  

    # 網站文件存放的根目錄(前面創建的目錄)
    DocumentRoot /var/www/site1/public  

    # 目錄權限設置(允許訪問網站文件)
    <Directory /var/www/site1/public>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

    # 錯誤日誌和訪問日誌路徑
    ErrorLog ${APACHE_LOG_DIR}/site1_error.log
    CustomLog ${APACHE_LOG_DIR}/site1_access.log combined
</VirtualHost>

步驟3:編寫site2的虛擬主機配置

site2.conf 中重複上述步驟,僅修改域名和目錄路徑:

<VirtualHost *:80>
    ServerAdmin webmaster@site2.com
    ServerName www.site2.com
    ServerAlias site2.com
    DocumentRoot /var/www/site2/public

    <Directory /var/www/site2/public>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/site2_error.log
    CustomLog ${APACHE_LOG_DIR}/site2_access.log combined
</VirtualHost>

步驟4:啓用虛擬主機配置

Ubuntu需要手動啓用配置文件(CentOS直接重啓即可):

# 啓用site1和site2的配置
sudo a2ensite site1.conf  
sudo aensite site2.conf  

# 檢查配置是否正確(避免語法錯誤)
sudo apache2ctl configtest  

# 重啓Apache使配置生效
sudo systemctl restart apache2  

5. 測試虛擬主機(本地/公網訪問)

配置完成後,需要驗證是否能正常訪問兩個網站。

本地測試(無真實域名時)

如果沒有購買域名,可通過修改本地 hosts 文件模擬域名訪問:

  • Windows系統:打開 C:\Windows\System32\drivers\etc\hosts,添加一行:
    127.0.0.1 www.site1.com
    127.0.0.1 www.site2.com

  • Linux/Mac系統:打開終端,執行以下命令:

  sudo nano /etc/hosts  
  # 添加一行:
  127.0.0.1 www.site1.com  
  127.0.0.1 www.site2.com  

保存後,直接在瀏覽器輸入 http://www.site1.comhttp://www.site2.com,應分別顯示兩個網站的首頁內容。

公網測試(有真實域名時)

如果已購買域名,需將域名的DNS解析指向服務器IP(例如 A記錄 指向 192.168.1.100),然後在瀏覽器輸入 http://www.site1.com 即可訪問。

6. 常見問題與解決辦法

  • 403 Forbidden錯誤:通常是網站目錄權限不足。執行 sudo chown -R www-data:www-data /var/www/site1/public(Ubuntu)或 sudo chown -R apache:apache /var/www/site1/public(CentOS)。
  • Apache啓動失敗:執行 sudo apache2ctl configtest(Ubuntu)或 sudo httpd -t(CentOS)檢查配置語法錯誤。
  • 域名無法訪問:檢查DNS解析是否生效(可通過 ping www.site1.com 驗證),或確認 hosts 文件是否正確添加域名。

7. 總結

通過本文,你已完成Linux服務器上Apache多站點的搭建:
1. 安裝並啓動Apache;
2. 創建獨立網站目錄和首頁文件;
3. 配置基於域名的虛擬主機;
4. 通過本地hosts或公網域名測試訪問。

虛擬主機的核心是“隔離配置”,每個網站的配置互不干擾,適合快速擴展網站數量。後續可繼續添加SSL證書(HTTPS)、反向代理等功能,進一步優化服務器性能。

小夜