CentOS搭建:SVN

12/31/2024 Linux

目录


参考:


# CentOS搭建:SVN

# 环境依赖

软件/系统 版本 架构 包名 备注
Linux CentOS7.X x86_64

# SVN介绍

SVN的全称是Subversion,即版本控制系统。作为一个开源的版本控制系统,Subversion管理着随时间改变的数据。这些数据放置在一个中央资料档案库(Repository)中。这个档案库很像一个普通的文件服务器,不过它会记住每一次文件的变动。这样就可以把档案恢复到旧的版本,或是浏览文件的变动历史。Subversion是一个通用的系统,可用来管理任何类型的文件,其中包括程序源码。

# 安装SVN服务端

# 安装SVN服务端
yum install subversion
1
2
# 创建版本库文件夹
mkdir -p /data/svn/repos
# 赋权
chmod -R 777 /data/svn/repos
1
2
3
4
# 创建版本库
svnadmin create /data/svn/repos
# 查看
ll /data/svn/repos
ll /data/svn/repos/conf
1
2
3
4
5

image-20240729153858393

目录的说明:

  • conf目录:是这个仓库配置文件(仓库用户访问账户,权限)
  • format目录:是一个文本文件,里边只放了一个整数,表示当前文件库配置的版本号
  • hooks目录:放置hook脚步文件的目录
  • locks目录:用来放置subversion的db锁文件和db_logs锁文件的目录,用来追踪存取文件库的客户端

配置文件说明:

  • authz 权限管理配置
  • passwd 账号密码配置
  • svnserve.conf 主要配置文件

# 配置SVN服务的配置文件

# 配置访问用户及密码
vi passwd
1
2

修改或添加账号密码,以账号=密码的格式配置,=号两边尽量不要存在空格

image-20240729154548090

# 权限管理配置
vi authz
1
2

image-20240729155009088

[groups]
# admin管理用户组成员
admin = admin,H028561   
# developer开发用户成员
developer = H028561

# 设置所有仓库的权限
[/]              # 仓库根目录
@admin=rw        # admin管理用户组有读写权限
*=               # 其他用户无权限
1
2
3
4
5
6
7
8
9
10

启动SVN

单仓库可以直接以仓库目录启动

# 以仓库目录启动
svnserve -dr /data/svn/repos \
         --listen-port 5690
1
2
3
  • -d : 守护进程
  • -r : svn数据根目录
  • --listen-port 自定义端口,默认端口为:3690

多仓库启动上层svn目录

svnserve -dr /data/svn \
         --listen-port 5690
1
2

访问地址分别为:svn://ip/test1、svn://ip/test2...

#查看svn服务
ps -aux|grep svnserve  #默认端口为:3690
1
2

停止SVN服务

查出svnserve进程id,再kill掉,或只启动一个svn仓库时可用pkill

pkill svnserve 
1
# 设置开机自启动
systemctl enable svnserve.service
1
2

# 安装 httpd和apahce的svn模块:

yum install httpd
yum install -y httpd mod_dav_svn
1
2

检查Apache,mod_dav_svn是否安装成功,安装成功后,会有mod_dav_svn.so和mod_authz_svn.so两个文件。

httpd -v
1

Server version: Apache/2.4.6 (CentOS) Server built: Nov 16 2020 16:18:20

find / -name mod_dav_svn.so
1

/usr/lib64/httpd/modules/mod_dav_svn.so

find / -name mod_authz_svn.so
1

/usr/lib64/httpd/modules/mod_authz_svn.so

增加配置文件/etc/httpd/conf.d/subversion.conf

ll -a /etc/httpd/conf.d |grep subversion
vi /etc/httpd/conf.d/subversion.conf
1
2
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
1
2
vi /etc/httpd/conf.d/w_svn_9001.conf
1
#设置一个端口服务,NG会跳转到这个端口
Listen 2365												
<Location /svn>
    DAV svn
    #仓库路径
    SVNParentPath  /svn/test/					
    AuthType Basic
    AuthName "svn repos"
    # 指定HTTP访问SVN的密码文件(HTTP访问SVN的账号密码 通过htpasswd 添加到这个文件)
    AuthUserFile   /svn/test/passwdfile     
    # 指定HTTP访问SVN的权限文件
    AuthzSVNAccessFile /svn/test/auth  
    Satisfy Any
    Require valid-user
</Location>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

创建http登陆SVN用户文件passwd(subversion.conf中AuthUserFile指定的文件 ),

htpasswd  /svn/test/passwdfile  lqb
1

New password: 123456 Re-type new password: 123456 Adding password for user lqb

# cat /svn/test/passwdfile 
lqb:$apr1$gQ3qKK9Q$ZYFb.DVPf4vLGzTsU3L0f1
1
2
上次更新时间: 9/25/2024, 1:19:15 AM