在本教程中,我們將向您介紹如何在 Debian 9 上設(shè)置 Apache 虛擬主機(jī)。
Apache 虛擬主機(jī)允許您在一臺(tái)計(jì)算機(jī)上托管多個(gè)網(wǎng)站。使用虛擬主機(jī)時(shí),您可以為每個(gè)域名或子域名指定不同的文檔根目錄(包含網(wǎng)站文件的目錄),創(chuàng)建單獨(dú)的安全策略,使用不同的 SSL 證書等等。
雖然本教程是為 Debian 9 編寫的,但相同的步驟適用于所有基于 Debian 的發(fā)行版。
先決條件
在繼續(xù)本教程之前,請(qǐng)確保滿足以下先決條件:
- 讓域名指向您的服務(wù)器 IP 地址。在本教程中我們將使用 example.com 。
- 您已經(jīng)在 Debian 服務(wù)器上安裝 Apache。
- 以具有sudo權(quán)限的用戶身份登錄。
創(chuàng)建目錄結(jié)構(gòu)
文檔根目錄是存儲(chǔ)網(wǎng)站文件的,并根據(jù)請(qǐng)求響應(yīng)存儲(chǔ)在目錄中的文件。您可以將文檔根目錄設(shè)置為所需的任何位置。在本指南中,我們將使用以下目錄結(jié)構(gòu):
/var/www/ ├── domain1.com │ └── public_html ├── domain2.com │ └── public_html ├── domain3.com │ └── public_html
托管在我們服務(wù)器上的每個(gè)域名都將其文檔根目錄設(shè)置為 /var/www/<domain_name>/public_html 。
讓我們從為第一個(gè)域 example.com 創(chuàng)建文檔根目錄開始:
sudo mkdir -p /var/www/example.com/public_html
我們還將在域文檔根目錄中創(chuàng)建一個(gè)文件 index.html ,該文件將在您瀏覽器中訪問域時(shí)顯示。
打開您喜歡的文本編輯器,創(chuàng)建一個(gè)新文件 /var/www/example.com/public_html/index.html 并將以下內(nèi)容粘貼到其中:
<!DOCTYPE html> <html lang="en" dir="ltr"> <head> <meta charset="utf-8"> <title>Welcome to example.com</title> </head> <body> <h1>Success! example.com home page!</h1> </body> </html>
我們以 sudo 用戶身份運(yùn)行命令,新創(chuàng)建的文件和目錄由 root 用戶擁有。
為了避免任何權(quán)限問題,我們將域文檔根目錄和該目錄中的所有文件的所有權(quán)更改為 apache 服務(wù)器用戶www-data):
sudo chown -R www-data: /var/www/example.com
創(chuàng)建虛擬主機(jī)
在 Debian 系統(tǒng)上, Apache 虛擬主機(jī)配置文件位于 /etc/apache2/sites-available 目錄中,可以通過在 /etc/apache2/sites-enabled 目錄中創(chuàng)建指向的配置文件的符號(hào)鏈接來啟用。
打開您選擇的文本編輯器并創(chuàng)建以下基本虛擬主機(jī)配置文件:/etc/apache2/sites-available/example.com.conf
<VirtualHost *:80> ServerName example.com ServerAlias www.example.com ServerAdmin webmaster@example.com DocumentRoot /var/www/example.com/public_html <Directory /var/www/example.com/public_html> Options -Indexes +FollowSymLinks AllowOverride All </Directory> ErrorLog ${APACHE_LOG_DIR}/example.com-error.log CustomLog ${APACHE_LOG_DIR}/example.com-access.log combined </VirtualHost>
- ServerName:應(yīng)與此虛擬主機(jī)配置匹配的域。這應(yīng)該是您的域名。
- ServerAlias:所有其他域或子域也應(yīng)與此虛擬主機(jī)匹配,通常是 www 子域。
- DocumentRoot: 存放網(wǎng)站文件的目錄。
- Options:此指令控制特定目錄中可用的服務(wù)器功能。
- -Indexes:防止目錄列表。
- FollowSymLinks:?jiǎn)⒂么诉x項(xiàng)后, Apache 將遵循符號(hào)鏈接。
- AllowOverride:指定 .htaccess 文件中聲明的哪些指令可以覆蓋配置指令。
- ErrorLog,CustomLog:指定日志文件的位置。
您可以根據(jù)需要命名虛擬主機(jī)配置文件,但建議使用域名作為配置文件的名稱。
要啟用新的虛擬主機(jī)文件,請(qǐng)?jiān)?sites-enabled 目錄創(chuàng)建符號(hào)鏈接指向虛擬主機(jī)配置文件,該目錄在啟動(dòng)期間由 Apache 讀取。
在 Debian 系統(tǒng)中,您可以使用名為 a2ensite 的幫助程序腳本啟用虛擬主機(jī):
sudo a2ensite example.com
另一個(gè)選項(xiàng)是手動(dòng)創(chuàng)建符號(hào)鏈接,如下所示:
sudo ln -s /etc/apache2/sites-available/example.com.conf /etc/apache2/sites-enabled/
啟用配置后,通過鍵入以下內(nèi)容測(cè)試語法是否正確:
sudo apachectl configtest
如果沒有錯(cuò)誤,您將看到以下輸出:
Syntax OK
重新啟動(dòng) apache2 服務(wù)以使更改生效:
sudo systemctl restart apache2
要驗(yàn)證一切是否按預(yù)期工作,請(qǐng)?jiān)谀矚g的瀏覽器中打開 http://example.com ,您將看到如下內(nèi)容:
結(jié)論
在本教程中,您學(xué)習(xí)了如何創(chuàng)建 Apache 虛擬主機(jī)配置以在單個(gè) Debian 服務(wù)器上托管多個(gè)域。您可以重復(fù)相同的步驟為其他域創(chuàng)建其他虛擬主機(jī)。