這是在Ubuntu社區(qū)找到的關(guān)于Apache的虛擬主機(jī)配置 A基本配置 我們都知道,,如果我們想在單臺(tái)機(jī)器上設(shè)置多個(gè)域名或主機(jī)名時(shí),,我們就要用到基于名稱的虛擬主 機(jī)了,。那么要如何進(jìn)行設(shè)置呢,?這就是本指南想解決的問(wèn)題了,。在 Ubuntu 的 /etc/apache2/ 目 錄下有個(gè) Apache2 的主配置文件 nf。在該文件中我們可以看到有這么一行內(nèi)容: Include /etc/apache2/sites-enabled/[^.#]* 這行的意思表明該文件包含了 /etc/apache2/sites-enabled/ 目錄中文件名不含 "." 或 "#" 這 兩個(gè)字符的所有文件,。而當(dāng)我們列出該目錄的文件時(shí),,發(fā)現(xiàn)只有一個(gè) 000-default 的軟鏈接文件 ,實(shí)際連接的是 /etc/apache2/sites-available 目錄中的 default 文件,,不難看出該文件的文 件名中并不包含 "." 或 "#",。所以這個(gè)文件當(dāng)然是要被配置文件 nf 所包含的了。打 開該文件,,發(fā)現(xiàn)它其實(shí)是一個(gè)虛擬主機(jī)的配置文件,,不過(guò)由于該文件中的虛擬主機(jī)為 *,所以它實(shí) 際上是一個(gè)通用配置文件,。如果我們要建立虛擬主機(jī)的話,,那么就要把該文件改成如下所示: 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)分析一下上面這段設(shè)置中與虛擬主機(jī)有關(guān)的設(shè)置語(yǔ)句: `NameVirtualHost 10.39.6.59`:表示我們要做的是一個(gè)基于名稱的虛擬主機(jī),且其 IP 地址為 10.39.6.59 `<VirtualHost 10.39.6.59> 和 </VirtualHost>`:表示在其中的是一個(gè)虛擬主機(jī)的配置 `ServerName `:設(shè)置虛擬主機(jī)的域名 `ServerAdmin `:設(shè)置該虛擬主機(jī)網(wǎng)管員的郵件 `DocumentRoot /var/www/`:設(shè)置該虛擬主機(jī)的主目錄路徑 `ErrorLog /var/log/apache2/error.log`:設(shè)置該虛擬主機(jī)的出錯(cuò)信息 `CustomLog /var/log/apache2/access.log combined`:設(shè)置該虛擬主機(jī)的訪問(wèn)信息 這樣我們就配置了一個(gè)虛擬主機(jī) ,。但由于這是缺省配置,,所以在 Apache2 重啟 之后,無(wú)論你輸入 DNS 服務(wù)器中指向這個(gè)主機(jī)的任何域名,,都會(huì)被導(dǎo)向 這個(gè) 缺省配置所指向的 /var/www 這個(gè)目錄的,。除非該域名被其他虛擬主機(jī)配置所用,比如我們還配置 了 指向本機(jī),,且配置了相應(yīng)的虛擬主機(jī),,這樣的話,,輸入域名 就會(huì)被對(duì)應(yīng)該域名的目錄中,。 B進(jìn)一步說(shuō)明 為了說(shuō)明清楚 我們?cè)偬砑右粋€(gè)虛擬主機(jī)站點(diǎn) ,首先到 /etc/apache2/sites-available/ 目錄中建立一個(gè)文件 edunuke,。當(dāng)然這個(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> 設(shè)置的具體含義同上面的相似,這是我就不再多說(shuō)了,。然后再運(yùn)行命令: sudo a2ensite edunuke 這樣的話,,虛擬主機(jī)站點(diǎn) 就已經(jīng)安裝好了,。這時(shí)你也可以在 /etc/apache2/sites-enabled/ 目錄中發(fā)現(xiàn)多了一個(gè)到 /etc/apache2/sites-available/edunuke 的軟鏈接。接下來(lái)就是將 Apache2 重啟來(lái)使虛擬主機(jī)站點(diǎn)運(yùn)行起來(lái): sudo /etc/init.d/apache2 restart 這樣你在瀏覽器上輸入 的話,,就會(huì)被指向 /var/www/edunuke 目錄了,,而 輸入其他指向本機(jī)的域名則都會(huì)指到缺省配置中的 /var/www 目錄中。熟悉 Apache2 的朋友會(huì)問(wèn) 為什么這樣麻煩,,放在一個(gè)文件中不也是可以嗎,?為什么要用兩個(gè)文件呢?其實(shí)很簡(jiǎn)單,,因?yàn)槿绻?/p> 我要對(duì) edunuke 站點(diǎn)進(jìn)行維護(hù)時(shí),,我只要運(yùn)行命令: sudo a2dissite edunuke sudo /etc/init.d/apache2 restart 即可,這樣既可以維護(hù) edunuke 這個(gè)站點(diǎn),,同時(shí)還不影響其他站點(diǎn)的正常運(yùn)行,。 C高級(jí)配置 上面談了一下簡(jiǎn)單的虛擬主機(jī)配置方法。這個(gè)基本上能滿足我們大部分的需要,。但如果要是安裝 Zope+Plone 的話,,上面的這點(diǎn)設(shè)置是遠(yuǎn)遠(yuǎn)不夠的,由于 Zope+Plone 結(jié)構(gòu)所采用的端口并非是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 模塊的配置引導(dǎo)文件,,所以只需要簡(jiǎn)單地將其安裝到 Apache2 中即可,。使用命令: sudo a2enmod rewrite sudo a2enmod proxy 然后,添加虛擬主機(jī)站點(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> 這樣就安裝好了 虛擬主機(jī)站點(diǎn),,可以在瀏覽器中地址欄中輸入 就可以重定向到 Zope+Plone 站點(diǎn)去了,。 |
|