CentOS7安装配置SVN及SVN Hook实战

1、何为svn?
Apache Subversion(简称SVN,svn),一个开放源代码的版本控制系统;用来管理文档,程序代码等文档的版本;svn相对git来说有点古老,是一个中心控制的版本控制系统,时至今日仍有不少企业依然使用svn做为代码等文档的管理服务;

今天我们就来先介绍下在CentOS7下安装部署svn服务与日常使用以及重点介绍svn的两个hooks使用;

2、环境介绍
Svn server:CentOS7.4_x64 ip:172.16.3.167 subversion 1.97 (最新稳定版);何用yum安装
关闭selinux 关闭防火墙(生产线上务必添加好防火墙规则)
测试端win7 下载安装Tortoisesvn客户端请下载与系统版本对应的客户端软件

3、安装Subversion

添加repo源
[root@localhost ~]# cat /etc/yum.repos.d/svn.repo
[WandiscoSVN]
name=Wandisco SVN Repo
baseurl=http://opensource.wandisco.com/centos/$releasever/svn-1.9/RPMS/$basearch/
enabled=1
gpgcheck=0

安装
[root@localhost ~]# yum install subversion -y

注意 系统自带源中安装的是1.7.x的版本,所以通过此源安装最新的版本;

二、svn服务器的配置

1、添加到系统服务
默认安装完安装包中不提供systemd服务,因此需要自行配置,以下是我的配置

[root@localhost ~]# cat /usr/lib/systemd/system/svnd.service
[Unit]
Description=subversion server daemon
Documentation=man:svn(8) man:svn(5)
After=network.target

[Service]
Type=forking
#User=svn
#Group=svn
EnvironmentFile=/etc/sysconfig/svnd      ##相关配置参数所在文件
ExecStart=/usr/bin/svnserve -d --listen-port $PORT --pid-file $pid_file --log-file $log_file -r $SVN_HOME
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
RestartSec=20s

[Install]
WantedBy=multi-user.target

[root@localhost ~]# cat /etc/sysconfig/svnd
##Configure for subversion

pid_file=/var/run/svn.pid
SVN_HOME=/data1/svn_data/projects      #svn主数据目录
log_file=/var/log/svnd.log
PORT=33690                  #自定义端口为33690

# systemed服务重载
[root@localhost ~]# systemctl daemon-reload

说明:以上的参数均是通过 svnserve --help 获取配置进去的!
创建目录
mkdir -pv /data1/svn_data/projects

启动服务

[root@localhost ~]# systemctl start svnd
[root@localhost ~]# systemctl status svnd
● svnd.service - subversion server daemon
  Loaded: loaded (/usr/lib/systemd/system/svnd.service; disabled; vendor preset: disabled)
  Active: active (running) since 五 2018-01-26 15:39:22 CST; 30min ago
    Docs: man:svn(8)
  Process: 4347 ExecStart=/usr/bin/svnserve -d --listen-port $PORT --pid-file $pid_file --log-file $log_file -r $SVN_HOME (code=exited, status=0/SUCCESS)
 Main PID: 4348 (svnserve)
  CGroup: /system.slice/svnd.service
          └─4348 /usr/bin/svnserve -d --listen-port 33690 --pid-file /var/run/svn.pid --log-file /var/log/svnd.log -r /data1...
1月 26 15:39:22 localhost.localdomain systemd[1]: Starting subversion server daemon...
1月 26 15:39:22 localhost.localdomain systemd[1]: Started subversion server daemon.

添加开机启动:
[root@localhost ~]#  systemctl enable svnd

2、添加账号
由于添加账号和密码比较频繁与繁琐,因此编写脚本处理,参考如下:

#!/bin/bash
#Author: san
#version: 1.0
#date: 2018-01-26
###########################
SvnDataDir=/data1/svn_data/projects
pre_commit_config=${SvnDataDir}/pre-commit
[ -d ${SvnDataDir}/CodeAuth ] || mkdir -pv ${SvnDataDir}/CodeAuth
[ -f ${SvnDataDir}/CodeAuth/authz ] || touch ${SvnDataDir}/CodeAuth/authz
[ -f ${SvnDataDir}/CodeAuth/passwd ] || touch ${SvnDataDir}/CodeAuth/passwd

prog="$1"
if [ $# -eq 0 ]
then
echo  "Have no project's name input,progame exit." && exit 0
fi
cd $SvnDataDir
[ -d $prog ]|| mkdir -p ${SvnDataDir}/$prog
read -p "Give a paassword:-> " propwd
#echo $propwd >>propwd.txt

/usr/bin/svnadmin create $SvnDataDir/$prog
cd $SvnDataDir/$prog/conf
if [ -f ${SvnDataDir}/CodeAuth/passwd ]
  then
    echo "$prog = $propwd" >>${SvnDataDir}/CodeAuth/passwd
else
        echo "[users]" >>${SvnDataDir}/CodeAuth/passwd
        echo "$prog = $propwd" >>${SvnDataDir}/CodeAuth/passwd
fi
echo "[$prog:/]" >>${SvnDataDir}/CodeAuth/authz
echo "$prog = rw" >>${SvnDataDir}/CodeAuth/authz

sed -i 's/^# anon-access = read/anon-access = none/g' svnserve.conf
sed -i 's/^# auth-access = write/auth-access = write/g' svnserve.conf
sed -i 's/^# password-db = passwd/password-db = \/data1\/svn_data\/projects\/CodeAuth\/passwd/g' svnserve.conf
sed -i 's/^# authz-db = authz/authz-db = \/data1\/svn_data\/projects\/CodeAuth\/authz/g' svnserve.conf
sed -i "s/^# realm = .*./realm = $prog projects /g" svnserve.conf

cp $pre_commit_config ${SvnDataDir}/$1/hooks/ && chmod +x ${SvnDataDir}/$1/hooks/pre-commit
systemctl restart svnd


添加可执行权限
[root@localhost ~]# chmod +x add.sh

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/033c27bc079c52ad6c63d922f891afbb.html