注:以下所有操作均在CentOS 6.5 x86_64位系统下完成。
我们需要搭建一个自己的SVN服务器。
此外,搭建好的SVN服务器除了需要支持svn协议外,最好还需要支持HTTP协议和HTTPS协议,这个时候就需要有Web服务器的介入工作。
#准备工作#
在这之前需要先把Apache和Nginx安装好,具体见:《CentOS 6.5安装Apache-2.4.10及安全配置》、《CentOS 6.5安装Nginx-1.6.2及安全配置》。
#Subversion的安装#
开始下载Subversion并进行编译安装:
# wget http://mirror.bit.edu.cn/apache/subversion/subversion-1.8.11.tar.gz # tar zxf subversion-1.8.11.tar.gz # cd subversion-1.8.11 # ./configure --prefix=/usr/local/subversion-1.8.11 --with-apr=/usr/local/apr-1.4.5 --with-apr-util=/usr/local/apr-util-1.3.12 --with-sqlite=/usr/local/sqlite-3.8.7.4 # make && make install # ln -s /usr/local/subversion-1.8.11/ /usr/local/subversio
给SVN创建仓库根目录:
# mkdir -p /data/svnserver
假设我们现在需要开发一个名为proj1的项目,给这个项目创建一个SVN仓库:
# /usr/local/subversion-1.8.11/bin/svnadmin create /data/svnserver/proj1 # chmod 777 -R /data/svnserver/proj1/db/
注:上面给db/目录加入777权限是因为提交代码时需要对该目录进行修改操作,否则可能提交代码时会提示错误:
db/txn-current-lock permission denied
给SVN创建Apache的Web用户验证文件:
# /usr/local/apache/bin/htpasswd -cm /data/svnserver/auth.conf brishenzhou New password: Re-type new password: Adding password for user brishenzhou # /usr/local/apache/bin/htpasswd -m /data/svnserver/auth.conf otherman New password: Re-type new password: Adding password for user otherman
注:只有第一次需要加-c参数,后面再添加用戶则不需要。
给SVN创建仓库访问权限文件:
# vim /data/svnserver/access.conf [groups] admin=brishenzhou developer=brishenzhou,otherman # Default access rule for ALL repositories # admins can write [/] @admin=rw # Allow developers complete access to their project repos [proj1:/] @developer=rw
至此,Subversion的安装已经完毕,接下来是让其与Apache协同工作,支持HTTP协议访问。
#Subversion+Apache的HTTP协议支持#
把subversion相关的so文件拷贝过去给Apache:
# ls /usr/local/subversion/libexec/ mod_dav_svn.so mod_authz_svn.so # cp /usr/local/subversion/libexec/mod_dav_svn.so /usr/local/apache/modules/mod_dav_svn.so # cp /usr/local/subversion/libexec/mod_authz_svn.so /usr/local/apache/modules/mod_authz_svn.so
接着修改http.conf配置文件,如下:
# vim /usr/local/apache/conf/httpd.conf LoadModule dav_svn_module modules/mod_dav_svn.so LoadModule authz_svn_module modules/mod_authz_svn.so <Location /svn> DAV svn SVNParentPath /data/svnserver AuthType Basic AuthName "Subversion repository" AuthUserFile /data/svnserver/auth.conf Require valid-user AuthzSVNAccessFile /data/svnserver/access.conf </Location>
注:VIM下可以使用快捷键shift+g到文件末尾添加Location。
#Subversion的启动/关闭#
首先启动SVN服务,为了安全这里必须使用www用户来启动(这个用户也必须是Apache的工作用户):
# chown -R www:www /data/svnserver # su -l www $ /usr/local/subversion-1.8.11/bin/svnserve -d -r /data/svnserver
注:如果在切换用户身份的时候提示错误:This account is currently not available. 这个时候先临时修改svn账号的登录权限:
# vim /etc/passwd www:x:501:501::/home/www:/bin/bash
然后再切换,执行完命令后切换回root再修改svn账号登录权限:
$ exit # vim /etc/passwd www:x:501:501::/home/svn:/sbin/nologin
这里我们来查看下当前subversion的进程: