centos7搭建svn服务器,本地进行访问

1.在服务器端安装svn服务器

yum -y install subversion

2.安装完成,测试是否安装成功

svnserve --version

3.创建放置svn库的目录

默认放置目录(个人喜欢)
mkdir /usr/local/svn
创建svn项目库
mkdir -p /usr/local/svn/test
svnadmin create /usr/local/svn/test
注:
每个创建成功的svn项目库中都有以下几个文件夹及文件:
conf(配置目录),db,format,hooks,locks,README.txt

4.配置svn库的文件

1.conf
vi conf/svnserve.conf
[general]
anon-access = none # 非授权用户无法登陆,read允许匿名访问
auth-access = write # 授权用户有写权限
password-db = passwd # 指定用户密码文件路径(默认指向conf/passwd)
authz-db = authz # 用户访问控制文件路径(默认指向conf/authz)
2.passwd
# 放置访问用户的帐号与密码
[users]
user1 = passwd # 帐号 = 密码 
user2 = passwd2
user3 = passwd3
3.authz
# 通过分组指定访问用户
[groups]
group_one = user1,user2
group_two = user3
# test:指定项目库的名称, /:指向放置项目库的目录,并指定用户组的访问权限
[test:/]
@group_one = rw
@group_two = r



5.放置centos7的3690端口(默认)如果本地访问不了,则可能是服务器没有开启对应端口

1.开放指定端口
firewall-cmd --zone=public --add-port=3690/tcp --permanent
# zone:作用域 # add-port:添加端口(端口/协议) # permanent:永久有效,不加则重启失效
2.重启防火墙
firewall-cmd --reload
3.查看开放端口的使用情况
netstat -ntlp # 查看当前所有tcp端口
netstat -ntulp|grep 3690

6.开启svn服务

1.关闭所有svn服务进程
killall svnserve
2.开启svn服务
svnserve -d -r /usr/local/svn/
# -d:守护模式 -r:指定svn服务的根目录

7.本地windows访问

1.安装svn客户端
2.新建文件夹,右键SVN Checkout
3.输入账号与密码

8.服务端配置开机启动

  a) 创建sh脚本,方便修改配置(个人喜欢放在对应软件目录)

vi /usr/local/svn/svn.sh

    输入以下内容,指定svn配置的目录(/usr/bin/svnserve 可根据命令which svnserve 进行查看;/usr/lcoal/svn 安装时配置的目录)

#!/bin/bash
 /usr/bin/svnserve -d -r  /usr/local/svn

    给编写的脚本加上权限

chmod 777 /usr/local/svn/svn.sh

b) 配置自定义开机启动

vim /etc/rc.d/rc.local

加上一行a步骤编写的脚本路径即可

/usr/local/svn/svn.sh

c) 重启测试svn是否自动开启

reboot # 重启
netstat -anp | grep svnserve # 有信息返回即成功设置

9.目录创建分支(测试分支、主分支)

测试分支:本地提交时自动更新到此目录(配置post-commit,详细看第11点)

a)创建测试分支目录(branches,根据项目粒度可细分:项目名_branches也可)

# 进入svn绑定的项目目录,创建branches目录
cd /usr/local/webs/project
mkdir branches

b) 关联svn项目

# svn目录关联web目录(替换成自己的目录)
svn co svn://.../project /usr/local/webs/project

c) 在本地进行checkout,这个即为所有项目的测试目录(如果是外包项目,则可以更细粒话:每个项目创建一个测试目录)

d) c点完成后,根据项目名称创建文件夹,提交文件夹到svn文件夹,作为项目初始化提交(如:创建文件夹,名称为:api),完成测试分支的配置。

主分支:功能测试完毕需要更新到正式环境时,手动svn up

a)在指定目录处创建目录(trunk,根据项目粒度可细分:项目名_trunk也可)

# 进入svn绑定的项目目录,创建trunk目录
cd /usr/local/webs/project
mkdir trunk

b) 根据项目名称svn checkout下测试环境的目录(第一版可上线的时候)

svn checkout svn://.../.../branches/api

c) 完成主分支的配置

10.服务端关联web目录

# 进入指定目录中或者直接指定目录 svn co svn://服务器IP地址/svn项目目录 网站目录地址
svn co svn://999.999.999.999/test /www/test

11.服务器编写hook文件,自动更新服务端web目录

a) 进入web目录对应关联的svn目录,找到hooks目录,编写post-commit脚本

cd /usr/local/svn/test
cd hooks
vim post-commit

b) 编写一下内容,保存

#!/bin/sh
REPOS="$1"
REV="$2"
WEB_PATH=/www/test # web目录
SVN_USER=username # 用户
SVN_PASS=password # 密码
WEB_USER=www # 指定用户组
LOG_PATH=/usr/local/svn/log/test.log # 指定更新日志,记录每次更新的时间与内容
echo `date "+%Y-%m-%d %H:%M:%S"` >> $LOG_PATH
echo `whoami`,$REPOS,$REV >> $LOG_PATH
export LANG=zh_CN.UTF-8 # 避免项目中上传中文名称文件报错(svn: E000022: Can't convert string from native encoding to 'UTF-8')
/usr/bin/svn update $WEB_PATH --username $SVN_USER --password $SVN_PASS --no-auth-cache >> $LOG_PATH

c) 为文件赋上执行权限

chmod a+x post-commit

注:如果日志目录无法创建,则进行权限设置即可。

d) 重启svnserve,生效配置,完成。

killall svnserve
svnserve -d -r /usr/local/svn

猜你喜欢

转载自blog.csdn.net/qq_36436407/article/details/102697269