1. 程式人生 > >如何在CentOS 6上設定Apache虛擬主機

如何在CentOS 6上設定Apache虛擬主機

虛擬主機用於從單個IP地址執行多個域。這對於需要從一個虛擬專用伺服器執行多個站點的人特別有用。根據使用者訪問站點的具體情況,站點會向訪問者顯示不同的資訊。可以新增到VPS的虛擬主機數量沒有限制。

建立

本教程中的步驟要求使用者具有root許可權。你可以看到如何設定了在初始伺服器設定在第3步和4。此外,如果我在步驟引用使用者,我將使用名稱WWW。你可以實現任何適合你的使用者名稱。

此外,您需要在您的虛擬伺服器上安裝並執行apache如果不是這樣,您可以使用以下命令下載:

sudo yum install httpd

第一步 - 建立一個新目錄

建立虛擬主機的第一步是建立一個目錄,我們將保留新網站的資訊。

此位置將是您以後的Apache虛擬配置檔案中的文件根目錄。通過在程式碼行中新增-p,命令會自動生成新目錄的所有父代。

sudo mkdir -p /var/www/example.com/public_html

您需要指定一個實際的DNS許可域或IP地址,以測試虛擬主機是否正在工作。在本教程中,我們將使用example.com作為正確域名的佔位符。

但是,如果您想使用未經批准的域名來測試該過程,您將在第六步中找到有關如何使其在本地計算機上工作的資訊。

第二步 - 授予許可權

我們需要將該目錄的所有權授予使用者,而不是將其保留在根系統上。

 sudo chown -R apache:apache /var/www/example.com/public_html 

此外,重要的是要確保每個人都能夠讀取我們的新檔案。

 sudo chmod 755 /var/www

現在你都完成了許可權。

第三步 - 建立頁面

我們需要在我們的配置目錄中建立一個名為index.html的新檔案。

sudo vi /var/www/example.com/public_html/index.html

我們可以向檔案中新增一些文字,以便在IP重定向到虛擬主機時檢視。

&lthtml>
  &lthead>
    &lttitle>www.example.com&lt/title>
  &lt/head>
  &ltbody>
    &lth1>Success: You Have Set Up a Virtual Host&lt/h1>
  &lt/body>
&lt/html>

儲存並退出

第四步 - 開啟虛擬主機

下一步是進入apache配置檔案本身。

sudo vi /etc/httpd/conf/httpd.conf

有幾行要尋找。

確保您的文字與下面顯示的內容相符。

#Listen 12.34.56.78:80
Listen 80

向下滾動到文件的最底部到名為“虛擬主機”的部分。

NameVirtualHost *:80
#
# NOTE: NameVirtualHost cannot be used without a port specifier
# (e.g. :80) if mod_ssl is being used, due to the nature of the
# SSL protocol.
#    

#    
# VirtualHost example:
# Almost any Apache directive may go into a VirtualHost container.
# The first VirtualHost section is used for requests without a known
# server name.
# 
&ltVirtualHost *:80>
     ServerAdmin [email protected]
     DocumentRoot /var/www/example.com/public_html
     ServerName www.example.com
     ServerAlias example.com
     ErrorLog /var/www/example.com/error.log
     CustomLog /var/www/example.com/requests.log
&lt/VirtualHost>

