红联Linux门户
Linux帮助

Apache2/SSL+Subversion+PAM认证服务器配置

发布时间:2005-06-09 00:45:30来源:红联作者:火
作者:王旭 http://gnawux.blogchina.com (2005-05-18 14:06:40)
这两天刚配的,在 newsmth 讨论了几个相关问题,响应了一下号召,写这个
配置说明

概要:服务器使用 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


修改 ssl 文件的开头为

NameVirtualHost *: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 文件就可以了,下同)加上


DAV svn
SVNPath /var/lib/svn/repos

#AuthType Basic
#AuthName "Subversion Realm"
#require group src


这样,重启 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 服务器已经配置完成了,看完这个长篇不容
易,希望能对你有所帮助。
文章评论

共有 2 条评论

  1. sayeasy 于 2013-08-29 17:11:58发表:

    谢谢

  2. 657129880@qq.co 于 2013-04-21 18:03:50发表:

    谢谢分享!!!