這是在Ubuntu社區找到的關(guān)于A(yíng)pache的虛擬主機配置
A基本配置
我們都知道,如果我們想在單臺機器上設置多個(gè)域名或主機名時(shí),我們就要用到基于名稱(chēng)的虛擬主
機了。那么要如何進(jìn)行設置呢?這就是本指南想解決的問(wèn)題了。在 Ubuntu 的 /etc/apache2/ 目
錄下有個(gè) Apache2 的主配置文件 nf。在該文件中我們可以看到有這么一行內容:
Include /etc/apache2/sites-enabled/[^.#]*
這行的意思表明該文件包含了 /etc/apache2/sites-enabled/ 目錄中文件名不含 "." 或 "#" 這
兩個(gè)字符的所有文件。而當我們列出該目錄的文件時(shí),發(fā)現只有一個(gè) 000-default 的軟鏈接文件
,實(shí)際連接的是 /etc/apache2/sites-available 目錄中的 default 文件,不難看出該文件的文
件名中并不包含 "." 或 "#"。所以這個(gè)文件當然是要被配置文件 nf 所包含的了。打
開(kāi)該文件,發(fā)現它其實(shí)是一個(gè)虛擬主機的配置文件,不過(guò)由于該文件中的虛擬主機為 *,所以它實(shí)
際上是一個(gè)通用配置文件。如果我們要建立虛擬主機的話(huà),那么就要把該文件改成如下所示:
NameVirtualHost 10.39.6.59
<VirtualHost 10.39.6.59>
ServerName
ServerAdmin ">
DocumentRoot /var/www/
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
# This directive allows us to have apache2's default start page
# in /apache2-default/, but still have / go to the right place
# Commented out for Ubuntu
#RedirectMatch ^/$ /apache2-default/
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog /var/log/apache2/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog /var/log/apache2/access.log combined
ServerSignature On
Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
</VirtualHost>
下面我們來(lái)分析一下上面這段設置中與虛擬主機有關(guān)的設置語(yǔ)句:
`NameVirtualHost 10.39.6.59`:表示我們要做的是一個(gè)基于名稱(chēng)的虛擬主機,且其 IP 地址為
10.39.6.59
`<VirtualHost 10.39.6.59> 和 </VirtualHost>`:表示在其中的是一個(gè)虛擬主機的配置
`ServerName `:設置虛擬主機的域名
`ServerAdmin `:設置該虛擬主機網(wǎng)管員的郵件
`DocumentRoot /var/www/`:設置該虛擬主機的主目錄路徑
`ErrorLog /var/log/apache2/error.log`:設置該虛擬主機的出錯信息
`CustomLog /var/log/apache2/access.log combined`:設置該虛擬主機的訪(fǎng)問(wèn)信息
這樣我們就配置了一個(gè)虛擬主機 。但由于這是缺省配置,所以在 Apache2 重啟
之后,無(wú)論你輸入 DNS 服務(wù)器中指向這個(gè)主機的任何域名,都會(huì )被導向 這個(gè)
缺省配置所指向的 /var/www 這個(gè)目錄的。除非該域名被其他虛擬主機配置所用,比如我們還配置
了 指向本機,且配置了相應的虛擬主機,這樣的話(huà),輸入域名
就會(huì )被對應該域名的目錄中。
B進(jìn)一步說(shuō)明
為了說(shuō)明清楚 我們再添加一個(gè)虛擬主機站點(diǎn) ,首先到
/etc/apache2/sites-available/ 目錄中建立一個(gè)文件 edunuke。當然這個(gè)文件名中是沒(méi)有 "."
或 "#" 這兩個(gè)字符的了。然后編輯該文件:
<VirtualHost 10.39.6.59>
ServerName
ServerAdmin
DocumentRoot "/var/www/edunuke/"
ErrorLog "/var/log/apache2/edunuke_errors.log"
CustomLog "/var/log/apache2/edunuke_accesses.log" common
</VirtualHost>
設置的具體含義同上面的相似,這是我就不再多說(shuō)了。然后再運行命令:
sudo a2ensite edunuke
這樣的話(huà),虛擬主機站點(diǎn) 就已經(jīng)安裝好了。這時(shí)你也可以在
/etc/apache2/sites-enabled/ 目錄中發(fā)現多了一個(gè)到 /etc/apache2/sites-available/edunuke
的軟鏈接。接下來(lái)就是將 Apache2 重啟來(lái)使虛擬主機站點(diǎn)運行起來(lái):
sudo /etc/init.d/apache2 restart
這樣你在瀏覽器上輸入 的話(huà),就會(huì )被指向 /var/www/edunuke 目錄了,而
輸入其他指向本機的域名則都會(huì )指到缺省配置中的 /var/www 目錄中。熟悉 Apache2 的朋友會(huì )問(wèn)
為什么這樣麻煩,放在一個(gè)文件中不也是可以嗎?為什么要用兩個(gè)文件呢?其實(shí)很簡(jiǎn)單,因為如果
我要對 edunuke 站點(diǎn)進(jìn)行維護時(shí),我只要運行命令:
sudo a2dissite edunuke
sudo /etc/init.d/apache2 restart
即可,這樣既可以維護 edunuke 這個(gè)站點(diǎn),同時(shí)還不影響其他站點(diǎn)的正常運行。
C高級配置
上面談了一下簡(jiǎn)單的虛擬主機配置方法。這個(gè)基本上能滿(mǎn)足我們大部分的需要。但如果要是安裝
Zope+Plone 的話(huà),上面的這點(diǎn)設置是遠遠不夠的,由于 Zope+Plone 結構所采用的端口并非是80
端口,所以我們還得做端口重定向。為了能夠做這個(gè),我們得激活 Rewrite 和 Proxy 兩個(gè)模塊。
激活模塊很簡(jiǎn)單,同站點(diǎn)配置目錄一樣,在 Apache2 中也有兩個(gè)模塊配置目錄:mods-available
和 mods-enabled。在 mods-available 目錄中的是所有可用的模塊,而在 mods-enabled 目錄中
的則是已被安裝到 Apache2 中的模塊。由于在 mods-available 目錄中已經(jīng)有了 Rewrite 和
Proxy 模塊的配置引導文件,所以只需要簡(jiǎn)單地將其安裝到 Apache2 中即可。使用命令:
sudo a2enmod rewrite
sudo a2enmod proxy
然后,添加虛擬主機站點(diǎn) ,同 edunuke 站點(diǎn)創(chuàng )建相似
在/etc/apache2/sites-available/ 目錄中建立一個(gè)文件 plone。顯然這個(gè)文件名中是沒(méi)有 "."
或 "#" 這兩個(gè)字符的了。然后編輯該文件:
<VirtualHost 10.39.6.59>
ServerName
ServerAdmin
ErrorLog "/var/log/apache2/plone_errors.log"
CustomLog "/var/log/apache2/plone_accesses.log" common
RewriteEngine on
RewriteRule ^/(.*)
/$1 [L,P]
<Proxy *>
Order Deny,Allow
Deny from all
Allow from all
</Proxy>
</VirtualHost>
這樣就安裝好了 虛擬主機站點(diǎn),可以在瀏覽器中地址欄中輸入
就可以重定向到 Zope+Plone 站點(diǎn)去了。
聯(lián)系客服