Ubuntu 12.04 搭建SVN服务器

安装环境:Ubuntu 12.04.2 LTS x86_64

一、安装必须的软件包

# apt-get install subversion

二、基本的SVN服务器配置

1、新建一个目录用于存储所有SVN版本仓库

# mkdir /home/svn

2、新建一个版本仓库

# svnadmin create /home/svn/greenit

3、初始化版本仓库中目录

# cd ~

# mkdir greenit greenit/exten greenit/_inc greenit/_cfg greenit/__debug greenit/index.php greenit/index.html(创建临时目录)

# svn import greenit file:///home/svn/greenit -m "初始化SVN目录"

# rm -rf greenit

4、添加用户

要添加SVN用户非常简单,只需在/home/svn/greenit/conf/passwd文件中添加一个形如“username=password”的条目就可以了。如下:

[users]
# harry = harryssecret
# sally = sallyssecret
admin = 123456
sqt = 123456
xfs = 123456
zly = 123456

5、修改用户访问策略

在/home/svn/greenit/conf/authz中修改

[groups]
admin=admin,sqt,xfs,zly
[greenit:/]
@admin=rw
*=

6、修改svnserve.conf文件,让用户和策略配置生效。

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

7、启动SVN服务器

# svnserve -d -r /home/svn

-d 表示svnserve以“守护”进程模式运行
-r 指定文件系统的根位置(版本库的根目录),这样客户端不用输入全路径,就可以访问版本库。

8、测试服务器

1)、导入项目,创建SVN仓库副本

mkdir /var/www

cd /var/www

svn co svn://192.168.110.132/greenit --username admin --password 123456(--username,--password可以省略)

2)、设置同步更新

同步程序思路:用户提交程序到SVN,SVN触发hooks,按不同的hooks进行处理,这里用到的是post-commit,利用post-commit到代码检出到SVN服务器的本地硬盘目录,再通过rsync同步到远程的WEB服务器上。

# sudo vim /home/svn/greenit/hooks/post-commit

内容:

#!/bin/sh
export LANG=zh_CN.UTF-8
/usr/bin/svn update /var/www/greenit --username admin --password 123456


#!/bin/sh
export LANG=zh_CN.UTF-8
/usr/bin/svn up /var/www/greenit --username admin --password 123456

给脚本增加可执行权限

chmod +x /home/svn/greenit/hooks/post-commit

3)、

三、SVN服务器管理

1、删除文件

svn delete svn://192.168.110.132/greenit/index.html -m "delete test file"

svn delete svn://192.168.110.132/greenit/index.php -m "delete test file"

2、查看日志

svn log svn://192.168.110.132/greenit/exten


cd /var/www/greenit

svn log exten

3、查看文件详细信息

svn info svn://192.168.110.132/greenit/exten


cd /var/www/greenit

svn info exten

更多管理命令参考:http://caifu.zol.com.cn/193/1932679.html

4、停止svn服务

sudo killall svnserve


四、SVN服务器配置文件详解

1、svnserve.conf

vim svnserve.conf

查看该文件,首先是匿名用户的权限配置:

[general]

anon-access = none

auth-access = write

password-db = passwd     

authz-db=authz

表示对于匿名用户,无访问权限;对于授权用户,有写权限; 授权登陆方式使用了password-db、authz-db两种方式;

password-db ,就是用户名和密码都是明文存放在同级目录下的passwd文件中;

authz-db,这种方式的用户密码使用了sasl加密,安全上有保证;

2、authz(权限控制文件)

默认是没有配置的,要参照下面示例来配置

[groups]

admin = sqtang,xxlu

[iot:/]

@admin = rw

sqtang = rw

xxlu = rw

上面配置的格式如下:

[groups]

<用户组名> = <用户1>,<用户2>,……

[<版本库>:/项目/目录]

@<用户组名> = <权限>

<用户名> = <权限>

其中,方括号内部分可以有多种写法:

/   ------   表示根目录及以下。根目录是svnserve启动时指定的,我们指定为/var/svn/。这样,/就是表示对全部版本库设置权限。

iot:/   ------   表示对版本库iot设置权限

iot:/trunck   ------   表示对版本库iot中的trunk目录设置权限

权限主体可以是用户组、用户或*,用户组在前面加@,*表示全部用户。权限可以是w、r、rw和空,空表示没有任何权限。

3、passwd(用户密码文件)

vim passwd

默认也是没有配置任何用户的,可按下面配置示例配置

[users]

sqtang = 123456

xxlu = 123456

用户密码的配置格式:

[users]

<用户1> = <密码1>

<用户2> = <密码2>

注意:这里的配置文件,除了注释每行都必须顶行,否则又会报错了。


四、常见问题

1、post-commit hook failed (exit code 255) with no output
解决办法:赋予post-commit文件可执行权限,在文件第一行有没有#!/bin/sh,我曾经就出现过这样的问题,在Post-commit第一行不是#!/bin/sh开头也是出现255的



2、Error output could not be translated from the native locale to UTF-8

客户端和服务器编码的问题,默认是utf-8,可尝试设置export LANG=zh_CN.GBK或者export LANG=en_US.UTF-8



3、方法MERGE失败于 “/repos/test”: 200 OK (http://192.168.0.114/)

可执行

cp /root/.subversion /var/www -R

4、开启SVN默认端口,默认是3690
在测试的时候,在本机可以使用svn,但是到了其他主机(在同一个局域网)就不行,错误信息提示:svn:无法连接主机“192.168.110.128”:没有到主机的路由。这就是防火墙的问题,要保证服务器和客户端都没有屏蔽这个端口

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值