一、查看有没有安装svn
rpm -qa subversion

二、yum安装svn服务端(非最新版本)
Svn yum命令直接安装
直接安装不是最新版本的svn,只是:1.7.14版本的,当前最新版本是:svn-1.14,最新版本安装请跳过此步看下面
yum -y install subversion

执行结果:

已安装:
subversion.x86_64 0:1.7.14-16.el7
作为依赖被安装:
apr.x86_64 0:1.4.8-7.el7 apr-util.x86_64 0:1.5.2-6.el7 subversion-libs.x86_64 0:1.7.14-16.el7
完毕!

三、svn安装最新版本
1、查看Centos系统适合的版本
http://opensource.wandisco.com/centos/
如果是Centos7,则是:
http://opensource.wandisco.com/centos/7/
适合的版本如下:
Name↓ Last Modified: Size: Type:
svn-1.7/ 2014-Aug-07 08:16:37 – Directory
svn-1.8/ 2014-Aug-07 08:16:37 – Directory
svn-1.9/ 2014-Aug-07 08:16:37 – Directory
svn-1.10/ 2018-Apr-25 12:31:52 – Directory
svn-1.11/ 2018-Nov-22 09:45:38 – Directory
svn-1.12/ 2019-Mar-04 09:24:57 – Directory
svn-1.13/ 2019-Dec-09 08:20:28 – Directory
svn-1.14/ 2021-Feb-24 06:00:18 – Directory

2、新增svn的最新版本库
vi /etc/yum.repos.d/wandisco-svn.repo
wandisco-svn.repo 文件添加的内容:
此处使用svn-1.14,即当前最新版本

[WandiscoSVN]
name=Wandisco SVN Repo
baseurl=http://opensource.wandisco.com/centos/$releasever/svn-1.14/RPMS/$basearch/
enabled=1
gpgcheck=0

3、卸载svn旧版本
如果安装有旧版本,先卸载
yum remove subversion
删除执行结果:
删除:
subversion.x86_64 0:1.7.14-16.el7

接着,清理安装缓存
yum clean all

4、安装最新版本的svn
yum -y install subversion

执行结果:
已安装:
subversion.x86_64 0:1.14.1-1
作为依赖被安装:
libserf.x86_64 0:1.3.9-1.el7
替代:
subversion-libs.x86_64 0:1.7.14-16.el7

5、查看svn版本
svnserve –version

执行结果:
[root@host-100 ~]# svnserve –version
svnserve,版本 1.14.1 (r1886195)
编译于 Jan 6 2022,14:30:34 在 x86_64-redhat-linux-gnu
svn当前最新版本:1.14.1

四、查看svn安装位置
which svnserve
执行结果:
/usr/bin/svnserve

五、创建svn 项目仓库目录
svnRepos为自定义目录
cd /
mkdir -p /var/svnRepos

也可以多增加一层文件夹:
mkdir -p /var/svnRepos/项目名称

六、svn项目初始化
如果不是root用户,命令前面要使用sudo
#修改目录拥有者
sudo chown -R java:java /var/svnRepos
#svn初始化
svnadmin create /var/svnRepos

执行结果:
[java@host-100 var]$ svnadmin create /var/svnRepos
[java@host-100 conf]$ cd /var/svnRepos
[java@host-100 svnRepos]$ ll
总用量 8
drwxrwxr-x. 2 java java 76 1月 7 10:17 conf
drwxrwsr-x. 6 java java 233 1月 7 10:17 db
-r–r–r–. 1 java java 2 1月 7 10:17 format
drwxrwxr-x. 2 java java 231 1月 7 10:17 hooks
drwxrwxr-x. 2 java java 41 1月 7 10:17 locks
-rw-rw-r–. 1 java java 246 1月 7 10:17 README.txt

conf 文件夹,存放配置文件
conf 文件夹下的三个重要文件:
authz:权限控制文件
passwd:帐号密码文件
svnserve.conf:SVN服务配置文件,配置账号和权限文件

七、svn配置用户和密码
编辑passwd文件:
cd /var/svnRepos/conf
vi passwd

配置格式是:用户名=密码
如:
[users]
# harry = harryssecret
# sally = sallyssecret
readUser=123456
appUser=123456

八、svn配置权限
编辑authz文件:
vi authz
在文件最下面增加用户和权限
格式是:用户名=权限
权限:
r:表示读权限
w:表示写权限
rw:表示可读可写权限
[/]:表示是svn根目录,[/]可以改为具体的文件夹目录,限制某些用户对某些文件夹的读写权限

示例:
[/]
appUser=rw
*=

[/aa]
readUser=r
appUser=rw
*=
最后一行*=表示其他用户无任何权限

另外一种配置方法,是使用用户分组(未测试)
[groups]
appGroup=appUser
readGroup= readUser

[/]
@appGroup=rw
@readGroup=r
*=

