Fork me on GitHub

svn安装部署

SVN服务器的部署使用

本文是博主亲自折腾过然后记录下的笔记,基本已经很全了,希望对其他的朋友都有帮助。   
注明,博主折腾所用的是ubuntu服务器。

部署安装svn服务器

1、安装svn

查看是否已经安装了svn:

1
svn --version

如果已经安装,可以卸载(自选,重装即卸载)

1
2
apt-get remove --purge subversion
# (--purge 选项表示彻底删除该软件和相关文件)

更新源并安装

1
2
apt-get update
apt-get install subversion

2、创建svn版本库

1
2
3
4
5
6
mkdir /test/svn
mkdir /test/svn/repository
# 更改repository的权限(第一次搭建没有赋予权限,客户端访问服务器被拒绝)
chmod -R 777 /test/svn/repository
# 创建版本库
svnadmin create /test/svn/repository

3、修改配置文件

1
2
cd /test/svn/repository
chmod -R 777 db
  1. 修改配置文件conf/svnserve.conf

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    vim /test/svn/repository/conf/svnserve.conf

    # 匿名用户可读(可改成none,即不可读)
    anon-access = read
    # 权限用户可写
    auth-access = write
    # 密码文件为passwd
    password-db = passwd
    # 权限文件为authz
    authz-db = authz
    # (tip:去掉前面的# 并且顶格,不然会报错)
  2. 添加访问用户密码文件conf/passwd

    1
    2
    3
    4
    5
    6
    vim /test/svn/repository/conf/passwd

    [users]
    fy = 123
    hello = hello
    # (直接用户名 = 密码,一行一个用户,明文密码)
  3. 设置用户权限conf/authz

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    vim /test/svn/repository/conf/authz

    [groups]

    # 切记组要定义在目录上面,否则会报错
    # 用户fy属于admin权限组
    admin = fy

    [/]
    # admin权限组的权限是读和写
    @admin = rw
    # 所有的组都具有读权限和写权限
    * = r
    # ([/]代表的根目录,注意定义用户组一定要放在最上面)

4、启动svn服务器

1
2
svnserve -d -r /test/svn
# (-d:表示在后台运行,-r:指定服务器的根目录)

用如下命令查看svnserve是否已经运行:

1
2
3
ps aux | grep svnserve
>>root 28019 0.0 0.1 73492 2860 ? Ss Apr04 0:00 svnserve -d -r /software/svn/
# (表示服务器已经在后台运行了)

如果需要关闭svn服务器,可以用如下命令:

1
killall svnserve

5、客户端连接

在windows上打开小乌龟客户端,输入地址访问:

1
2
svn://ip/repository
# (按照登录用户不同,所得权限就不同)

svn和Apache整合

1、安装Apache

1
apt-get install apache2

2、修改Apache端口

(可选,此处因为博主nginx用了80端口,所以更换Apache端口为8081)

1
2
3
4
5
vim /etc/apache2/ports/conf
Listen 8081

vim /etc/apache2/sites-available/000-default.conf
<VirtualHost *:8081>

3、安装整合需要的组件

1
2
apt-get install libapache2-svn
apt-get install apache2-utils

4、修改Apache模块儿部分的配置文件

1
2
3
vim /etc/apache2/mods-enabled/dav_svn.load
LoadModule dav_svn_module /usr/lib/apache2/modules/mod_dav_svn.so
LoadModule authz_svn_module /usr/lib/apache2/modules/mod_authz_svn.so

5、生成新的整合后登录的密码文件

(可以直接用SVN的密码文件,但会覆盖,所以最好先备份,
原密码文件只能用于svn://前缀协议的登录,此生成的新密码文件只能用于http ://前缀协议的登录)

1
2
3
4
cp /test/svn/repository/conf/passwd /test/svn/repository/conf/passwd.bak
htpasswd -c /test/svn/repository/conf/passwd '用户1'
htpasswd /test/svn/repository/conf/passwd '用户2'
# (切记:首次创建需要添加-c选项,如果再次添加用户的话不需要添加-c选项了,如果添加-c选项,之前已经添加的用户就会消失,相当于从新开始了)

6、配置Apache,以http的协议方式访问svn服务

(在安装libapache2-svn的时候,生成了一个路径为/etc/apache2/mods-available/dav_svn.conf的文件,直接进行修改即可)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
vim /etc/apache2/mods-available/dav_svn.conf

<Location /svn>
# http中需要输入的前缀
DAV svn
# SVNParentPath /test/svn/repository
# 挂载linux的文件路径
SVNPath /test/svn/repository
AuthType Basic
AuthName "Subversion Repository"
# 文字提示
AuthUserFile /test/svn/repository/conf/passwd
# 密码文件
AuthzSVNAccessFile /test/svn/repository/conf/authz
# 权限配置文件
Require valid-user
# 每次登陆都输入密码
</Location>

7、重启svn,重启Apache

1
2
3
killall svnserve
svnserve -d -r /test/svn
service apache2 restart

8、svn登录

1
http://ip:8081/svn

一点小tip

问题补充

  • 客户端没有报错原因,在服务器端可以检查配置文件是否有误
    1
    2
    3
    svnauthz-validate /test/svn/repository/conf/svnserve.conf
    svnauthz-validate /test/svn/repository/conf/passwd
    svnauthz-validate /test/svn/repository/conf/authz

如果读者有啥好的建议,或新的tip,等等都可以留言,博主会及时更新此博客!

-------------本文结束感谢您的阅读-------------
如果您对博主的原创满意,欢迎您继续支持下博主~