Monthly Archive for June, 2007

[轉載]Apache下的虛擬主機設置

作者:wind521
原出處:http://bbs.chinaunix.net/viewthread.php?tid=42980 (ChinaUnix論壇)

題目:Apache下的虛擬主機設置
發表: leaper
整理: wind521

摘要:本文介紹了WWW服務器的虛擬主機的工作原理,討論了在Apache WWW服務器下的各種虛擬主機、尤其是大規模虛擬主機的設置技術,並比較了各種方式的特點。
關鍵詞:Apache WWW Virtual Hosting 虛擬主機

一、WWW服務器虛擬主機原理
WWW服務器虛擬主機是指使用一台物理機器,充當多個主機名的WWW服務器。比如由一台機器同時提供http://www.company1.com, http://www.company2.com 等的WWW服務,而瀏覽這些WWW站點的用戶感覺不到這種方式下跟由不同的機器提供不同的服務有什麼差別。

使用WWW虛擬主機的好處在於,一些小規模的網站,通過跟其他網站共享同一台物理機器,可以減少系統的運行成本,並且可以減少管理的難度。另外,對於個人用戶,也可以使用這種虛擬主機方式來建立有自己獨立域名的WWW服務器,目前國內有很多公司都提供這種免費的服務。

WWW虛擬主機有兩種工作方式:

1.1 基於IP地址的虛擬主機方式
這種方式下,不同的主機名解析到不同的IP地址,提供虛擬主機服務的機器上同時設置有這些IP地址。服務器根據用戶請求的目的IP地址來判定用戶請求的是哪個虛擬主機的服務,從而進一步的處理。
缺點:基於IP地址的虛擬主機方式需要在提供虛擬主機服務的機器上設立多個IP地址,既浪費了IP地址,又限制了一台機器所能容納的虛擬主機數目。因此這種方式越來越少使用。但是,這種方式是早期使用的HTTP 1.0協議唯一支持的虛擬主機方式。

1.2 基於主機名的虛擬主機方式
由於基於IP地址的虛擬主機方式有如上的缺點,HTTP 1.1協議中增加了對基於主機名的虛擬主機的支持。具體說,當客戶程序向WWW服務器發出請求時,客戶想要訪問的主機名也通過請求頭中的「Host:」語句傳遞給WWW服務器。比如,www.company1.com, www.company2.com 都對應於同一個IP地址(即由同一台機器來給這兩個虛擬域名提供服務),客戶程序要存取http://www.company1.com/index.html時,發出的請求頭中包含有如下的內容:
GET /index.html HTTP/1.1
Host: www.company1.com
…..
WWW服務器程序接收到這個請求後,可以通過檢查「Host:」語句,來判定客戶程序請求是哪個虛擬主機的服務,然後再進一步的處理。
優點:提供虛擬主機服務的機器上只要設置一個IP地址,理論上就可以給無數多個虛擬域名提供服務,佔用資源少,管理方便。目前基本上都是使用這種方式來提供虛擬主機服務。
缺點:在早期的HTTP 1.0版本下不能使用。實際上現在使用的瀏覽器基本上都支持基於主機名的虛擬主機方式。

二、Apache服務器下的虛擬主機設置技術

2.1 Apache WWW服務器簡介
Apache WWW服務器是目前Internet上使用最廣的WWW服務器軟件。通過靈活的配置,它可以完成幾乎您想得到的功能。本文主要介紹在Apache 下設置各種虛擬主機的方法。

2.2 Apache WWW服務器下基於IP地址的虛擬主機設置
使用這種虛擬主機方式,首先要在服務器上為每個虛擬主機單獨設置一個IP地址。這些IP地址可以通過增加多個網卡或者在一個網卡上設立多個IP地址來完成。有了多個IP地址後,可以採用以下兩種方式之一來設置Apache:
2.2.1 為每個虛擬主機運行一份Apache
採用這種方式,每一份Apache程序可以以單獨的用戶運行,因此各個虛擬主機之間互不影響。設置這種虛擬主機時,只要為每一份Apache設置一套配置文件就可以了,唯一需要注意的是:必須使用「Listen」語句,強制每一份Apache 僅僅在屬於「自己」的IP地址上接收服務請求。
優點:各個虛擬主機之間互不干擾,安全性高。
缺點:佔用系統資源較多。

2.2.2多個虛擬主機共享同一份Apache
採用這種方式,各個虛擬主機共享同一份Apache,因此各個虛擬主機之間有一定的影響,尤其是執行CGI程序時,可能會帶來一些嚴重的安全問題。設置這種虛擬主機時,只要為每一個虛擬主機設置類似如下的信息即可
;
DocumentRoot /home/company1

