webhook 自动部署代码
前话: 一般情况,自己在本地开发,代码改动后要push放到线上去看效果,但是我们还要到线上环境手动拉取代码库 git pull 下来, 一来一回太麻烦了。
现在用webhook就可以实现本地开发,push代码到GitHub上面时,线上自动同步更新的代码,省事多了。
1、首先在GitHub或者码云这些代码托管库上面添加好自己的项目;
2、把本地写好的两个文件上传到代码库, sync.php 和 sync.sh ; (其实就是本地push后自动请求sync.php, 里面执行 sync.sh, 最终就是执行 git pull 的命令)
sync.php:
<?php
echo '进来了...'; exec('sh sync.sh'); ?>
sync.sh: (我用的是默认的master分支,其它分支可自己定)
#!/bin/bash
/usr/bin/git pull origin master
3、 vim /usr/local/php/etc/php.ini # 找到 disable 删除 exec(用 linux命令 /disable, 然后 按n 往下找),因为这个函数默认被禁用了
vim /etc/passwd # 将 www 的 /sbin/nologin 改为 /bin/bash , www设置为登录
4、因为,我们的PHP执行其实是使用的www用户。默认都是www用户,PHP中执行git也是使用www用户。
所以,在线上环境首先要 切换到 www 用户(命令:su www);
5、设置公钥, 命令: ssh-keygen -t rsa -b 4096 -C "your_email@example.com", 这里填写自己的邮箱账号,弹出:Enter file ... key (/home/www/.ssh/id_rsa):, 然后一直 Enter 就好,结束后会在 /home/www/.ssh 这个目录下面生成一个公钥文件 id_rsa.pub,打开复制内容到GitHub代码库,添加后公钥管理那里。
6、在 /home/wwwroot/目录下面克隆出自己的项目,git clone git@XXX/test.git;
如果执行报错这种:
The authenticity of host 'gitee.com (120.55.226.24)' can't be established.
ECDSA key fingerprint is SHA256:FQGC9Kn/eye1W8icdBgrQp+KkGYoFgbVr17bmjey0Wc.
ECDSA key fingerprint is MD5:27:e5:d3:f7:2a:9e:eb:6c:93:cd:1f:c1:47:a3:54:b1.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'gitee.com,120.55.226.24' (ECDSA) to the list of known hosts.
再执行一次克隆就好 git clone git@XXX/test.git;
7、给线上的 sync.php 和 sync.sh 加执行权限 ; chmod +x sync.php ; chmod +x sync.sh
8、上面第4点说到了执行的是www用户,要让www用户免密码执行git命令才可以;
通过 vim /etc/sudoers 进去修改, 加入
www ALL=NOPASSWD:/usr/bin/git
9、最后一步, 在你的项目里添加webhook地址, http:XXX.com/sync.php 这种可以访问的, 就是访问sync.php 这个文件,让它去代码库自动拉取代码。
这样就可以在本地开发, push上去后,线上代码自动同步了。
另外,也可以添加钉钉机器人来推送通知;
webhook 自动部署代码的更多相关文章
- 关于gitlab+jenkins自动部署代码的实现
本人PHP开发者,项目组大多是PHP,少量java项目. 因公司目前服务器和项目的管理比较混乱,与领导商量后,决定尝试 gitlab+jenkins自动化部署(之前用的svn FTP手动部署代码),解 ...
- 在linux服务器上装svn版本管理,自动部署代码到项目
在linux服务器上装svn版本管理,自动部署代码到项目 http://bbs.aliyun.com/read/9715.html?spm=5176.7114037.1996646101.1.W3zw ...
- 在linux服务器上装svn版本管理,自动部署代码到web项目
在linux服务器上装svn版本管理,自动部署代码到项目 1.安装svn服务器端 yum install subversion 从镜像下载安装svn服务器端 中间会提示是否ok,输入y,确认 ...
- jenkins自动部署代码到多台服务器
下面讲一下如何通过一台jenkins服务器构建后将代码分发到其他的远程服务器,即jenkins自动部署代码到多台服务器. 1.下载 pulish over ssh 插件 2.系统管理 -> 系统 ...
- Jenkins 实现前端自动打包,自动部署代码及邮件提醒功能
在之前的公司,我们前端使用webpack构建项目,项目构建完成后,我们会使用ftp或linux的一些命令工具上传我们的文件到服务器上,这种方式虽然是可以,但是最近面试的时候,人家会问我前端如何部署项目 ...
- window、linux系统与linux服务器之间使用svn同步及自动部署代码的方法
摘要: 在家用PC,在公司用办公电脑对一个项目的代码进行修改时,会遇到代码同步的问题.本文讲解了代码同步及自动部署的解决办法. 实现方法: 1.首先在linux服务器上和linux上安装svn(sud ...
- svn钩子(hooks)自动部署代码到web目录
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/li956732806/article/details/71158869 web目录:/hoe ...
- 宝塔webHook自动同步代码的使用
#!/bin/bashecho ""#输出当前时间date --date='0 days ago' "+%Y-%m-%d %H:%M:%S"echo " ...
- 使用PHP自动部署GIT代码
最近在使用Coding的代码托管,顺便设置了WebHook自动部署,过程还是挺艰辛的,主要还是没搞懂Linux的权限控制,不过好在弄好了,分享一下获益最深的一篇文章,供大家参考,原文是英文版的,我的英 ...
随机推荐
- Netty学习(十)-Netty文件上传
今天我们来完成一个使用netty进行文件传输的任务.在实际项目中,文件传输通常采用FTP或者HTTP附件的方式.事实上通过TCP Socket+File的方式进行文件传输也有一定的应用场景,尽管不是主 ...
- [转载]线程池ThreadPoolExecutor使用简介
一.简介 线程池类为 java.util.concurrent.ThreadPoolExecutor,常用构造方法为: ThreadPoolExecutor(int corePoolSize, int ...
- 精通Android4.0开发视频【张泽华】-完整版下载
观看须知: 本视频教程为黑马程序员 张泽华老师历经2年时间整理 适合有JavaWeb基础同学学习,教程采用的AVI方式发布,所以看起来很流畅. 视频概括: 1. 本套视频不同于市面上任何一套andro ...
- flink 1.7.2 安装详解
##flink 1.7.2 安装需要java环境 下载地址 https://flink.apache.org/downloads.html#1.单机版 #创建用户flinkuseradd flink ...
- .netcore持续集成测试篇之web项目验收测试
系列目录 通过前面的单元测试,我们能够保证项目的基本模块功能逻辑是正常的,通过集成测试能够保证接口的请求是正常的.然而最终项目交付我们还需要对项目进行页面的行为进行测试,比如页面布局是否正常,按钮是否 ...
- Web Worker 使用教程
一.概述 JavaScript 语言采用的是单线程模型,也就是说,所有任务只能在一个线程上完成,一次只能做一件事.前面的任务没做完,后面的任务只能等着.随着电脑计算能力的增强,尤其是多核 CPU 的出 ...
- springboot启动慢解决方法
jdk的配置文件中,使用securerandom.source设置了熵源: cat /usr/java/jdk1.8.0_121/jre/lib/security/java.security secu ...
- 浏览器兼容问题-vue.js
前端时间和其他公司人合作,认识了vue.起初我们做手机端一般用这个技术.后来发现在web也可以使用. 然后自己摸索了下,发现这个技术对于数据的绑定果真很神奇,所在在一些绑定数据比较多,比较零散的画面时 ...
- 随笔编号-05 BigDecimal 处理集合
1 创建一个BigDecimal 对象 BigDecimal Sum = new BigDecimal(0); 2 一个BigDecimal 对象,保留2位小数点 Sum.setScale(2,B ...
- MySQL之备份和还原
在实际项目中对于数据库的安全是重中之重,为防万一我们需要做好备份工作.备份分为全量备份和增量备份,今天我们就来实践下备份和还原操作. 一.为什么需要备份 在生产环境中数据库可能会遭遇到各种各样的不测从 ...