SSH+SVN示例
这种模式需要提前设置SSH服务,通过SSH服务调用SVN服务程序,所以svnserve不需要手动启动,客户端通过svn+ssh://centos.example.com/svn/project1访问。
客户端程序通过ssh程序连接版本库主机,使用SSH认证(服务器系统用户名与密码),服务端接到某用户的ssh连接后会以该用户的身份启动svnserve。
这种模式svnserve.conf还是可以进行权限控制的。
1. 服务端启动SSH服务
[root@centos6 ~]# service sshd start
2. 服务端创建版本库
[root@centos6 ~]# mkdir /var/svn
[root@centos6 ~]# svnadmin create /var/svn/project1
[root@centos6 ~]# svn import /shells file:///var/svn/project1 -m "Initial DATA"
3. 客户端访问效果如图:
1)通过TortoiseSVN图形工具访问:
2)通过命令行访问(一台rhel6.2系统)
Apache+SVN
Apache是非常流行的Web服务器软件。它可以运行在几乎所有的计算机平台上。通过Apache发布Subversion的版本库,使得用户可以通过HTTP协议访问版本库。
以下为使用Apache发布Subversion版本库的若干理由:
1.Subversion可以使用Apache自身集成的多种认证方式。
2.不需要创建系统用户。
3.完善的Apache日志可。
4.可以通过SSL加密网络传输的数据。
5.HTTP(S)可以穿越企业防火墙。
6.坚定地通过浏览器访问版本库。
准备工作:安装Apache,加载mod_dav及mod_dav_svn模块,Apache需要这两个模块管理Subversion版本库。
本文以yum方式安装这些软件,环境为CentOS6.2。
[root@centos6 ~]# yum -y install httpd
[root@centos6 ~]# yum -y install mod_dav_svn
安装完成后你可以通过以下方法查看dav模块是否加载成功:
vim /etc/httpd/conf/httpd.conf
查看是否包含LoadModule dav_module modules/mod_dav.so
vim /etc/httpd/conf.d/subversion.conf
查看是否包含LoadModule dav_svn_module modules/mod_dav_svn.so
如果你还需要Subversion自带的基于目录的权限控制的话,可以通过加载mod_authz_svn实现。
接下来通过修改Apache配置文件实现网络化版本库:
root@centos6 ~]# mkdir /var/svn
[root@centos6 ~]# svnadmin create /var/svn/project1
[root@centos6 ~]# svn import /shells file:///var/svn/project1 -m "Initial DATA"
[root@centos6 ~]# vim /etc/httpd/conf.d/subversion.conf
-
LoadModule dav_svn_module modules/mod_dav_svn.so //加载模块
-
LoadModule authz_svn_module modules/mod_authz_svn.so //加载模块
-
-
# //#符号开头的为注释行
-
# a) readable and writable by the 'apache' user, and
-
# //默认Apache启动用户为apache,所以需要apache用户对版本库有读写权限
-
# b) labelled with the 'httpd_sys_content_t' context if using
-
# SELinux
-
# //如果开启了SELinux版本库需要有httpd_sys_content_t这样的安全上下文
-
# To create a new repository "http://localhost/repos/stuff" using
-
# this configuration, run as root:
-
#
-
# # cd /var/www/svn
-
# # svnadmin create stuff
-
# # chown -R apache.apache stuff
-
# # chcon -R -t httpd_sys_content_t stuff //以上注释行是配置文档提供的操作示例
-
//注意我们的版本库在/var/svn目录下
-
-
<Location /svn> //Location可以根据特定的URL执行特定的处理
-
//这里当用户的RUL以/svn开始时,将控制权交于DAV处理(http://hostname/svn/...)
-
DAV svn
-
SVNParentPath /var/svn //通过SVNParentPath指定所有版本库的主目录(发布所有版本库)
-
//也可以通过SVNPath指定某个特定版本库的路径(发布特定版本库)
-
AuthType Basic //认证方式
-
AuthName "Please Input passwod" //提示字符
-
AuthUserFile /var/svn/.pass //帐号文件的路径,为了安全隐藏该文件
-
Require valid-user //指定仅有效用户可以访问
-
</Location>
[root@centos6 ~]# chown -R apache.apache /var/svn/ //修改权限
[root@centos6 ~]# chcon -R -t httpd_sys_content_t /var/svn //仅在SELinux开启时使用
[root@centos6 ~]# htpasswd -c /var/svn/.pass jerry //创建帐号文件,并添加用户jerry
[root@centos6 ~]# service httpd start
客户端访问效果如图: