下载svn 最新服务器端:http://sourceforge.net/projects/win32svn/
下载svn 最新客户端:http://tortoisesvn.net/downloads.html 或http://sourceforge.net/projects/tortoisesvn/
svn服务封装工具:http://download.csdn.net/detail/nicaiwa/3751587
sourceforge 没有官网的更新快,所以最好还是下载http://tortoisesvn.net/downloads.html 的最新版本。
下载完后进行安装。
安装以后,建立svn库,示例以C:\svn\repository 为svn总库,测试用svn命令建立svn库:svnadmin create c:\svn\repository\test
将svnservice.exe放在subversion的bin目录下,执行:SVNService -install -d -r C:\svn\repository
显示:
SVNService installed.
Commandline set: "-d" "-r" "C:\svn\repository"
就说明服务安装成功了,然后开始=》运行》services.msc 或者 win+r services.msc
找到SVNService ,改为自动并启动。
然后用svn客户端:访问svn://localhost/test ,如果访问没有报错说明配置成功。
//以上黄色部分,如果不会svn协议和对每个库下的passwd,authz单独进行配置,请不要进行设置,否则会造成,使用svn协议可以访问任意内容的漏洞
顺便在C:\svn\repository 建立一个权限控制文件authz,文件内容:
[test:/]
zero=rw
在Subersion的bin下面找到:
mod_authz_svn.so
mod_dav_svn.so
然后拷贝到:C:\Program Files\Apache Software Foundation\Apache2.2\modules(apache的modules文件夹下)
再cmd到Apache的bin目录:
C:\Program Files\Apache Software Foundation\Apache2.2\bin>htpasswd.exe -cb htpasswd
zero zero
Adding password for user zero
C:\Program Files\Apache Software Foundation\Apache2.2\bin>htpasswd.exe -b htpasswd n
icaiwa zero
Adding password for user nicaiwa
这样就在C:\Program Files\Apache Software Foundation\Apache2.2\bin下建立了两个用户的配置文件htpasswd,将htpasswd拷贝到C:/svn/repository/
然后修改apache 的配置文件httpd.conf
找到dav_module去掉注释#
并在该行后加上:
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
在配置文件最后加上:
<Location /svn>
DAV svn
SVNParentPath C:/svn/repository #SVNParentPath为多库,SVNPath为单库
SVNListParentPath On
AuthzSVNAccessFile C:/svn/repository/authz
AuthType Basic
AuthName "Subversion repositories test"
AuthUserFile C:/svn/repository/htpasswd
Require valid-user
</Location>
配置好后,重启apache 服务,apache的状态栏有svn和dav就说明配置成功了,下面测试访问:http://localhost/svn/
输入账号密码,看到test就说明你配置成功了。
由于我们公司使用的ldap 认证,不需要user文件,下面再解释一下配置ldap认证:
首先启动ldap:
LoadModule authnz_ldap_module modules/mod_authnz_ldap.so
LoadModule ldap_module modules/mod_ldap.so
将:
AuthType Basic
AuthName "Subversion repositories test"
AuthUserFile C:/svn/repository/htpasswd
Require valid-user
替换为:
AuthType Basic
AuthName "myproject subversion repository"
AuthBasicProvider ldap
AuthzLDAPAuthoritative on
AuthLDAPURL "ldap://ldap服务器ip:389/DC=sc-forward,DC=cn?sAMAccountName?sub?(objectClass=*)" NONE
AuthLDAPBindDN "CN=用户名,CN=Users,DC=sc-forward,DC=cn"
AuthLDAPBindPassword "密码"
Require valid-user
将ldap服务器ip,用户名,密码替换为你相应的数据。
配置好后重启apache服务。
再测试登陆:http://localhost/svn/test 访问成功。
如果389不行的话试试换为3268,曾经在linux配置遇到过这个问题。
**********************************
配置ssl 参考了http://bbs.iusesvn.com/thread-158-1-1.html
**********************************
1.首先在apache 配置文件中开启ssl支持
LoadModule ssl_module modules/mod_ssl.so 去掉#
Include conf/extra/httpd-ssl.conf 去掉#
2.生成证书
有两种方式:1.自己手动输入命令,2.用批处理输入相关参数(下载地址:http://download.csdn.net/detail/nicaiwa/3832529)
2.1 下载openssl(下载地址:openssl.cnf)
- 下载保存到bin目录
- 我安装的是带ssl的apache,所以bin目录已经有openssl.exe,如果没有的可以使用第二种方法,或自己下载openssl
- cmd到apache的bin目录
- openssl req -config openssl.cnf -new -out server.csr
- openssl rsa -in privkey.pem -out server.key
- openssl x509 -in server.csr -out server.crt -req -signkey server.key -days 4000
- openssl x509 -in server.crt -out server.der.crt -outform DER
执行完以上命令后将产生server.csr、my-server.der.crt、privkey.pem、server.crt、server.key,将server.key和server.crt 拷贝到conf目录下。
然后修改 conf/extra/httpd-ssl.conf
将下列行全部用# 注释掉
DocumentRoot "C:/Program Files/Apache Software Foundation/Apache2.2/htdocs"
ServerName www.nicaiwa.com:443
ServerAdmin nicaiwa@nicaiwa.com
ErrorLog "C:/Program Files/Apache Software Foundation/Apache2.2/logs/error.log"
TransferLog "C:/Program Files/Apache Software Foundation/Apache2.2/logs/access.log"
然后重启apache,试试访问https://localhost/svn/test,看能否正常访问。
如果想只允许https访问的话,apache配置文件加上
<Location /svn>
DAV svn
SSLRequireSSL
SVNParentPath C:/svn/repository
SVNListParentPath On
AuthzSVNAccessFile C:/svn/repository/authz
AuthType Basic
AuthName "Subversion repositories test"
AuthUserFile C:/svn/repository/htpasswd
Require valid-user
</Location>
上面拷贝server.key和server.crt 到conf是不怎么好的,主要是为了不修改配置文件,比较好的做法是,在conf下建立一个ssl
文件夹,将生成的5个文件拷贝到ssl文件夹内,然后将conf/extra/httpd-ssl.conf 修改
SSLCertificateFile "C:/Program Files/Apache Software Foundation/Apache2.2/conf/ssl/server.crt"
SSLCertificateKeyFile "C:/Program Files/Apache Software Foundation/Apache2.2/conf/ssl/server.key"
然后重启apache,试试访问https://localhost/svn/test,看能否正常访问。