妙用Apache虚拟主机

如果在本地要同时测试多个网站, 通过子目录的方式访问有些不方便. 而只通过IP地址访问则无法同时访问多个站点. 这里我们就通过httpd server的虚拟主机功能和修改本地DNS文件来模拟通过域名来访问本地的多个测试站点.

这里以apache2为例, 其他的httpd server只要支持虚拟主机也可以使用这样的方法.

首先修改本地DNS解析文件,这样我们就可以通过域名来访问本地站点.

Windows:

1
C:\windows\system32\drivers\etc\hosts

Linux: ubuntu, fedora

1
/etc/hosts

增加新的解析如:

1
2
3
#ip                         url
192.168.1.1       www.tairan.net
192.168.1.1       www.51xna.com

Note: 这里的域名要跟虚拟主机配置中的ServerName保持一致

基于ServerName的虚拟主机配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
NameVirtualHost     *:80
<VirtualHost *:80>
        ServerName www.tairan.net
        ServerAdmin    webmaster@tairan.net
        DocumentRoot /var/www/tairan.net
        ErrorLog  logs/tairan.net-error_log
        CustomLog logs/tairan.net-access_log common
</VirtualHost>
<VirtualHost *:80>
        ServerName www.51xna.com
        ServerAdmin webmaster@51xna.com
        DocumentRoot /var/www/51xna.com
        ErrorLog logs/51xna.com-error_log
        CustomLog logs/51xna.com-access_log common
</VirtualHost>

设置完毕, 重启apache. 然后就可以通过我们指定的域名来访问在本地的网站了.

另外虚拟主机还可以基于IP设置, 在这里并不适合我们使用.

其他关于虚拟主机的配置参见 Apache document


Don’t up-to-date

不要最新的!

貌似很多程序员都喜欢尝新,不停的追赶这语言那技术。此时之前,我也是其中的一份子,而且还比较狂热。这几天遇到的一些事情让我懂得,最新的不一定是最合适的。

说说是什么事情让我停止狂热的追赶最新的东西吧:
现在Python 3.0 已经发布一段时间了,并且大叔告诉我们现在还有很多周边软件没有跟上,所以除非是新项目,还是保守点选择2.6 比较合适。于是乎,就选择2.6.1吧
谁知 安装 trac 以及相关软件的时候,有个装不上,>_< 因为忘记记录存档想不起是哪个软件了,真对不起自己和大家!

再说说Apache吧,一直都选择2.2.x来玩,搭建SVN服务器等。CollabNet 做的集成包真的很好用,安装也简单!可用这个Apache2.2 安装 MOD_SCGI 却死活启动不了服务,从Google的结果来看,虽然有人提出自己编译MOD_SCGI for Apache 2.2,可也是意淫了一下说:“应该很容易”,– 谁不知道在Windows 上玩这些成本有多高!
无奈退而求其次,有换了个Apache2.0.x用用。

盲目的求新会走很多弯路不过也能获得一些经验! 兰迪教授说:当得不到想得到的东西时,就得到了经验。

虽说不要最新的,也没说一直守旧不前进,使用开源软件时最好用当前版本的前一个次版本最佳。 一来是软件经过了一段时间的考验,二是周边的软件也都跟上了。不至于走两步退一步。

===========================
Trac + Apache + SCGI 的安装方法比较容易,性能稳定方面自己倒是没有测试过。主要参考了这篇文章 Subversion无痛起步 — Trac 0.10b1 + Apache 2


Apache2 + Subversion 配置备忘

http.conf
#———————–
# 路径可以使用绝对路径,也可以使用apache的相对路径。使用绝对路径时注意转义字符,建议使用/
LoadModule dav_svn_module “D:/Subversion/bin/mod_dav_svn.so”LoadModule authz_svn_module “D:/Subversion/bin/mod_authz_svn.so”
#———————–

DAV svn
SVNParentPath “D:/Subversion/Repository” #仓库路径
AuthType Basic
AuthName “Subversion Repository of Hacker’s Story”
AuthUserFile “D:/Subversion/passwd” #使用apache htpasswd 程序生成用户名密码
AuthzSVNAccessFile “D:/Subversion/accesspolicy” #用户分组和权限管理
Satisfy Any
Require valid-user

accesspolicy
[groups]
admin = daniel #分组

[/]* = r #指定版本库,支持多个版本库设置
@admin = rw #权限控制