如何在 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 可以處理的域名數量,我們可以建立任意數量的站點/域名,直到您的伺服器能夠處理它們。
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP