懶的更新到blogger了

本站2010年10月以後的,都更新到google docs上了:
連結在這裡

2006/05/21

[心得]apache 使用 VirtualHost

參考:
http://httpd.apache.org/docs/2.2/en/vhosts/

大概是說 Virtual Host 有兩種方法,
1是 IP-based......也就是以 ip 去分辨網站 ─ 如果電腦有多個 ip 可用這個方法
2.是name-based......也就是以 網站名稱 去辨識 ─ 如果只有一個 ip 可是想架多個網站,可用此方法
(例如 url.to.siteX 和 rul.to.siteY 都指向同一ip,但用siteX連上和用siteY連上,會導到不同網頁
,不過先決條件是 DNS
那邊要設定好了…這是當然的^^ )

我個人遇到的情況多屬於第2種,所以就練習這一方法。

*安裝
今天忽然心血來潮,想自己編一個 apache 出來 (以前都用現成的)
就去抓了原始碼,(2.2.2版)
./configure --help
之後,發現有很多的選項,不過我只想改安裝路徑,所以就
./configure --prefix=$HOME/apache2
等…等…等…一小段時間後
make
再等…等…等…一小段時間後
make install
小等……ok,成功了。

*設定
在 conf/ 裡有 httpd.conf ,大概都有預設值了,把 #ServerName 的 # 拿掉,改成
ServerName localhost

*啟動
就馬上開始吧
bin/apachectl start
瀏覽器連上去……http://localhost/……It works!......感覺真好 ^^

*設定 VirtualHost
這個版本有 VirtualHost的範本,放在 conf/extra/httpd-vhosts.conf
不過要使用這個檔,要先把 conf/httpd.conf 裡面的 #Include conf/extra/htpd-vhosts.conf 的 # 拿掉

因為我只拿本機測試,所以名稱(/etc/hosts)設定如下
127.0.0.1 localhost
127.0.0.1 local8000 (為何用8000,只是忽然想到,就用了)
127.0.0.1 local8001

localhost 的網站在 /path/to/apache/htdocs/ (預設值)
local8000 的網站要在 /path/to/apache/htdocs8000/
local8000 的網站要在 /path/to/apache/htdocs8001/

設定檔(conf/extra/httpd-vhosts.conf)如下:

# - - - - - 開始 httpd-vhosts.conf - - - - -

#↓這裡應該也可以用 127.0.0.1:80 ,不過它預設用 *:80 ,我就沒改了
NameVirtualHost *:80

#本來這個我沒有打,結果連localhost反而跑到8000那一台去了,所以補上來
#也就是說,當啟用了NameVirturlHost後,就一定會從VirtualHost裡找…???
#它的目錄相關設定在 httpd.conf 裡,我沒有特別修改,也沒加到這裡
#如果是用 localhost 進來的人,就進到 htdocs

ServerAdmin root@localhost
DocumentRoot /path/to/apache/htdocs
ServerName localhost


#如果是用 local8000 進來的人,就進到 htdocs8000

ServerAdmin root@local8000
DocumentRoot /path/to/apache/htdocs8000
ServerName local8000
ErrorLog logs/vhost_8000_log
CustomLog logs/vhost_8000_log common

Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all



#如果是用 local8001 進來的人,就進到 htdocs8001

ServerAdmin root@local8001
DocumentRoot /path/to/apache/htdocs8001
ServerName local8001
ErrorLog logs/vhost_8001_log
CustomLog logs/vhost_8001_log common

Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all



# - - - - - 結束 httpd-vhosts.conf - - - - -

第一次設定時,忘了加上 相關選項,結果被拒絕存取了

*測試
http://localhost/ → It works! (原來的index.html檔)
http://local8000/ → It works!8000 (我修改過的 index.html檔)
http://local8001/ → It works!8001 (我修改過的 index.html檔)
感覺真好~

沒有留言: