svn是一个功能强大的代码版本管理系统,能够将服务端安装在linux、unix以及windows下。svn一般采用http方式进行代码提交与下载。因为密码采用明文传输,所以存在泄密的风险。若采用https协议加密,则可大大提升安全性能。linux
在windows下配置基于apache的svn,带openssl0.9.8。可经过http或者https访问,或者只能经过https访问。部分资料从网上摘录,通过本人测试后,对部份内容进行了补充。apache
1、下载和安装windows
(一)下载安全
一、下载apache,在此我下载的是apache-2.2.11-win32-x86-openssl-0.9.8,该版本的apache自带了openssl。(2013年11月最新版已经更新到2.4.6)服务器
二、下载subversion,在此配置文档里我用的是1.6.4。可在官网上下载。svn
(二)安装 性能
安装apache和subversion; 测试
注:若是安装完apache以后出了no services installed的状况,请在cmd里进入到apache的bin目录,而后运行httpd.exe -k install -n apache2 便可。apache2根据本身apache的版本改变。 ui
2、建配置库及用户名。 加密
1、建配置库
在cmd命令里进入subversion的bin目录,而后输入
svnadmin create d:\svn\test
注:上层目录d:\svn\test必须存在。即在d盘下建svn\test文件夹。
运行此命令即建好一个库。打开以后可看到test空文件中多了下图所示的那些文件。
2、建用户名。
将apache设为环境变量,而后在cmd命令里进入apache\bin目录,执行如下命令便可。
初次建用户名:htpasswd -c [验证文件名] username
username对应咱们的用户名,而后输入密码便可。
增长用户名:htpasswd -m [验证文件名] username
删除用户: htpasswd -D passwd username 注:此处必须用大写的D。
3、配置过程
在此为止,咱们已经将客户端及服务器端的软件都安装好了,接下来就是配置过程了。
(一)配置能够经过http访问
一、打开subversion的bin目录,将下图所示的三个文件复制到apache的modules目录下。(由于apache自己不包含dav_svn.so和authz_svn.so模块。
注:若是apache的版本不是2.2.11,libdb44.dll的名字可能就是libdb**.dll。
二、由于apache和subversion的版本不对应,因此应将subversion的bin目录中的全部的dll文件复制到apache的bin目录里,在复制的过程当中,要让apache中止。
三、打开apache的conf目录里的httpd.conf文件进行修改。
(1)在LoadModule部分,首先将如下两行前面的#去掉。
#LoadModule dav_module modules/mod_dav.so
#LoadModule dav_fs_module modules/mod_dav_fs.so
(2) 在LoadModule部分添加如下两句,由于咱们前面只是将subversion中的dav_svn.so和authz_svn.so模块复制到apache的modules目录下,可是apache启动后并不会加载它,因此咱们添加如下两句,以便让apache会加载这两个模块。
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
(3)在httpd.conf文件的最后添加如下内容
<Location /repos>
DAV svn
SVNParentPath "d:\svn" # 库的路径。
SVNListParentPath on # 查看全部的库(即库列表)
AuthType Basic
#SSLRequireSSL #限制项目仓库只能经过https的形式进行访问,若只采用https访问,则去掉#
AuthName "svn repos"
AuthUserFile "D:\svn\passwd" #用户名及密码的存放路径,据本身的状况写。
AuthzSVNAccessFile "D:\svn\svnaccessfile" #权限文件的存放路 径,据本身的状况写。
Require valid-user
</Location>
到此为止经过http访问的全部的配置都已经完成。给用户权限便可经过http://ip:port/repos/test进行访问。
注: (1)ip:服务器的IP。
port:安装apache时咱们选择的端口。
repos:location后面的部分,根据本身的实际状况填写。
test:库的名称。
(2)在配置文件httpd.conf中添加内容时必定要注意在英文状态下输 入,不然会致使apache启动不了;另外上面#及#后内容必定要去掉。
(二)经过https访问或者只能经过https访问
打开apache的conf目录里的httpd.conf文件进行修改。
一、将如下三行的注释去掉,即去掉#。
#LoadModule authnz_ldap_module modules/mod_authnz_ldap.so
#LoadModule ldap_module modules/mod_ldap.so
#LoadModule ssl_module modules/mod_ssl.so
#注:系统缺乏文件mod_ssl.so,须要从网上下载并复制到modules目录,不然没法启动apache服务 下载mod_ssl.so
二、将如下行前面的注释去掉
#Include conf/extra/httpd-ssl.conf
改成Include conf/extra/httpd-ssl.conf
三、若是但愿只经过https访问,则应该前面Location部分的#SSLRequireSSL前面的#去掉。没有去掉的话是https和http形式均可以访问。
四、申请证书
在cmd命令进入到apache的conf目录,执行如下命令。
openssl genrsa -out server.key 1024 #生成密钥
openssl req -new -key server.key -out server.csr -config .\openssl.cnf #生成server.csr,此处须要从互联网下载openssl.conf文件,更名为openssl.cnf
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt #生成证书
生成证书时365是证书的有效期,可根据本身的状况进行填写。以上命令执行完以后会生成server.key ,server.csr,server.crt三个文件。
4、分配权限
在此文档我将权限文件命名为svnaccessfile,在其中添加权限内容。
内容以下:
[groups]
admin = username
dev =
...... #对应咱们所须要的组。
[/] #设置哪些组或用户能够查看库目录(全部的库的一个列表)
@admin=r
[test:/] #给库设置访问权限。
@admin =rw
@dev=r
[test:/xx/xx] #继续细分库的权限。
@admin = rw
到此为止,全部的配置都已经完成,咱们能够经过客户端进行平常工做了。