最近决定把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库了。 (责任编辑:IT) |