Ubuntu下如何配置Apache虛擬主機?
在Ubuntu下如何配置Apache的虛擬主機呢?下文給出了詳細的解釋,具體內(nèi)容如下所述。
A基本配置
我們都知道,如果我們想在單臺機器上設(shè)置多個域名或主機名時,我們就要用到基于名稱的虛擬主機了。那么要如何進行設(shè)置呢?這就是本指南想解決的問題了。在Ubuntu的/etc/apache2/目錄下有個Apache2的主配置文件apache2.conf。在該文件中我們可以看到有這么一行內(nèi)容:
Include/etc/apache2/sites-enabled/[^.#]*
這行的意思表明該文件包含了/etc/apache2/sites-enabled/目錄中文件名不含"."或"#"這兩個字符的所有文件。而當我們列出該目錄的文件時,發(fā)現(xiàn)只有一個000-default的軟鏈接文件,實際連接的是/etc/apache2/sites-available目錄中的default文件,不難看出該文件的文件名中并不包含"."或"#"。所以這個文件當然是要被配置文件apache2.conf所包含的了。打開該文件,發(fā)現(xiàn)它其實是一個虛擬主機的配置文件,不過由于該文件中的虛擬主機為*,所以它實際上是一個通用配置文件。如果我們要建立虛擬主機的話,那么就要把該文件改成如下所示:
- NameVirtualHost10.39.6.59
- [VirtualHost10.39.6.59]
- ServerNamewww.britepic.org
- ServerAdminUbuntu@gmail.com"]Ubuntu@gmail.com
- DocumentRoot/var/www/
- [Directory/]
- OptionsFollowSymLinks
- AllowOverrideNone
- [/Directory]
- [Directory/var/www/]
- OptionsIndexesFollowSymLinksMultiViews
- AllowOverrideNone
- Orderallow,deny
- allowfromall
- #Thisdirectiveallowsustohaveapache2'sdefaultstartpage
- #in/apache2-default/,butstillhave/gototherightplace
- #CommentedoutforUbuntu
- #RedirectMatch^/$/apache2-default/
- [/Directory]
- ScriptAlias/CGI-bin//usr/lib/cgi-bin/
- [Directory"/usr/lib/cgi-bin"]
- AllowOverrideNone
- OptionsExecCGI-MultiViews+SymLinksIfOwnerMatch
- Orderallow,deny
- Allowfromall
- [/Directory]
- ErrorLog/var/log/apache2/error.log
- #Possiblevaluesinclude:debug,info,notice,warn,error,crit,
- #alert,emerg.
- LogLevelwarn
- CustomLog/var/log/apache2/Access.logcombined
- ServerSignatureOn
- Alias/doc/"/usr/share/doc/"
- [Directory"/usr/share/doc/"]
- OptionsIndexesMultiViewsFollowSymLinks
- AllowOverrideNone
- Orderdeny,allow
- Denyfromall
- Allowfrom127.0.0.0/255.0.0.0::1/128
- [/Directory]
- [/VirtualHost]
下面我們來分析一下上面這段設(shè)置中與虛擬主機有關(guān)的設(shè)置語句:
`NameVirtualHost10.39.6.59`:表示我們要做的是一個基于名稱的虛擬主機,且其IP地址為
10.39.6.59
`[VirtualHost10.39.6.59]和[/VirtualHost]`:表示在其中的是一個虛擬主機的配置
`ServerNamewww.britepic.org`:設(shè)置虛擬主機的域名
`ServerAdminUbuntu@gmail.com`:設(shè)置該虛擬主機網(wǎng)管員的郵件
`DocumentRoot/var/www/`:設(shè)置該虛擬主機的主目錄路徑
`ErrorLog/var/log/apache2/error.log`:設(shè)置該虛擬主機的出錯信息
`CustomLog/var/log/apache2/access.logcombined`:設(shè)置該虛擬主機的訪問信息
這樣我們就配置了一個虛擬主機www.britepic.org。但由于這是缺省配置,所以在Apache2重啟
之后,無論你輸入DNS服務(wù)器中指向這個主機的任何域名,都會被導(dǎo)向www.britepic.org這個
缺省配置所指向的/var/www這個目錄的。除非該域名被其他虛擬主機配置所用,比如我們還配置
了edunuke.britepic.org指向本機,且配置了相應(yīng)的虛擬主機,這樣的話,輸入域名
edunuke.britepic.org就會被對應(yīng)該域名的目錄中。
B進一步說明
為了說明清楚我們再添加一個虛擬主機站點edunuke.britepic.org,首先到/etc/apache2/sites-available/目錄中建立一個文件edunuke。當然這個文件名中是沒有"."
或"#"這兩個字符的了。然后編輯該文件:
- [VirtualHost10.39.6.59]
- ServerNameedunuke.britepic.org
- ServerAdminUbuntu@britepic.org
- DocumentRoot"/var/www/edunuke/"
- ErrorLog"/var/log/apache2/edunuke_errors.log"
- CustomLog"/var/log/apache2/edunuke_Accesses.log"common
- [/VirtualHost]
設(shè)置的具體含義同上面的相似,這是我就不再多說了。然后再運行命令:
sudoa2ensiteedunuke
這樣的話,虛擬主機站點edunuke.britepic.org就已經(jīng)安裝好了。這時你也可以在
- /etc/apache2/sites-enabled/目錄中發(fā)現(xiàn)多了一個到/etc/apache2/sites-available/edun
uke
的軟鏈接。接下來就是將Apache2重啟來使虛擬主機站點運行起來:
sudo/etc/init.d/apache2restart
這樣你在瀏覽器上輸入edunuke.britepic.org的話,就會被指向/var/www/edunuke目錄了,而輸入其他指向本機的域名則都會指到缺省配置中的/var/www目錄中。熟悉Apache2的朋友會問為什么這樣麻煩,放在一個文件中不也是可以嗎?為什么要用兩個文件呢?
其實很簡單,因為如果我要對edunuke站點進行維護時,我只要運行命令:
- sudoa2dissiteedunuke
- sudo/etc/init.d/apache2restart
即可,這樣既可以維護edunuke這個站點,同時還不影響其他站點的正常運行。
總結(jié):
希望本文介紹的在Ubuntu下配置Apache虛擬主機的方法能夠?qū)ψx者有所幫助,更多有關(guān)linux操作系統(tǒng)的知識還有待于讀者去探索和學(xué)習(xí)。
【編輯推薦】