环境:
a. 系统为centos 6.0
b. 分为svn协议和http协议方式
c. 使用svnadduser同时更新svn协议的密码文件和http协议的密码文件
1. 安装
- # 安装subversion
- yum install subversion
- # 安装apache
- yum groupinstall
- # 安装mod_dav_svn模块
- yum install mod_dav_svn
"Web Server"组中包含httpd的安装包
2. 配置apache
- vi /etc/httpd/conf/httpd.conf
- # 设置监听地址
- Listen 192.168.1.11:8080
- # 设置ServerName
- ServerName 192.168.1.11:8080
3. 建立Svn
- mkdir -p /data/subversion
- cd /data/subversion
- svnadmin create shell
- chown -R apache:apache shell
- # 权限文件和认证文件都放在以下目录
- mkdir /data/subversion/conf
一定要改变所创建的Svn目录的拥有者为Web服务器运行的用户,否则出现不能写入这些权限错误,这里为apache
4. 使用svn协议
a. 编辑svn项目的配置文件,这个文件在用svnadmin创建的目录的conf子目录下
- vi /data/subversion/shell/conf/svnserve.conf
- # 匿名用户不能访问,认证用户具有写权限
- anon-access = none
- auth-access = write
- # 设置权限和密码文件
- password-db = /data/subversion/conf/passwd
- authz-db = /data/subversion/conf/authz
- # 认证登陆提示信息
- realm = linuxjcq shell
b. 创建权限文件和用户名文件
- cd /data/subversion/conf
- # 配置权限:
- vi authz
- # 添加组,可以根据项目需要分成管理员组,只读组,也可以按具体的子目录来分组,进行权限控制
- # 组成员用逗号分隔
- [groups]
- admin = jcq
- # 我想/data/subversion所有项目的svn库都使用同样的权限,所以使用[/path/to/access]的形式,如果想对具体项目进行权限控制可以使用[项目名:/path/to/access]
- [/]
- @admin = rw
- * =
- # 配置用户名和密码
- vi passwd
- jcq = xxxxxx
- ……
c. 将svn添加为服务
- vi /etc/sysconfig/subversion
- # 文件中为启动要加的选项
- OPTIONS="–listen-host 192.168.1.11 –listen-port 3690 -r /data/subversion -d"
- vi /etc/rc.d/init.d/svnserve
- #!/bin/bash
- #
- # /etc/rc.d/init.d/subversion
- #
- # Starts the Subversion Daemon
- #
- # chkconfig: 2345 90 10
- # description: Subversion Daemon
- # processname: svnserve
- source /etc/rc.d/init.d/functions
- [ -x /usr/bin/svnserve ] || exit 1
- ### Default variables
- SYSCONFIG="/etc/sysconfig/subversion"
- ### Read configuration
- [ -r "$SYSCONFIG" ] && source "$SYSCONFIG"
- RETVAL=0
- prog="svnserve"
- desc="Subversion Daemon"
- start() {
- echo -n $"Starting $desc ($prog): "
- daemon $prog $OPTIONS
- RETVAL=$?
- [ $RETVAL -eq 0 ] && touch /var/lock/subsys/$prog
- echo
- }
- stop() {
- echo -n $"Shutting down $desc ($prog): "
- killproc $prog
- RETVAL=$?
- [ $RETVAL -eq 0 ] && success || failure
- echo
- [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$prog
- return $RETVAL
- }
- case "$1" in
- start)
- start
- ;;
- stop)
- stop
- ;;
- restart)
- stop
- start
- RETVAL=$?
- ;;
- condrestart)
- [ -e /var/lock/subsys/$prog ] && restart
- RETVAL=$?
- ;;
- *)
- echo $"Usage: $0 { start|stop|restart|condrestart }"
- RETVAL=1
- esac
- exit $RETVAL
- chmod 0755 /etc/rc.d/init.d/svnserve
- chkconfig –add svnserve
- service svnserve start
也可以直接手动启动,例如:svnserve –listen-host 192.168.1.11 –listen-port 3690 -r /data/subversion -d
编辑/etc/rc.d/rc.local文件中加入这个启动命令
5. 使用http协议
a. 配置
- vi /etc/httpd/conf.d/subversion.conf
- # 确认这两行的存在
- LoadModule dav_svn_module modules/mod_dav_svn.so
- LoadModule authz_svn_module modules/mod_authz_svn.so
- # 配置svn仓库
- <Location /subversion>
- DAV svn
- SVNParentPath /data/subversion
- <LimitExcept GET PROPFIND OPTIONS REPORT>
- AuthzSVNAccessFile /data/subversion/conf/authz
- AuthType Basic
- AuthName "Authorization Realm"
- AuthUserFile /data/subversion/conf/htpasswd.users
- Require valie-user
- </LimitExcept>
- </Location>
b. 创建认证的文档,相当于使用svn协议时的passwd
- htpasswd -cm /data/subversion/conf/htpasswd.users jcq
- New password:
- Re-type new password:
开始时你要利用 -cm 这个选项。它会创建文件并用 MD5 将口令加密。如果你需要加用户,请确定你只使用 -m 选项,而不包含初次创建时的 -c。
c. 创建权限文件
- vi /data/subversion/conf/authz
- # 添加组,可以根据项目需要分成管理员组,只读组,也可以按具体的子目录来分组,进行权限控制
- # 组成员用逗号分隔
- [groups]
- admin = jcq
- # 我想/data/subversion所有项目的svn库都使用同样的权限,所以使用[/path/to/access]的形式,如果想对具体项目进行权限控制可以使用[项目名:/path/to/access]
- [/]
- @admin = rw
- * =
我的svn协议和http协议使用相同的权限控制文件
d. 启动apache
- service httpd start