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的权限控制,不过好在弄好了,分享一下获益最深的一篇文章,供大家参考,原文是英文版的,我的英 ...
随机推荐
- 逆向破解之160个CrackMe —— 002-003
CrackMe —— 002 160 CrackMe 是比较适合新手学习逆向破解的CrackMe的一个集合一共160个待逆向破解的程序 CrackMe:它们都是一些公开给别人尝试破解的小程序,制作 c ...
- MyBatis 二级缓存全详解
目录 MyBatis 二级缓存介绍 二级缓存开启条件 探究二级缓存 二级缓存失效的条件 第一次SqlSession 未提交 更新对二级缓存影响 探究多表操作对二级缓存的影响 二级缓存源码解析 二级缓存 ...
- requestAnimationFrame 兼容方案
[toc] 编写涉及:css, html, js 在线演示codepen html代码 <div class="roll-box"> <div class=&qu ...
- flask项目部署到云服务器+域名绑定
一.效果演示 首页展示 播放页面 该项目部署只为学习,所以用的服务器是腾讯云服务器10元/月,域名也是在腾讯云买的.com 55元/年 因为本人比较穷 哈哈
- (十二)c#Winform自定义控件-分页控件
前提 入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章. 开源地址:https://gitee.com/kwwwvagaa/net_winform_custom_control ...
- DC-2靶机渗透
靶场下载链接: Download: http://www.five86.com/downloads/DC-2.zip Download (Mirror): https://download.vulnh ...
- JavaScript算法实现——排序
在计算机编程中,排序算法是最常用的算法之一,本文介绍了几种常见的排序算法以及它们之间的差异和复杂度. 冒泡排序 冒泡排序应该是最简单的排序算法了,在所有讲解计算机编程和数据结构的课程中,无一例外都会拿 ...
- Linux下sudo配置
转载请注明: 凌云物网智科嵌入式实验室: http://iot-yun.com/ 郭文学<guowenxue@gmail.com> [guowenxue@centos6_studi ...
- python 15 带参装饰器
目录 2. 带参数的装饰器 3. 多个装饰器装饰一个函数 2. 带参数的装饰器 #在装饰器的基础上再套一层 def auth(argv): def wrapper(func): def inner(* ...
- Python 基础1 - 位运算符
引言 本文主要介绍位运算符,实际上Python有以下7类运算符: [赋值运算符].[比较运算符].[算术运算符].[逻辑运算符].[身份运算符].[成员运算符].[位运算符] 位运算符 按位运算符是把 ...