最近决定把svn从外包公司的SVN服务器上迁移到我们自己的linux服务器上,通过查询资料和实践获得了linux下配置apache+svn+ssl的经验。本文分享一下这个经验。
环境:
centos 5.4_x64
apache 2.2.8
subversion-1.4.2
安装过程:
1、安装apache
# ./configure –prefix=/usr/local/apache –enable-so –enable-dav=shared –enable-dav-fs=shared –enable-dav-lock=shared –enable-ssl=shared
make
make install
如果这台apache不做其他使用,这个配置就已经足够
2、安装subversion
进入subversion-1.4.2目录,然后执行以下命令:
subversion-1.4.2]# ./autogen.sh #建议先执行此领命,subversion会进行初始化,以防make的时候报错
subversion-1.4.2]# ./configure –with-apxs=/usr/local/apache/bin/apxs –with-apr=/usr/local/apache/bin/apr-1-config –with-apr-util=/usr/local/apache/bin/apu-1-config –with-ssl
subversion-1.4.2]# make
subversion-1.4.2]# make install
到此,安装工作就很顺利地已经完成了。
下面进入配置阶段:
1、apache的配置
正常安装下
LoadModule dav_module modules/mod_dav.so
LoadModule dav_fs_module modules/mod_dav_fs.so
LoadModule dav_lock_module modules/mod_dav_lock.so
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
LoadModule ssl_module modules/mod_ssl.so
这几个module保证不是被注释的,另外找到
Include conf/extra/httpd-dav.conf
Include conf/extra/httpd-ssl.conf
这两行,去掉前面的注释。
编辑conf/extra/httpd-dav.conf,加入如下内容,其余内容可以全部删除
#是在url或者svn客户端上指定的访问路径
DAV svn #声明svn
SVNParentPath /data1/svn #用来表示共同的父目录,所有不同的版本库都是存放在此目录下
AuthzSVNAccessFile /data1/svn/authz #指定保存路径中的版本库访问策略文件
AuthType Basic #往下是apache的简单认证方式,及密码文件存放位置
AuthName “Subversion repository”
AuthUserFile /data1/svn/htpasswd
Require valid-user
编辑完成后保存退出,由于http访问的方式密码传输是明文的,所以还需要配置ssl进行加密传输
配置ssl,需要以下几个步骤:
第一步,创建key和request:
openssl req -new > new.cert.csr
第二步,从key中删除passphrase(可选):
openssl rsa -in privkey.pem -out new.cert.key
第三步,把request转换成signed sert:
openssl x509 -in new.cert.csr -out new.cert.cert -req -signkey new.cert.key -days 1825
第四步,把cert和key文件拷贝到适当的位置:
cp new.cert.cert /usr/local/apache/conf/server.crt
cp new.cert.key /usr/local/apache/conf/server.key
注:如果你没有在第二步从key中把passphrase删除,那么每次你启动apache的时候你都要输入密码。这也就意味着如果你的服务器因为某些原因重新启动了,除非你在服务器旁手动敲入了密码,否则你的web服务器就不会启动。
到此,apache的配置就完成了。
2、subversion的配置
在/data1/svn下创建authz文件,内容如下
[group]
test=abc
[test:/]
@test=rw
保存退出
设置abc的密码
/usr/local/apache/bin/htpasswd –bc /data1/svn/htpasswd abc 12345678
这样就会在/data1/svn下创建htpasswd文件,内容如下:
abc:gtnqpowogqB/Y
密码采用加密的方式。
创建test库:
svnadmin create /data1/svn/test
到此启动apahce就可以测试了:https://ip/svn/test,同样也可以使用svn客户端来访问svn list https://ip/svn/test,输入用户名密码后就可以访问新建的test库了。
详细出处参考:http://www.frostsky.com/2011/03/linux-apache-svn-ssl/