;
優點:佔用系統資源比上一種方式少。
缺點:安全性低,每個虛擬主機仍然需要佔用一個IP地址。

2.3 Apache WWW服務器下簡單的基於名字的虛擬主機設置
這種方式下,各個虛擬主機共享同一份Apache,因此有CGI程序運行時,安全性也不高。設置這種虛擬主機時,只要為每一個虛擬主機設置類似如下的信息即可
NameVirtualHost 111.222.33.44 ; 在這個IP地址接收虛擬主機的服務
;
ServerName www.company1.com
DocumentRoot /www/company1
;
;
ServerName www.company2.com
DocumentRoot /www/company2
;
優點:只要一個IP地址就可以提供大量的虛擬主機服務。
缺點:安全性差。維護這些虛擬主機時需要更改配置文件,並且需要重新啟動Apache進程才能起作用。因此不適合進行大規模的虛擬主機服務。

2.4 Apache WWW服務器下基於名字的大規模虛擬主機設置
所謂大規模虛擬主機,是指能夠提供非常多的虛擬主機服務,比如能提供超過數十萬個域名的虛擬主機服務。如果使用以上討論的方法,是很難完成的。實現這種服務的一種方式是利用Apache 功能強大的URL重寫功能。下面以一個實例來說明這種方式。

2.4.1 Apache中URL重寫功能
Apache 1.2及以後版本都有URL重寫(Rewrite)功能。簡單的說,URL重寫功能就是在Apache接收到請求後,在處理的過程中能根據預先設定的規則,對請求中的URL進行修改。這些規則主要由正規表達式組成。重寫依賴於輸入的URL、各種服務器端環境變量、HTTP請求頭中的內容、時間,甚至可以通過外部的程序來使用數據庫中的信息來幫助重寫。
URL重寫功能非常強大,通過URL重寫,可以使Apache完成異常複雜的功能。當然,URL重寫功能本身也比較複雜,關於URL重寫功能的詳細說明可以參看Apache 的隨機文檔。

2.4.2 使用Apache中URL重寫功能實現基於名字的大規模虛擬主機設置
假設機器www.home.com提供名字形如abcde.home.com、hijk.home.com等的大規模虛擬主機服務。其中虛擬主機名必須是字母或數字,並且長度至少為3。為了防止一個目錄下文件或子目錄太多而對性能產生很大的負面影響,對用戶的目錄按照名字進行分級劃分,如虛擬主機abcde.home.com的相關文件存放在目錄/member/ab/de/abcde下面。其中「ab」、「de」分別是「abcde」的前邊兩個字符和最後兩個字符。當用戶請求http://abcde.home.com時,系統應該返回/member/ab/de/abcde下面的文件。下面是為了完成這種功能需要進行的設置:

1. 對域名服務器的設置
假設www.home.com的IP地址為202.103.190.57,在域名服務器DNS的home.com數據文件中增加一行:
——————————————————————————–
* IN A 202.103.190.57
——————————————————————————–
這樣,所有 *.home.com的IP地址都會被解析為202.103.190.57,就沒有必要為各個虛擬主機分別進行設置。