要關注的最重要的行是NameVirtualHost,虛擬主機,文件根和伺服器名稱的行。讓我們一次採取這些。

  • 取消註釋(刪除數字符號)NameVirtualHost,不進行任何更改。星號表示通過埠80的任何IP地址將是虛擬主機。由於您的系統可能只有一個IP地址,這不是一個問題 - 但是,如果您願意,您可以用您的IP地址替換星號。
  • 您可以將其餘的數字標記留在原位,直到到達&ltVirtualHost *:80>行。通過&ltVirtualHost>取消註釋一切。
  • 保留&ltVirtualHost *:80>,因為它的詳細資訊必須與NameVirtual Host部分中的詳細資訊匹配。如果您在該部分中用您的IP地址替換了星標,請務必在此處執行相同操作。
  • 文件根是關鍵!對於此部分,寫入在第一步中建立的新目錄的副檔名。如果文件根不正確或缺失,您將無法設定虛擬主機。
  • 伺服器名稱是另一個重要的資訊,包含虛擬主機的域名(例如www.example.com)。確保您完全拼寫域名;我們將在下一行放入任何備用的可能性。
  • ServerAlias是配置檔案中的一個新行,預設情況下不存在。新增它將允許您列出域名的幾個變體,例如沒有前面的www。

本節中的其餘行不是設定虛擬主機所必需的。然而,知道他們做什麼仍然有幫助。

  • 伺服器管理員要求網站管理員的電子郵件。
  • 錯誤日誌和自定義日誌跟蹤伺服器的任何問題。錯誤日誌涵蓋在維護伺服器時出現的問題,自定義日誌跟蹤伺服器請求。您可以為這些程序設定自定義位置。
  • 確保&ltVirtualHost>未註釋;然後儲存並退出。

第五步 - 重新啟動Apache

我們對配置進行了很多更改。但是,它們將不會生效,直到Apache重新啟動。

首先停止所有apache程序:

sudo apachectl -k stop

然後再次啟動apache。

sudo /etc/init.d/httpd start

您可能會看到以下錯誤:

Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName

該訊息只是一個警告,您將能夠訪問您的虛擬主機,沒有任何進一步的問題。

可選第六步 - 設定本地主機

如果您已將域名指向虛擬專用伺服器的IP地址,則可以跳過此步驟,而不需要設定本地主機。您的虛擬主機應該工作。但是,如果想要嘗試新的虛擬主機而無需連線到實際的域名,您可以單獨在您的計算機上設定本地主機。對於這一步,確保你在計算機本身,而不是你的Droplet。

要繼續此步驟,您需要知道計算機的管理密碼,否則將需要使用實際的域名來測試虛擬主機。

如果你是一個Mac或Linux上,訪問根使用者( su在計算機上),並開啟你的hosts檔案:

nano /etc/hosts 

如果你是在Windows計算機上,你可以找到方向改變主機上的檔案, 微軟網站

您可以將本地主機詳細資訊新增到此檔案,如下面的示例所示。只要該行在那裡,將您的瀏覽器指向example.com即可獲得相應IP地址的所有虛擬主機詳細資訊。

# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting.  Do not change this entry.
##
127.0.0.1       localhost

#Virtual Hosts 
12.34.56.789    www.example.com 

但是,最好在完成後從本地hosts資料夾中刪除這些補充地址,以避免任何未來的混亂。

第七步:結果:檢視您的虛擬主機在操作

完成虛擬主機的設定後,您可以看到它如何線上。在瀏覽器中輸入您的IP地址(即http://12.34.56.789)

它應該看起來有點像我的得心應手截圖

做得好!

新增更多虛擬主機

要建立其他虛擬主機,您只需重複上述過程,小心地每次使用適當的新域名設定新的文件根。然後只需將新的虛擬主機資訊複製並貼上到Apache Config檔案中,如下所示

&ltVirtualHost *:80>
     ServerAdmin [email protected]
     DocumentRoot /var/www/example.com/public_html
     ServerName www.example.com
     ServerAlias example.com
     ErrorLog /etc/var/www/example.com/error.log
     CustomLog /var/www/example.com/requests.log
&lt/VirtualHost>
&ltVirtualHost *:80>
     ServerAdmin [email protected]
     DocumentRoot /var/www/example.org/public_html
     ServerName www.example.org
     ServerAlias example.org
     ErrorLog /var/www/example.org/error.log
     CustomLog /var/www/example.orgrequests.log
&lt/VirtualHost>

檢視更多