共计 3967 个字符,预计需要花费 10 分钟才能阅读完成。
注:以下所有操作均在 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 的进程:
# ps -aux | grep svn
www 6564 0.0 0.0 /usr/local/subversion-1.8.11/bin/svnserve -d -r /data/svnserver
从上面进程可以看出进程的属主是 www 用户,之后 Subversion 将会监听 3690 端口。
如果要关闭 Subversion 服务,只需要使用 kill 命令杀死进程即可,比如:
# kill -9 6564
Subversion 服务启动完毕后,接着启动 Apache 服务:
# /usr/local/apache/bin/apachectl restart
这个时候打开浏览器访问地址 http://youripaddress:8888/svn/proj1 应该可以看到:
输入前面设置的用户名和密码后就可以看到:
证明访问成功。
#Nginx 反向代理 #
为了不需要输入 8888 端口号,这里使用 Nginx 来做反向代理,再将请求转给 Apache,配置 nginx.conf:
# vim /usr/local/nginx/conf/nginx.conf
server {listen 80;
server_name localhost;
location ~ ^/svn/ {
access_log off;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:8888;
}
}
这个时候就可以直接访问而不需要带上 8888 端口号了。
至此,Subversion 服务器安装成功并支持 HTTP 协议访问。
Ubuntu 搭建 Subversion + USVN 环境 http://www.linuxidc.com/Linux/2016-07/133279.htm
Linux 中 Subversion 配置实例 http://www.linuxidc.com/Linux/2012-02/53109.htm
CentOS 6.2 SVN 搭建 (YUM 安装) http://www.linuxidc.com/Linux/2013-10/91903.htm
Apache+SVN 搭建 SVN 服务器 http://www.linuxidc.com/Linux/2013-03/81379.htm
Windows 下 SVN 服务器搭建和使用 + 客户端重新设置密码 http://www.linuxidc.com/Linux/2013-05/85189p5.htm
Ubuntu Server 12.04 安装 SVN 并迁移 Virtual SVN 数据 http://www.linuxidc.com/Linux/2013-05/84695.htm
Ubuntu Server 搭建 svn 服务以及迁移方法 http://www.linuxidc.com/Linux/2013-05/84693.htm
借助网盘搭建 SVN 服务器 http://www.linuxidc.com/Linux/2013-10/91271.htm
Subversion (SVN) 的详细介绍 :请点这里
Subversion (SVN) 的下载地址 :请点这里
本文永久更新链接地址 :http://www.linuxidc.com/Linux/2016-12/138039.htm