2. 對Apache的設置
首先使用命令「httpd -l」檢查mod_rewrite模塊是否已經編譯到Apache中,如果沒有,重新編譯Apache。
然後在Apache的配置文件httpd.conf中增加如下語句(其中以「#」開頭的為注釋):
——————————————————————————–
#禁止使用機器的正式名
UseCanonicalName off
#使能重寫功能
RewriteEngine on
RewriteMap lowercase int:tolower
# 為安全考慮,對CGI程序不進行重寫
RewriteCond %{REQUEST_URI} !^/cgi-bin/
# 對www.home.com不重寫,其他的重寫
RewriteCond ${lowercase:%{HTTP_HOST}} !^www\.home\.com(\.*)$
RewriteCond ${lowercase:%{HTTP_HOST}} ^[a-z0-9-]+\.home\.com(\.*)$
# 首先把機器名改為小寫,添加到請求的文件路徑前,並繼續處理
RewriteRule ^(.+) ${lowercase:%{HTTP_HOST}}$1 [C]
# 重寫請求
RewriteRule ^([a-z0-9])([a-z0-9])([a-z0-9])\.home\.com([\.]*)/(.*) /member/$1$2/$2$3/$1$2$3/$5
RewriteRule ^([a-z0-9])([a-z0-9])([a-z0-9]*)([a-z0-9])([a-z0-9])\.home\.com([\.]*)/(.*) /member/$1$2/$4$5/$1$2$3$4$5/$7
———————————————————————————
優點:只要一個IP地址就可以提供大量的虛擬主機服務,維護方便。
缺點:安全性低。上例為了增強安全性,禁止運行用戶自己的CGI程序。

2.5 Apache WWW服務器下的重定向虛擬主機設置
重定向虛擬主機是指僅僅提供重定向功能,而不實際存放用戶主頁數據的虛擬主機。比如,某站點有多個鏡像服務器,假設為www1.user.com、www2.user.com,…wwwn.user.com。這些服務器放在不同的網絡上,分佈於各地的客戶訪問這些服務器的速度也互不相同。而站點www.home.com通過虛擬域名user.home.com為這些鏡像的服務器提供虛擬主機服務。當客戶訪問http://user.home.com時,www.home.com根據用戶的IP地址、收集到的網絡拓撲結構信息,把客戶重定向到對該客戶來說訪問速度最快的站點。
重定向虛擬主機服務也可以通過使用URL重寫功能來完成。這裡僅給出簡單的重寫規則:
————————————————————————————
RewriteRule ^([a-z0-9]+)\.home\.com([\.]*)/(.*) /www/cgi-bin/nph-redirect.cgi/$1/$3 [T=application/x-httpd-cgi,L]
————————————————————————————
其中,nph-redirect.cgi為一個CGI程序,為了實現自動重定向,它需要產生完整的HTTP 應答頭信息。該程序通過環境變量PATH_INFO得到用戶請求的URL,通過環境變量REMOTE_ADDR得到用戶的IP地址,並根據網絡拓撲情況生成重定向信息,返回給客戶。

參考文獻:
1.Apache 1.3 User’s Guide http://www.apache.org

Virtual Hosting Setup Using Apache
Abstract:
There are two types of WWW Virtual Hosting, IP-based and Name-based. Those two types are introduced in this thesis, followed by some methods about WWW Virtual Hosting configuration under Apache and the difference between them is analyzed.

紀念諾曼底登陸63周年

1944,6,6,諾曼底(Normandie)登陸,人類歷史上最漫長的一天

登陸時場景:

羅馬特卡帕在諾曼底登陸時拍攝眾多圖片之一,但由於膠片暴光,只有下面這張保留下來,這也是最珍貴的諾曼底登陸戰地攝影之一

諾曼底登陸時間表
6月5日/6日 – 美第82空降師(迪特律行動)和第101空降師(芝加哥行動)以及英第6空降師(湯加行動)空降
6月6日 – D日搶灘登陸
6月25日至29日 – 埃普索姆行動,進攻卡昂西部,被德軍擊退
7月7日 – 佔領卡昂
7月17日 – 埃爾溫·隆美爾的汽車被加拿大皇家空軍噴火式戰鬥機掃射擊中,隆美爾受重傷
7月18日至20日 – 古德伍德行動開始
8月3日至9日 – 總計行動,一個俘獲德軍裝甲部隊的陷阱,開始
8月16日 – 龍騎兵行動,一個登陸法國里維埃拉的美法聯軍行動,開始
8月25日 – 盟軍攻佔巴黎
9月12日-諾曼底地區戰事結束

諾曼底登陸在第二次世界大戰歷史上具有極為重要的地位,它使第三帝國陷入兩面作戰的不利境地,從根本上,為歐洲大陸的解放奠定了基礎.艾森豪威爾在戰役開始前對參加戰役的美軍士兵說:你們即將開始一場偉大的征戰.這位美軍統帥因其 在1933年公然用槍鎮壓華盛頓廣場上為追討撫恤金而靜坐示威的一戰老兵 臭名昭著的行為而為我所不齒.但諾曼底登陸,毫無疑問, 是人類歷史上最偉大的戰役.

Copyright =Rubbish !

本人反對對互聯網絡內未經許可的內容複製做任何限制
這意味着,在互聯網範圍內,Copyright =Rubbish !

對這一點的堅持並不意味着對自日內瓦/巴黎公約以來的整個國際版權公約體系的徹底否定,但毫無疑問,其在相當大的範圍內已經變的不合適宜.如果創作/瀏覽/再創作的界限變得愈加模糊,那麼,固執於版權的規定將使得文明的進程受到嚴重滯後.

本人堅持認為,”署名”是對原始版權所有人的最好的,也應該是唯一的保護方式,在非商業性使用範疇內,任何內容複製或再創作都應該被允許.正因為如此,我推崇 CC-3.0署名-非商業性使用協議

求婚大作戰原聲大碟試聽

完整下載地址:Verycd.com下載
目前只有低質量mp3版本,如果有無損版本,我將上傳並提供本地Http下載

試聽:
10 希望
[coolplayer autoplay=”true” loop=”true” width=200]http://www.sakura-paris.org/download/music/propo/10.mp3[/coolplayer]

01 Rising Road(メインテーマ)
[coolplayer width=200]http://www.sakura-paris.org/download/music/propo/01.mp3[/coolplayer]

18 明日晴れるかな(Piano&Strings Version)
[coolplayer width=200]http://www.sakura-paris.org/download/music/propo/18.mp3[/coolplayer]


專輯曲目:

01 Rising Road(メインテーマ)
02 ハニーチーズ
03 夢追いランナー
04 Rainy Man
05 ささやかな願い
06 ハレルヤフラッシュ
07 彷徨う心
08 それもまた青春
09 Sugar
10 希望
11 ゴリ押しMy Way
12 セピアの教室
13 エビフライ
14 ダ ダ ダブルチャンス!
15 素直な気持ち
16 戀の大作戦
17 雨あがり
18 明日晴れるかな(Piano&Strings Version)
試聽

神創造天地

我發現我自己有接受洗禮的傾向,絢爛必然歸於平淡.在對自由主義的張揚達到極致後,回歸靈魂的至誠或許是不錯的選擇,就像當年瓦格納做的那樣.弗里德里希,尼采拒絕對現世的生活做任何妥協,但他的最終命運必然是悲劇.安瑟爾莫說:信仰而後存在.上帝永遠存在於我們心中

聖經,舊約,創世紀:起初,神創造天地
聖經,舊約,創世紀:你必為你的緣故受詛咒,你必終身受苦
聖經,舊約,出埃及記:我要把你們領進去,將那地賜予你們.我市耶和華
聖經,舊約,出埃及記,摩西十誡:不可祭拜別的神,因為耶和華是唯一的神
聖經,新約,馬太福音:瑪利亞從聖靈而懷孕,她要生一個兒子….將自己的百姓從罪惡中拯救出來
聖經,新約,約翰福音:太初有道,道與上帝同在,道就是上帝,這道太初與上帝同在.
聖經,新約,約翰福音:凡父所有的,都是我的.

看了求婚大作戰第7話

鬱悶.

多田還是向禮告白了,健三跟廢柴似的,回到過去這麼多次也沒有改變命運
吉田禮和岩賴健(三)的故事難道擺脫不了悲情結局嗎?

或許,要期待編劇的慈悲了

Gallery2使用入門指南 (1)

以下是文中可能用到的鏈接或參考資料
Sourceforge-Gallery主頁
直接下載Gallery(Version2.2.1-Full,SourceForge下載地址)
Gallery官方主頁
Gallery支持Wiki

Gallery2是目前最優秀的開源php+MySQL架構web圖片管理軟件,最新版本2.2.1.4( 2007.05.30發佈).內置多語言外觀包,對中文支持良好.外觀簡潔大方,支持FTP上傳後批量導入,是建立圖片網站最佳選擇.
(另一個著名的php圖片管理軟件是SMGP,這個軟件是基於php+TXT純文本的,對環境要求比較低,但功能比較弱,也不靈活,對界面顯示自定義只能通過修改index.htm文件後FTP上傳,不非常推薦)

遺憾的是,Gallery中文支持資料比較少,不想Drupal,mediawiki,WP等開源程序,有豐富的中文支持資料.於是本人從Gallery Wiki上找了點可能有用的信息,整理在這裡.

1.安裝Gallery2.2.1.4版本
通過FTP上傳,或通過SSH/telent wget後解壓縮後,即可照常規程序開始安裝.注意請先準備好mySQL數據庫(推薦3.23版本以上),並設置Gallery目錄下所有文件權限為755以上.Gallery會自動檢測瀏覽器語言,支持中文,過程非常簡單.

2.開通FTP上傳圖像(本地文件系統導入功能)
當然可以用web上傳,不過這種效率極低的事情相信大家和我一樣也不會做的.Gallery可以通過插件Item Add module支持本地文件系統導入圖片.注意這個插件在 gallery2中 非Full版本不自帶!,需要手工下載安裝:
瀏覽器登陸Gallery-網站管理(Site Admin)-Plugins-Get More Plugins -Download Plugins List,根據提示下載並自動安裝” 添加項目'(Item Add)組件即可.程序會自動啟用這個插件.
接下來在Site Admin面板中 “導入” (import)欄出現 web/server 選項,在這裡把您FTP上傳後的遠程服務器文件 夾絕對路徑添加進來,程序會自動顯示Gallery安裝目錄絕對路徑.
例如,添加”/home/yourname/images/”
然後可以在主頁(main.php)中,單擊”添加項目”(add item)-“從本地服務器”,按提示操作即可

我在使用中發現,Gallery會把FTP上傳目錄中圖片文件複製到Gallery的圖片存儲目錄(在安裝時設定的,默認為Gallery安裝目錄下面g2data文件夾,可以不是web所在目錄).這在上傳圖片比較多時候可能由於php執行時間限制而導致導入失敗)