本文讲述如何利用Apache配置实现http的方式访问Subversion,本文的目录如下:
- 配置http匿名访问
- 增加用户名和密码控制
- 增加文件目录控制
- 安装apache httpd,可参考:图文介绍apache2.2.x安装配置(http://www.micmiu.com/enterprise-app/cluster/apache-httpd-install/)
- 安装SVN服务Subversion,可参考:图文介绍windows搭建SVN服务端的基本步骤(http://www.micmiu.com/techother/software/subversion-windows-guide/)
- 启动Subversion服务(命令:svnserve -d -r d:\svnroot),创建好repository,并导入一个项目,比如:micmiu-app:
123456789101112131415 D:\>tree svnroot卷 work 的文件夹 PATH 列表卷序列号为 2AF7-9BD9D:\SVNROOT└─repo├─conf├─db│ ├─revprops│ │ └─0│ ├─revs│ │ └─0│ ├─transactions│ └─txn-protorevs├─hooks└─locks
【一】、配置http匿名访问
Apache httpd 安装路径:D:\Program Files (x86)\Apache2.2\
Subversion 安装路径:D:\Program Files (x86)\Subversion\
把%Subversion_home%\bin\mod_dav_svn.so文件复制到%apache_home%\moduals\
在%apache_home%\conf\httpd.conf 文件的末尾添加如下内容:
1 2 |
# load http svn conf Include conf/extra/httpd-svn.conf |
创建%apache_home%\conf\extra\httpd-svn.conf文件,具体内容如下:
1 2 3 4 5 6 7 8 9 |
# load module for svn LoadModule dav_module modules/mod_dav.so LoadModule dav_svn_module modules/mod_dav_svn.so <Location /svn> DAV svn SVNParentPath d:/svnroot #SVNListParentPath on </Location> |
配置好后需要重启Apahce服务,用svn客户端,打开:http://localhost/svn/repo/micmiu-app,如下图:
这时会发现已经实现了http访问SVN了,不过同时会发现之前在SVN服务端配置的用户名和密码控制无效了,如何控制请看下面接下来的内容。
【二】、增加用户名和密码控制
1.基本认证访问控制 htpasswd
创建密码文件,示例用于用户michael和micmiu 的访问控制:
1 2 3 4 5 6 7 8 9 |
D:\Program Files (x86)\Apache2.2\bin>htpasswd -c -m "d:/Program Files (x86)/Apache2.2/conf/svn-auth.htpasswd" michael New password: ******* Re-type new password: ******* Adding password for user michael D:\Program Files (x86)\Apache2.2\bin>htpasswd -m "d:/Program Files (x86)/Apache2.2/conf/svn-auth.htpasswd" micmiu New password: ****** Re-type new password: ****** Adding password for user micmiu |
ps:-c 表示创建密码文件;-m 表示用md5对密码加密
修改 conf\extra\httpd-svn.conf 文件,内容如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
# load module for svn LoadModule dav_module modules/mod_dav.so LoadModule dav_svn_module modules/mod_dav_svn.so <Location /svn> DAV svn SVNParentPath d:/svnroot #SVNListParentPath on # Authentication: Basic AuthName "welcome to micmiu svn" AuthType Basic AuthUserFile "d:/Program Files (x86)/Apache2.2/conf/svn-auth.htpasswd" # Authorization: Authenticated users only Require valid-user </Location> |
配置好后需要重启Apahce服务,用svn客户端,打开:http://localhost/svn/repo/micmiu-app,如下图:
从上图可见提示你输入正确的用户名和密码才能访问。
2.Digest 方式认证控制 htdigest
创建密码文件,示例用于用户michael和micmiu 的访问控制:
1 2 3 4 5 6 7 8 9 |
D:\Program Files (x86)\Apache2.2\bin>htdigest -c "d:/Program Files (x86)/Apache2.2/conf/svn-auth.htdigest" "my subversion repo" michael Adding password for michael in realm my subversion repo. New password: ******* Re-type new password: ******* D:\Program Files (x86)\Apache2.2\bin>htdigest "d:/Program Files (x86)/Apache2.2/conf/svn-auth.htdigest" "my subversion rep" micmiu Adding user micmiu in realm my subversion rep New password: ****** Re-type new password: ****** |
修改 conf\extra\httpd-svn.conf 文件,内容如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
# load module for svn LoadModule dav_module modules/mod_dav.so LoadModule dav_svn_module modules/mod_dav_svn.so <Location /svn> DAV svn SVNParentPath d:/svnroot #SVNListParentPath on # Authentication: Digest #AuthName "welcome to micmiu svn" #AuthType Digest #AuthUserFile "d:/Program Files (x86)/Apache2.2/conf/svn-auth.htdigest" # Authorization: Authenticated users only Require valid-user </Location> |
配置好后需要重启Apahce服务,用svn客户端,打开:http://localhost/svn/repo/micmiu-app,和上面一样会提示你输入用户名和密码。
【三】、增加文件目录控制
1.把%Subversion_home%\bin\mod_authz_svn.so文件复制到%apache_home%\moduals\
2.修改 conf\extra\httpd-svn.conf 文件,内容如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
# load module for svn LoadModule dav_module modules/mod_dav.so LoadModule dav_svn_module modules/mod_dav_svn.so LoadModule authz_svn_module modules/mod_authz_svn.so <Location /svn> DAV svn SVNParentPath d:/svnroot #SVNListParentPath on # Authentication: Digest #AuthName "welcome to micmiu svn" #AuthType Digest #AuthUserFile "d:/Program Files (x86)/Apache2.2/conf/svn-auth.htdigest" # Authentication: None # Authorization: Path-based access control; authenticated users only AuthzSVNAccessFile "d:/Program Files (x86)/Apache2.2/conf/svn-authz-file" #Satisfy Any # Authorization: Authenticated users only Require valid-user </Location> |
3.创建%apache_home%\conf\svn-authz-file文件,具体内容如下:
1234 [/]* = rw[repo:/micmiu-app/src]* =
该配置表示:可以访问对根目录读写,同时对micmiu-app/src目录没有任何权限
4.配置好后需要重启Apahce服务,用svn客户端,打开:http://localhost/svn/repo/micmiu-app,过程如下:
可见测试结果和我们预期设想的效果一致。
一些参考资料:
- http://subversion.apache.org/faq.zh.html
- http://svnbook.red-bean.com/nightly/en/svn.serverconfig.html
- http://svnbook.red-bean.com/nightly/en/svn.serverconfig.httpd.html
- http://svnbook.red-bean.com/nightly/en/svn.serverconfig.pathbasedauthz.html
原创文章,转载请注明: 转载自micmiu – 软件开发+生活点滴[ http://www.micmiu.com/ ]
本文链接地址: http://www.micmiu.com/software/build/subversion-apache-http/
我也有个博客,但是很多都没有坚持下来
我以前也是不能坚持的,后来发现有的东西不记录下来 很快就会忘记