linux系統下的apache2如何配置虛擬主機
1,起因
在一星期前吧,大波說已然我們有了自個的服務器,二級域名了。能夠思考如何每人一個域名,別離指向我們各自的空間。主意挺好,避免我們個人的東西放在同一主頁上。那就做吧
2,第一次嘗試
(1)在域名在萬網買的,他們有個服務是支持泛域名解析。選擇這個服務后,所有的三級域名 ?www.*.xin3e.com 都可以指向 ?www.xin3e.com的IP地址。
(2)按照這個鏈接的方法進行嘗試:http://hsst.blog.sohu.com/52046690.html
因為Ubuntu下,Apache2的配置文件及目錄結構不大一樣,所以mods-avalilable下的是可用的模塊。而真正啟用了的模塊是在mods-enable目錄底下的。自己創建軟連接實現啟用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實則為sites-available/default的鏈接,而AllowOverride None則會完全忽略.htaccess文件,rewrite規則就不能生效
(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文件的操作。 原apache2的httpd.conf文件是空的,現只保留ServerName localhost
(2)配置虛擬主機的目錄。
什么是虛擬主機(Virtual Host)。所謂的虛擬主機,基本上就是“讓你的一臺服務器上,有好多個‘主頁面’存在。也就是說,硬件實際上只有一臺主機,但由網址上來看,則視乎有好多臺主機存在的樣子”。舉個例子:
www.xin3e.com ==> IP/www/index.php
IP/www目錄下還有IP/www/zyb,IP/www/fb兩個目錄。那么:
www.zyb.xin3e.com ==> IP/www/zyb
www.fb.xin3e.com ==> IP/www/fb
兩個域名指向同一IP地址,進去則是不同的信息內容。這就是虛擬主機的主要功能,它可以讓你的多級域名對應不同的主網頁目錄(DocumentRoot 參數),所以看起來像有多臺實際主機的樣子。
有1)基于IP地址的虛擬主機配置,2) 基于IP和多端口的虛擬主機配置,3)單個IP地址的服務器上基于域名的虛擬主機配置,4)在多個IP地址的服務器上配置基于域名的虛擬主機。今天只展示單個IP地址的服務器上基于域名的虛擬主機配置。
(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中涉及到的相關選項說明:
ServerName (設定虛擬主機的名稱)
DocumentRoot (指定虛擬主機的網站主目錄)
ServerAlias (設定虛擬主機的別名)
ErrorLog (虛擬主機發生錯誤時要記錄在哪個目錄,可不設)
(4)保存,重啟apache2
sudo /etc/init.d/apache2 restart
(5)測試,成功。
補白:這是大波一星期前給我提的想法,上星期嘗試失利后,一星期沒找到合適的時刻。今天給了個了解。本來虛擬主機裝備中通常都包括進行目錄的具體裝備,但我還不甚了解其效果和必要性。暫時未處理。