logo头像

科技始终来源于人性!

Centos 搭建 svn 服务器

搭建好服务器之后,免不了需要搭建一个代码的版本控制,这里介绍如何在 Centos 服务器上搭建 svn 版本控制。

1、连接到远程服务器,并搭建 svn

1
yum install subversion

安装完成后,会在命令行界面显示Complete!

2、安装好 svn 后,创建一个版本库。我个人比较习惯放在 /opt/ 目录下

1
2
mkdir -p /opt/svn/repos
svnadmin create /opt/svn/repos

【配置】

创建版本库后,需要修改仓库的权限控制配置。进入到刚刚创建好的仓库目录,conf 目录存放该仓库的配置信息。里面有3个文件,
authz,passwd,svnserve.conf

passwd 表示用户的账号,密码
authz 表示有哪些用户,对当前仓库的目录访问权限
svnserve.conf 表示当前仓库的 svn 配置

(1)先设置passwd,配置多个用户时,以换行的格式区分

1
2
3
4
5
6
7

[users]
# harry = harryssecret
# sally = sallyssecret
hello=123
#用户名=密码

(2)设置authz

1
2
3
4
5
6
7

[groups]
admin=hello
[/]
hello=rw
* = r

(3)配置svnserve.conf

anon-access = none # 使非授权用户无法访问

auth-access = write # 使授权用户有写权限

password-db = passwd

authz-db = authz # 访问控制文件

realm = /opt/svn/repos #认证命名空间

1
2
3
4
5
6
7

[general]
anon-access = none
auth-access = write
password-db = passwd
authz-db = authz


【如何使用】

1、启动 svn 端口监听。这里监听的端口,要和服务器防火墙允许的端口一致。
另外,如果是使用阿里云服务器,除了服务器本身防火墙外,还需要在阿里云的防火墙进行端口开放。

1
2
3

svnserve -d -r /opt/svn/repos --listen-port 3391

通过监听不同的端口,一个服务器可以创建多个仓库。

2、同步到 web 目录下。通过钩子文件,实现 svn 提交后,同步到 web 目录。

(1)进入hooks目录下,复制post-commit.tmpl 到post-commit

(2)编辑 post-commit 文件

1
vi post-commit

(3)并把内容修改成下面内容(ps:vi编辑器下,V + GG + D 删除文件全部内容)

1
2
3
4
5

#!/bin/bash
export LANG="zh_CN.UTF-8"
svn update /var/www/html --username user --password user_pwd

(4)修改完成后,更改post-commit权限为755,使得文件有权限被执行

1
chmod 755 post-commit

(5)设置好之后,在web目录先checkout一次svn才能同步过来。进入web目录下,过程会询问授权,按照操作输入yes 或者y 即可。

1
svn checkout svn://服务器ip:端口 /var/www/html --username username --password pwd