九、svn配置服务文件
vi svnserve.conf
在[general]下面增加下面的配置(也可以在配置上打开相应的选项,但# 后面的空格要删除):

#在[general]模块最下面增加的内容
#匿名访问的权限,可以是read,write,none,设置为none表示不能读写
anon-access=none
#授权用户可写
auth-access=write
#密码数据库配置
password-db=passwd
#访问控制数据库配置
authz-db=authz
#存储库的身份验证域。
#如果两个存储库具有相同的身份验证域,则它们应该
#拥有相同的密码数据库,反之亦然。默认领域是存储库的uuid。
#此处填写路径,这样就不会有相同的
#就是连接时提示的名称,如/var/svnRepos可修改为:我的svn仓库
realm=/var/svnRepos

#强制用户名大小写,默认是否
#lower,则全部变成小写;upper则全部变成大写;none则比较大小写。
# force-username-case = none

十、svn启动
查看svn是否启动:
ps -ef | grep svnserve

启动有权限问题,在下面有解决方案。
启动svn(端口默认为3690)
svnserve -d -r /var/svnRepos
修改端口启动:
svnserve -d -r /var/svnRepos –listen-port=9369
指定配置文件启动:
svnserve -d -r /var/svnRepos –listen-port=9369 –config-file=/var/svnRepos/conf/svnserve.conf
-d:表示守护进程
-r:svn根目录
–listen-port=9369:指定端口
–config-file:指定配置文件

查看svn进程
ps -ef | grep svnserve

杀掉svn进程
kill -9 [pid]

十一、打开svn防火墙端口
svn默认是3690端口
打开telnet服务:
firewall-cmd –permanent –add-service=telnet

开放端口:
默认的端口
firewall-cmd –permanent –zone=public –add-port=3690/tcp

自定义的端口
firewall-cmd –permanent –zone=public –add-port=9369/tcp

让端口生效:
firewall-cmd –reload

查看防火墙所有开放的端口
firewall-cmd –zone=public –list-ports

其它命令:

查看防火墙状态:
firewall-cmd –state

关闭防火墙
systemctl stop firewalld.service

禁止防火墙开机启动
systemctl disable firewalld.service

十二、svn设置开机启动
增加svnserve.service配置文件
vi /lib/systemd/system/svnserve.service

文件增加的内容:
[Unit]
Description=SVN Server service
After=network.target

[Service]
Type=forking
ExecStart= /usr/bin/svnserve -d -r /var/svnRepos –listen-port=9369 –config-file=/var/svnRepos/conf/svnserve.conf
Restart=on-abort

[Install]
WantedBy=multi-user.target

设置开机启动
sudo systemctl enable svnserve.service

执行结果:

[java@host-100 system]$ sudo systemctl enable svnserve.service
Created symlink from /etc/systemd/system/multi-user.target.wants/svnserve.service to /usr/lib/systemd/system/svnserve.service.

其它命令

启动svn
systemctl start svnserve.service

停止svn
systemctl stop svnserve.service

重启svn
systemctl restart svnserve.service

十三、svn启动时权限不够解决方案
查看svn服务状态:
systemctl status svnserve.service
svnserve[166290]: svnserve: E000013: 不能打开文件“/var/svnRepos/conf/svns…限不够

[root@host-100 /]# systemctl status svnserve.service
● svnserve.service – SVN Server service
Loaded: loaded (/usr/lib/systemd/system/svnserve.service; enabled; vendor preset: disabled)
Active: failed (Result: exit-code) since 五 2022-01-07 11:07:11 CST; 11s ago
Process: 166290 ExecStart=/usr/bin/svnserve -d -r /var/svnRepos –listen-port=9369 –config-file=/var/svnRepos/conf/svnserve.conf (code=exited, status=1/FAILURE)

1月 07 11:07:11 host-100 systemd[1]: Starting SVN Server service…
1月 07 11:07:11 host-100 svnserve[166290]: svnserve: E000013: 不能打开文件“/var/svnRepos/conf/svns…限不够
1月 07 11:07:11 host-100 systemd[1]: svnserve.service: control process exited, code=exited status=1
1月 07 11:07:11 host-100 systemd[1]: Failed to start SVN Server service.
1月 07 11:07:11 host-100 systemd[1]: Unit svnserve.service entered failed state.
1月 07 11:07:11 host-100 systemd[1]: svnserve.service failed.
Hint: Some lines were ellipsized, use -l to show in full.

svn启动权限不够解决方案

文件/etc/selinux/config先要添加可写权限
chmod -v u+w /etc/selinux/config

编辑文件:
vi /etc/selinux/config

修改(需要重启服务器)
SELINUX=enforcing
为:
SELINUX=disabled

收回文件/etc/selinux/config可写权限
chmod -v u-w /etc/selinux/config
chmod -R 777 svnserve.conf

重启服务器
reboot -f

作者 admin

发表评论

您的电子邮箱地址不会被公开。