文章目录
- 1、Linux 搭建 SVN 服务器
-
-
- (1)Apache Subversion
- (2)检查老版本
- (3)安装过程详解
- (4)防火墙设置
-
- 微信公众号
1、Linux 搭建 SVN 服务器
通常情况下,公司内部都会搭建一个svn服务器,用来统一管理公司的项目,也有一些开发公司使用的是码云之类的代码托管平台,这里我们就搭建一个svn服务器来管理我们自己的项目,面向实战学习
(1)Apache Subversion
- Apache Subversion
面向大众的企业级集中版本控制
(2)检查老版本
检查Linux是否已经安装过svn
rpm -qa subversion
如果有则卸载
yum -y remove subversion
(3)安装过程详解
首先安装SVNServer
yum -y install subversion
安装完成之后,再次查看版本,是否正确安装
rpm -ql subversion
创建版本库目录
mkdir -p /var/svn/svnrepos
创建svn版本库,我这里使用的是test作为根目录,实际使用的时候可以改为projects
svnadmin create /var/svn/testcd /var/svn/test
- conf:是这个仓库配置文件(仓库用户访问账户,权限)
- format:是一个文本文件,里边只放了一个整数,表示当前文件库配置的版本号
- hooks:放置hook脚步文件的目录
- locks:用来放置subversion的db锁文件和db_logs锁文件的目录,用来追踪存取文件库的客户端
进入配置文件夹中,有三个文件
cd conf
- authz:负责账号权限的管理,控制账号是否读写权限
- passwd:负责账号和密码的用户名单管理
- svnserve.conf:svn服务器配置文件
编辑服务器配置文件
vim svnserve.conf
配置都被注释了,放开以下配置,realm 是自己之前创建的版本库名称
[general]
anon-access = none #控制非鉴权用户访问版本库的权限
auth-access = write #控制鉴权用户访问版本库的权限
password-db = passwd #指定用户名口令文件名,即访问时要输用户名和密码
realm = test #指定版本库的认证域,即在登录时提示的认证域名称,改成自己的版本库
修改账号管理,给每个账户设置对应的权限
r:读权限
w:写权限
rw:读写权限
null:没有权限
vim authz
- 方式一:按账号分权限(不推荐)
这里的例子是给 user1 读写权限,user2 读权限
[test/]
admin = rw # admin用户有读写权限
test = r # test用户只有读权限
- 方式二:先分组用户,再设置权限
[groups]
# 按用户组分权限
admin = admin,admin1
test = test1, test2
[/] # 表示svn仓库目录(/var/svn/test),test: 对应前面配置的realm = test
@admin = rw # 表示admin组对仓库(/var/svn/test)目录有读写权限,r为读,w为写
@test = r # 表示test组的用户对对仓库(/var/svn/test)目录只有读的权限
[/test1] # 表示test1目录(/var/svn/test/test1)
@test = rw # 表示test组对test1目录有读写权限
* =
这里我们使用方式二学习,将内容粘贴到authz配置文件中
修改passwd文件信息
vim passwd
配置账号密码,粘贴以下内容
[users]
admin = 123456
admin1 = 123456
test = 123456
test1 = 123456
更改svnserver.conf时需要重启SVN服务才生效,更改authz,passwd文件时则不需要重启服务
启动svn服务器
# -d : 守护进程 -r : svn数据根目录
svnserve -dr /var/svn
查看服务,默认端口:3690
ps aux|grep svnserve
设置开机启动,我是centos7,根目录必须是/var/svn 这样才能设置成功
systemctl enable svnserve.service
启动停止命令就可以使用以下方式
systemctl start svnserve.service systemctl stop svnserve.service
拉取项目到本地,在本地安装 SVN 客户端,然后右键,选择 SVN Checkout
,服务器IP换成你自己的
svn://106.52.96.138:3690/test
在拉取的文件夹下新建一个文件,然后再项目文件夹上右键,选择SVN commit
点击OK后,需要输入账号密码,这里我们使用admin/123456,之前设置了读取权限的,一路OK即可
(4)防火墙设置
我是防火墙没开,但是实际使用的时候会有防火墙问题,这里记录一下解决方法
# 查看状态
firewall-cmd --permanent --add-service=telnet
# 开端口
firewall-cmd --permanent --add-port=3690/tcp
# 重新加载
firewall-cmd --reload
防火墙相关命令
systemctl start firewalldsystemctl stop firewalldsystemctl status firewalld