linux系統(tǒng)下的apache2如何配置虛擬主機(jī)
1,起因
在一星期前吧,大波說已然我們有了自個(gè)的服務(wù)器,二級(jí)域名了。能夠思考如何每人一個(gè)域名,別離指向我們各自的空間。主意挺好,避免我們個(gè)人的東西放在同一主頁(yè)上。那就做吧
2,第一次嘗試
(1)在域名在萬網(wǎng)買的,他們有個(gè)服務(wù)是支持泛域名解析。選擇這個(gè)服務(wù)后,所有的三級(jí)域名 ?www.*.xin3e.com 都可以指向 ?www.xin3e.com的IP地址。
(2)按照這個(gè)鏈接的方法進(jìn)行嘗試:http://hsst.blog.sohu.com/52046690.html
因?yàn)閁buntu下,Apache2的配置文件及目錄結(jié)構(gòu)不大一樣,所以mods-avalilable下的是可用的模塊。而真正啟用了的模塊是在mods-enable目錄底下的。自己創(chuàng)建軟連接實(shí)現(xiàn)啟用rewrite模塊。
sudo ln -s /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabled/rewrite.load
(3)sudo vi /etc/apache2/sites-enabled/000-default
將其中所有的AllowOverride None 修改成 AllowOverride All.
備注:000-default實(shí)則為sites-available/default的鏈接,而AllowOverride None則會(huì)完全忽略.htaccess文件,rewrite規(guī)則就不能生效
(4)在httpd.conf文件末尾加上類似以下配置:
RewriteEngine on RewriteCond %{HTTP_HOST} ^[a-zA-Z0-9]+\.xin3e\.com$ RewriteRule ^$ /%{HTTP_HOST} RewriteRule ^/([a-zA-Z0-9]+)\.xin3e\.com/?$ /web/zyb/index [R]
(5)重啟apache,沒有效果。
3,第二次嘗試
(1)刪除上一次第(4)步在httpd.conf文件的操作?! ≡璦pache2的httpd.conf文件是空的,現(xiàn)只保留ServerName localhost
(2)配置虛擬主機(jī)的目錄。
什么是虛擬主機(jī)(Virtual Host)。所謂的虛擬主機(jī),基本上就是“讓你的一臺(tái)服務(wù)器上,有好多個(gè)‘主頁(yè)面’存在。也就是說,硬件實(shí)際上只有一臺(tái)主機(jī),但由網(wǎng)址上來看,則視乎有好多臺(tái)主機(jī)存在的樣子”。舉個(gè)例子:
www.xin3e.com ==> IP/www/index.php
IP/www目錄下還有IP/www/zyb,IP/www/fb兩個(gè)目錄。那么:
www.zyb.xin3e.com ==> IP/www/zyb
www.fb.xin3e.com ==> IP/www/fb
兩個(gè)域名指向同一IP地址,進(jìn)去則是不同的信息內(nèi)容。這就是虛擬主機(jī)的主要功能,它可以讓你的多級(jí)域名對(duì)應(yīng)不同的主網(wǎng)頁(yè)目錄(DocumentRoot 參數(shù)),所以看起來像有多臺(tái)實(shí)際主機(jī)的樣子。
有1)基于IP地址的虛擬主機(jī)配置,2) 基于IP和多端口的虛擬主機(jī)配置,3)單個(gè)IP地址的服務(wù)器上基于域名的虛擬主機(jī)配置,4)在多個(gè)IP地址的服務(wù)器上配置基于域名的虛擬主機(jī)。今天只展示單個(gè)IP地址的服務(wù)器上基于域名的虛擬主機(jī)配置。
(3)修改配置文件 /etc/apache2/sites-available/default
添加:
<VirtualHost *:80> ServerName www.zyb.xin3e.com DocumentRoot /home/normal/website/zyb ServerAlias zyb.xin3e.com ErrorLog /var/log/apache2/error-zyb.xin3e.com.log </VirtualHost>
Apache中涉及到的相關(guān)選項(xiàng)說明:
ServerName ?。ㄔO(shè)定虛擬主機(jī)的名稱)
DocumentRoot (指定虛擬主機(jī)的網(wǎng)站主目錄)
ServerAlias ?。ㄔO(shè)定虛擬主機(jī)的別名)
ErrorLog (虛擬主機(jī)發(fā)生錯(cuò)誤時(shí)要記錄在哪個(gè)目錄,可不設(shè))
(4)保存,重啟apache2
sudo /etc/init.d/apache2 restart
(5)測(cè)試,成功。
補(bǔ)白:這是大波一星期前給我提的想法,上星期嘗試失利后,一星期沒找到合適的時(shí)刻。今天給了個(gè)了解。本來虛擬主機(jī)裝備中通常都包括進(jìn)行目錄的具體裝備,但我還不甚了解其效果和必要性。暫時(shí)未處理。