概要:服务器使用 apache2+ssl+svn+auth_pam 构建,具有如下特点:
* 建立在 debian/apache2 的基础上
* subversion 1.1
* mod_dav_svn 使得 subversion 可以通过web访问
* 使用 openssl 保障系统的安全性
* 使用 mod_pam 和 mod_sys_group,使用系统的用户名密码来验证用户
目录
====
1 安装软件
2 配置 apache2/SSL
3 配置 apache2/SVN
4 配置 PAM
5 总结
安装软件
========
如果你和我一样用 Debian 的话,只要安装这几个包就可以了:
apache2
apache2-common
apache2-mpm-prefork
apache2-utils
libapache2-svn
libapache2-mod-auth-pam
libapache2-mod-auth-sys-group
subversion
subversion-tools
openssl 会根据依赖性自动被安装,如果你有要移植到 subversion 的 CVS 项目,
可以安装
cvs2svn
可以轻松转换,不过这个不在本文讨论范围内,略了。安装这几个之后就可以开始
了。
配置 apache2/SSL
================
如果你不用 ssl 保障安全的话,跳过这部分就可以了,基本上不妨碍完整性(实际
上还是差一点的)。首先生成一个 SSL 签名,使用命令
# apache2-ssl-certificate
这里会有一系列关于你的个人隐私的问题,回答完了,自然的签名也就生成了,然
后我们就要在 apache2 里面打开 SSL 了,现在要做的是开启 ssl 模块
# a2enmod ssl
然后,使用 apache2 的虚拟主机功能来添加 SSL 的支持,将
/etc/apache2/sites-available/default
复制一份,叫
/etc/apache2/sites-available/ssl
好啦
修改 default 文件的开头为
NameVirtualHost *:80
<VirtualHost *:80>
修改 ssl 文件的开头为
NameVirtualHost *:443
<VirtualHost *:443>
这里 443 是 SSL 的标准端口。
并在 ssl 文件中加入如下内容
SSLEngine On
SSLCertificateFile /etc/apache2/ssl/apache.pem
保存文件后,运行命令
# a2ensite ssl
来激活这个虚拟主机
现在,修改文件
/etc/apache2/ports.conf
加上一行
Listen 443
好了,到此为止,SSL 服务器配置完成,重新启动 apache 吧。执行
# apache2ctrl -k restart
就可以了
配置 apache2/SVN
================
首先,我假设你有一个 subversion 的软件仓库了,如果没有的话,建一个吧,或
者用 cvs2svn 转换一个过来。
# svnadmin create /var/lib/svn/repos
或
# cvs2svn -s /var/lib/svn/repos /var/lib/cvs/oldrepos
让这个目录属于 src 组,并把 www-data 加入 src 组,让 svn 仓库可以被 apac
he 访问
# chgrp -R src /var/lib/svn
# chmod -R g+w /var/lib/svn
# adduser www-data src
然后,在 apache2 那里打开 svn 的支持
# a2enmod dav_svn
在
/etc/apache2/sites-available/ssl
里(如果没使用 ssl 就改 defaults 文件就可以了,下同)加上
<Location /repos>
DAV svn
SVNPath /var/lib/svn/repos
#AuthType Basic
#AuthName "Subversion Realm"
#require group src
</Location>
这样,重启 apache2 之后,就可以通过 https 访问你的代码仓库了,至于其中的
鉴权部分,我们在下一个部分再介绍。
配置 PAM
========
激活鉴权用的两个模块
# a2enmod auth_pam
# a2enmod auth_sys_group
这样就可以用本地用户和组对 web 访问的用户进行鉴权了,对于使用了 shadow 密
码的用户,需要让 apache2 可以访问 shadow 文件
# adduser www-data shadow
然后在 apache2 的配置文件里面把刚才注释掉的行打开
AuthType Basic
AuthName "Subversion Realm"
require group src
就可以对用户进行鉴权了,AuthName 是可以任意指定的。这里,凡是 src 组的成
员都可以访问 subversion 仓库,当然也可以对用户鉴权
require user gnawux
重新启动 apache2, 访问一下看看吧
https://yourhostname.yourdomain/repos/
https://yourhostname.yourdomain/repos/
总结
====
取一下代码看看吧
$ svn co --username yourname https://yourhostname.yourdomain/repos/trun
k localdir
好了,到现在为止,你的 subversion 服务器已经配置完成了,看完这个长篇不容
易,希望能对你有所帮助。