CentOS搭建:SVN
目录
参考:
- 服务端安装SVN记录及httpd、nginx实现端口转发域名访问(CentOS7) (opens new window)
- CentOS通过nginx转发http支持访问SVN (opens new window)
# CentOS搭建:SVN
# 环境依赖
软件/系统 | 版本 | 架构 | 包名 | 备注 |
---|---|---|---|---|
Linux | CentOS7.X | x86_64 |
# SVN介绍
SVN的全称是Subversion,即版本控制系统。作为一个开源的版本控制系统,Subversion管理着随时间改变的数据。这些数据放置在一个中央资料档案库(Repository)中。这个档案库很像一个普通的文件服务器,不过它会记住每一次文件的变动。这样就可以把档案恢复到旧的版本,或是浏览文件的变动历史。Subversion是一个通用的系统,可用来管理任何类型的文件,其中包括程序源码。
# 安装SVN服务端
# 安装SVN服务端
yum install subversion
2
# 创建版本库文件夹
mkdir -p /data/svn/repos
# 赋权
chmod -R 777 /data/svn/repos
2
3
4
# 创建版本库
svnadmin create /data/svn/repos
# 查看
ll /data/svn/repos
ll /data/svn/repos/conf
2
3
4
5
目录的说明:
- conf目录:是这个仓库配置文件(仓库用户访问账户,权限)
- format目录:是一个文本文件,里边只放了一个整数,表示当前文件库配置的版本号
- hooks目录:放置hook脚步文件的目录
- locks目录:用来放置subversion的db锁文件和db_logs锁文件的目录,用来追踪存取文件库的客户端
配置文件说明:
- authz 权限管理配置
- passwd 账号密码配置
- svnserve.conf 主要配置文件
# 配置SVN服务的配置文件
# 配置访问用户及密码
vi passwd
2
修改或添加账号密码,以账号=密码
的格式配置,=号两边尽量不要存在空格
# 权限管理配置
vi authz
2
[groups]
# admin管理用户组成员
admin = admin,H028561
# developer开发用户成员
developer = H028561
# 设置所有仓库的权限
[/] # 仓库根目录
@admin=rw # admin管理用户组有读写权限
*= # 其他用户无权限
2
3
4
5
6
7
8
9
10
启动SVN
单仓库可以直接以仓库目录启动
# 以仓库目录启动
svnserve -dr /data/svn/repos \
--listen-port 5690
2
3
- -d : 守护进程
- -r : svn数据根目录
- --listen-port 自定义端口,默认端口为:3690
多仓库启动上层svn目录
svnserve -dr /data/svn \
--listen-port 5690
2
访问地址分别为:svn://ip/test1、svn://ip/test2...
#查看svn服务
ps -aux|grep svnserve #默认端口为:3690
2
停止SVN服务
查出svnserve进程id,再kill掉,或只启动一个svn仓库时可用pkill
pkill svnserve
# 设置开机自启动
systemctl enable svnserve.service
2
# 安装 httpd和apahce的svn模块:
yum install httpd
yum install -y httpd mod_dav_svn
2
检查Apache,mod_dav_svn是否安装成功,安装成功后,会有mod_dav_svn.so和mod_authz_svn.so两个文件。
httpd -v
Server version: Apache/2.4.6 (CentOS) Server built: Nov 16 2020 16:18:20
find / -name mod_dav_svn.so
/usr/lib64/httpd/modules/mod_dav_svn.so
find / -name mod_authz_svn.so
/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
2
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
2
vi /etc/httpd/conf.d/w_svn_9001.conf
#设置一个端口服务,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>
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
New password: 123456 Re-type new password: 123456 Adding password for user lqb
# cat /svn/test/passwdfile
lqb:$apr1$gQ3qKK9Q$ZYFb.DVPf4vLGzTsU3L0f1
2