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.com 和 site2.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.conf 和 site2.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.com 和 http://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)、反向代理等功能,進一步優化服務器性能。