1、通过yum命令自动安装svn相关服务和依赖
yum -y install subversion
2、查看安装路径
rpm -ql subversion
3、创建版本库目录,自定义目录
mkdir /www/svnrepos
4、创建svn项目,项目名为demo
svnadmin create /www/svnrepos/demo
5、进入 demo/config 对SVN进行配置
5.1 更改账号与权限 vim authz
按Shitf+G进入最后一行,然后按字母i进入编辑模式,插入以下数据(多个帐号换行插入),按Esc,输入:wq回车。[/]表示跟路径 /www/svnrepos;root = rw表示帐号admin有读写权限,r拉代码权限,w提交代码权限(读写权限)
[/]
root = rw
5.2 设置密码
vim passwd
按Shitf+G进入最后一行,然后按字母i进入编辑模式,插入以下数据(多个密码换行插入),按Esc,输入:wq回车。
root = 123
5.3 SVN配置
vim svnserve.conf
anon-access = none:表示禁止匿名用户访问。
auth-access = write:表示授权用户拥有读写权限。
password-db = passswd:指定用户名口令文件,即 passwd 文件。
authz-db = authz:指定权限配置文件,即 authz 文件。
realm = /www/svnrepos:指定认证域,即 /www/svnrepos 目录。
8、开启防火墙端口 3690 (防火墙开启,依次执行以下命令(这里以iptable防火墻为例),如果是腾讯云、阿里云需要到服务器控制台添加安全组,端口3690)
vi /etc/sysconfig/iptables
-A INPUT -p tcp -m state --state NEW -m tcp --dport 3690 -j ACCEPT
systemctl restart iptables.service
9、启动svn,可用ps -aux查看服务启动是否成功
svnserve -d -r /www/svnrepos
ps -ef | grep 'svnserve'
设置同步
假如现在有:
SVN版本库中的一个项目:/www/svnrepos/demo
网站目录:/www/wwwroot/demo
1、我们先将SVN版本库中的一个项目checkout到网站目录:
svn co file:///www/svnrepos/demo/ /www/wwwroot/demo/
这时,网站目录已成为SVN的工作副本,接下来利用SVN的钩子让这个工作副本自动更新。
2、在svn库(demo)的hooks下新建一个post-commit钩子,编辑内容
或者在hooks下复制 钩子文件
cp post-commit.tmpl post-commit
3、编辑钩子文件
vim post-commit 这是在hooks目录下执行
或者
vim /www/svnrepos/demo/hooks/post-commit
4、添加如下内容:
#!/bin/sh
REPOS="$1"
REV="$2"
export LANG="zh_CN.UTF-8" #防止乱码
svn update /www/wwwroot/demo --username root --password 123456 --no-auth-cache #设置登陆账号密码并不缓存
注:不要遗漏第一行的#!/bin/sh,否则post-commit会报代号255的错误。
5、修改文件权限为755,否则SVN无法调用执行
chmod 755 /www/svnrepos/demo/hooks/post-commit
OR:
chmod +x /www/svnrepos/demo/hooks/post-commit
6、检出项目
客户端访问svn服务器,地址:svn://IP地址:3690/demo(IP地址是你CentOS7.6的服务IP,demo是前面创建的项目名称,3690是svn默认端口)
OK,至此,就完成了svn文件提交后自动同步更新到网站目录的代码了。
感谢文章:https://blog.csdn.net/u011884440/article/details/70495615
https://blog.csdn.net/u012241426/article/details/103206572