实现SVN自动化部署

薄洪涛7年前Linux2217

当我们修改程序并通过SVN上传到服务器后,我们想立马刷新页面看到更改之后的效果,这时候就要用到SVN自动化部署了,所谓的自动化部署,就是当SVN提交后自动更新文件到项目目录

现在我们从头来部署一遍,看到底如何搭建


1、安装svn
yum install subversion
检测是否安装成功
svnserve --version

2、建立版本库

svnadmin create  /opt/svn/first
修改权限
chmod 755 /opt/svn/first

3、配置用户

进入到版本库first中,编辑用户文件passwd,新增两个用户:admin和guest。

$ vi /opt/svn/spring-hello-world/conf/passwd 
[users]
admin = admin
guest = guest
编辑权限文件authz,用户admin设置可读写权限,guest设置只读权限。
$ vi /opt/svn/spring-hello-world/conf/authz 
[first:/]
admin = rw
guest = r
编辑svnserve.conf:
$ cat /opt/svn/spring-hello-world/conf/svnserve.conf 
[general]
anon-access = none         #控制非鉴权用户访问版本库的权限
auth-access = write         #控制鉴权用户访问版本库的权限
password-db = passwd        #指定用户名口令文件名
authz-db = authz          #指定权限配置文件名
realm = 版本库路径     #指定版本库的认证域,即在登录时提示的认证域名称

4、启动服务
  启动SVN服务。
$ svnserve -d -r /opt/svn/first
   检查服务是否启动成功。
[root@host conf]# ps -aux | grep svn
Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQ
root     29446  0.0  0.4 152476  2340 ?        Ss   15:32   0:00 svnserve -d -r /opt/svn/first
root     29485  0.0  0.3 103380  2064 pts/1    S+   15:43   0:00 grep svn

通过netstat可以看到SVN打开了3690端口。

$ sudo netstat -tnlp
Proto Recv-Q Send-Q Local Address   Foreign Address  State       PID/Program name    
tcp  0      0 0.0.0.0:3690    0.0.0.0:*      LISTEN      16349/svnserve

       

目前为止,svn已经可以正常上传,我们要commit的时候自动化更新本地的目录(web目录和svn目录在同一台服务器上)

1、从服务器的本地svn上checkout最新版本代码到www目录下的project文件夹,注意本地svn服务器地址和端口号是在启动svn服务时就设置的,根据自己的配置修改,执行完本命令,已经提交的代码会自动复制到project目录下
svn co svn://localhost/First /var/www/html--username 'admin' --password 'admin'

2.png

2、在svn代码仓库的对应项目目录下创建post-commit文件,如果文件已存在,请清空文件内容后再编辑

  cd /var/svn/project/hooks
 vi post-commit

3、在该文件里添加如下代码,保存

   #!/bin/sh
   export.UTF-8
   /usr/bin/svn update --username SVN用户名 --password SVN密码 网站目录
4、修改post-commit的用户为www用户,给post-commit添加执行权限
chmod 755 post-commit
现在就可以了,自动更新
这里的svn和测试服务器是在一台机器上的
如果是两台机器,要考虑登陆的问题,都差不多,实现免密登陆,生成个秘钥就可以了,在以后的教程中我会详述免密登陆;


自动化部署的重点就是利用svn的钩子(每次提交后都会自动触发的hook)去同步文件,超级简单

相关文章

如何让命令在关闭终端后继续执行

我们在执行一些比较耗时的脚本的时候,必须要保持终端在线,如果电脑休眠了任务就直接被杀死了这时候我们可以用来执行命令,就会在后台自动执行 nohup 命令 &...

安装完宝塔后shadowsocks不能使用

安装完宝塔后shadowsocks不能使用

问题描述:近期买了个搬瓦工的服务器,配置了shadowsocks,可是FQ访问Google,速度还不错(看1080p视频还是可以的),然后想着安装宝塔来管理服务器,便于以后部署网站什么的,当安装完宝塔...

高负载均衡haproxy的搭建

高负载均衡haproxy的搭建

目的:做负载均衡步骤:做两台nginx服务器,一台haproxy转发器首先安装nginx1.安装相关的依赖包。yum install gcc -c++ yum ...

haproxy如何开启日志

默认haproxy是不记录日志的,但是调试的时候需要我们去记录日志,所以说一下日志的记录方法1.编辑 /etc/rsyslog.conf,放开如下代码,记住是udp# Provides&nb...

nginx转换post请求为get

nginx转换post请求为get

今天调银联收银台回调的时候,遇到一件特别坑的事情,我通过银联付款后,本来应该跳转到我自己定义的回调页面,但是每次都会返回405错误码,很是恼火;查了下日志2019/06/24 14:58:3...

Nginx如何获取get/post传递的参数?

有一些业务场景,需要我们用nginx做url的重写,这样的话我们就需要做参数的拼接,比如我们想把xxx.com/a/1/2 重写成yyy.com/b?a=1&b=2,就需要做参数的拼接;假如我...

评论列表

访客
2018-11-01 10:14:42

总结太好了,正好用到~

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。