Zero159

走在18%灰的半調子

最近發現有些網站設定資料的時候都不接受使用IP網址,反正剛好也向no-ip申請了免費的domain name,所幸就把網站架幾個虛擬主機吧,這樣也不用在使用IP加上子目錄的網址了。首先,設定虛擬主機的目的是一台主機上只有一組IP,但是希望架設多個站並且使用多個不同的網址(不同網址指向不同的網頁目錄),例如IP一樣都是123.123.123.123,但是想要架設個人相簿以及blog網站分別使用不同的網址:http://myphoto.com,http://myblog.com。除此以外也有可能是一台主機有很多的IP都想指定到特定的網址,在這些情況下都可以設定虛擬主機來達到目的(建議參考:虛擬主機)。


  1. 首先打開C:\apache2\conf中的httpd.conf,接著找出以下這行
    #Include conf/extra/httpd-vhosts.conf   
    將此行前的#去掉來引入虛擬主機設定檔httpd-vhosts.conf,但是其實也可以直接將下面步驟的設定直接加再httpd.conf中,只是透過引用外部的設定檔會比較好管理啦。


  2. 接著設定網頁目錄的權限,將以下的設定加入到httpd-vhosts.conf(權限的設定似乎不是必要的,但是我的經驗只要沒有設定就沒辦法跑出網頁來,所以還是要加一下,反正也沒有什麼壞處)。
    <Directory "C:/apache2/htdocs/myblog">//虛擬主機的根目錄。
    Options FollowSymLinks        //以下都是權限的設定
    AllowOverride None
    Order allow,deny
    Allow from all
    </Directory>


  3. 最後加入虛擬主機的設定,看你想設定幾個虛擬主機就加入幾個。
    NameVirtualHost *:80 //如果只有一個IP然後對應到不同的網址則需要打這行
    <VirtualHost *:80> //虛擬主機所對應的IP,如果主機只有ㄧ組IP就用*即可
    DocumentRoot C:/apache2/htdocs/myblog //虛擬主機所對應的根目錄
    ServerName myblog.com //對應的Domain name,也就是你申請的網址
    </VirtualHost>
    已上是最少需具備的參數設定,VirtualHost中還由提供其他的設定可以使用如Errorlog 。
    (注意:如果主機上有多組IP且各自對應到一個網址則NameVirtualHost *:80 可以不用打,但是<VirtualHost *:80>中的*要改成特定的IP如123.123.123.123。另ㄧ個情況是有多的IP,但是每個IP也對應到多個網址則以上兩項的都要具備且*都要改成特定的IP)


這樣就完成簡單的虛擬主機設定了,但是記得前提是你要有自己的Domain Name也就是網址,不是自己在server上自己打自己爽的喔。網址的申請可以向有提供DNS(Domain Name Service)服務的ISP廠商如hinet,seednet或是網路空間主機的廠商也都有提供DNS的服務,大部分都要付費的,當然也有免費的,但是免費的網址名稱通常都不能挑自己喜歡好記的。申請完後再設定這個網址所指向的IP就可以了。



edit post

3 Reply to "[Apache] 設定虛擬主機(Virtual Host)"

匿名 on 2011年12月11日 晚上10:37

那請問一下 這樣httpd.conf 設定要改嗎 servername?

kowey.lin@msa.hinet.net
3Q

 

楓之舞 on 2013年9月11日 上午11:33

您好!!我在第一步將#Include conf/extra/httpd-vhosts.conf 拿掉#要重新啟動APACHE的時候無法啟用,請問我可以如何解決???

 

匿名 on 2014年10月2日 下午6:27

Oh!!!
I can't use it

 

張貼留言