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执行时间限制而导致导入失败)