1.通过gitlab的webhook来进行测试项目的自动部署;
2.php程序以www用户来执行,当执行exec("sh update.sh")时,update.sh脚本也是以www用户执行的
注:exec("sh update.sh >& error.log");可以将文件重定向到error.log文件中
3.结果发现,之前设置的ssh密钥是以root用户来设置的,php以www用户执行脚本中的git pull 命令时就没有权限
4.通过设置www下的ssh密钥, sudo -u www ssh-keygen ...  以www用户执行生成密钥的操作
5.gitlab的deploy keys 可以设置ssh密钥只能针对指定的项目,所以,针对项目的,我们将rsa.pub贴到指定项目的deploy keys中去,而针对用户的,我们将ssh密钥贴到gitlab的用户信息的ssh keys中去;

一下转载自携程ued
===============================================================

在百度搜索了一下 git webhook 这个关键字,没有看到有相关的详细的应用教程。

所以决定把 自己这段时间以来的摸索 写成文字 分享给大家 。

最近碰到这样的一个需求,就是 本地提交代码 到 git仓库以后 需要 网站 远程自动同步代码 。

git 的 webhook  正好能 满足 这个需求。

具体步骤:

服务器端:

1. 服务器端 生成 apache 的 deploy key

sudo -u apache ssh-keygen -t rsa -C “jianl@example.com”

2.给apache 操作目录的权限

第一种方法 直接给 目录 777 权限 简单粗暴

第二种方法 建立用户组  把 ftp用户 和 apache 添加到该组别里面 , 给予该组权限

groupadd gitwriters
adduser [yourusername] gitwriters
adduser apache gitwriters
chgrp -R gitwriters /path/to/your/repo
chmod -R g+rw /path/to/your/repo
 3.在需要自动同步的仓库打开hook
cd /项目/.git/
cp hooks/post-receive.sample hooks/post-receive
vim hooks/post-receive
#加入下面代码
GIT_WORK_TREE=/home/www git checkout -f
 4.加入接收 webhook的 脚本,  在项目 创建 update.php
$www_folder = "/2T/ftp/utools/uilib" ;//git仓库地址
$git_repo = "git@git.dev/.......abc.git" ;//执行指令
echo shell_exec(" cd $www_folder && git pull $git_repo 2>&1 ");
gitlab 端的设置:
找到项目的设置 ,
deploy key项   添加  直接 apache用户 生成的 ssh key webhook 项 添加 网站地址/update.php (正常能够访问的链接)  , 勾选  Push events
保存

完全以上配置 。服务器端自动同步代码的功能就能够实现了。

本文作者:l, jian 转载请注明来自:携程UED

转载于:https://my.oschina.net/haozi3156666/blog/364156

通过gitlab的webhook进行项目的自动部署所遇问题总结相关推荐

  1. Jenkins进阶-Gitlab使用Webhook实现Push代码自动部署(3)

    2019独角兽企业重金招聘Python工程师标准>>> Jenkins进阶-Gitlab使用Webhook实现Push代码自动部署(3) 博客分类: 运维 1.Jenkins 安装完 ...

  2. 5分钟快速掌握Jenkins,项目一键自动部署

    5分钟快速掌握Jenkins,项目一键自动部署 目录 前言 Jenkins是什么? Jenkins环境安装搭建 Jenkins基本使用介绍 Jenkins快速构建项目,项目自动化部署 学习总结 前言 ...

  3. GitLab 8.15中引入了自动部署和Web终端

    最新的GitLab 8.15版提供了新的持续集成和持续部署(CI/CD)特性,目的在于自动化不同平台上的部署,并使用命令行界面让试机(Staging)或产品部署更加便捷. \\ GitLab的自动部署 ...

  4. 使用宝塔部署node项目_使用宝塔面板进行项目的自动部署WebHook

    首先你要知道什么是WebHook,如果你真的不想知道那也没关系.总之就是在你push到git仓库时会从git仓库触发一个http请求.关于http的地址根据你不同的git仓库有不同的方式去配置. 首先 ...

  5. jenkins docker 自动部署 构建_jenkins+docker+vue项目的自动部署环境

    亮点 采用shell自定义脚本,控制集成部署环境更加方便灵活 如果服务器更换,重新部署的工作量会比较小 准备工作 首先我们得有一台服务器.我这里用的是阿里云ECS,华东节点.具体的购买操作的话百度会有 ...

  6. Jenkins+ansible+Tomcat实现项目远程自动部署

    1. Jenkins主机安装ansible并配置主机清单 [root@localhost ~]# vim /etc/ansible/hosts 尾部添加 [tomcat] 192.168.20.120 ...

  7. 【DevOps实战|基于Jenkins与Gitlab构建企业级持续集成环境系统】(Jenkins+Gitlab+Keepalived+Haproxy+Sonarqube+Http+灰度自动部署)

    目录 一.DevOps简介 二.CI/CD简介 1.代码部

  8. 使用jenkins进行项目的自动构建部署

    jenkins 简介 Jenkins是基于Java开发的一种持续集成工具,用于监控持续重复的工作,功能包括:持续的软件版本发布/测试项目和监控外部调用执行的工作. 官网地址地址: https://je ...

  9. myeclipse + tomcat 项目自动部署

    在MyEclipse中设置项目的自动部署需要综合考虑两个方面: 1是MyEclipse本身,通过主菜单中project->auto ,另一个就是tomcat配置文件.配置文件包括 conf 下的 ...

最新文章

  1. 如何解决VS2015编译C4996错误
  2. 如何突破DNS报文的512字节限制
  3. python潜力开源项目_10大Python开源项目推荐(Github平均star2135)
  4. ajax异步上传到又拍云的实例教程
  5. 【其他】U盘安装Ubuntu12.04成功后系统无法启动的问题
  6. leetcode--207. 课程表
  7. exec函数族实例解析
  8. erp系统方案书_门禁系统方案书
  9. 最新进展!单细胞数据显示ACE2在鼻腔、肾脏、睾丸均有分布!
  10. 计算机组成实验八,计算机组成原理实验八内存系统实验
  11. 读《Computer Systems: A Programmer’s Perspective》
  12. Spark sql优化
  13. AT2164 AGC006C Rabbit Exercise
  14. if(!!boolean)两次取反
  15. 前端开发【WEUI框架】移动端H5页面开发
  16. 漫画:什么是加密算法?
  17. python如何进行数据挖掘_如何使用python实现文本数据挖掘?
  18. 【Kafka】Cancelled fetchMetadata request with correlation id due to node -1 being disconnected
  19. 作为一名测试工程师,如何保证软件的质量?
  20. 我如何在GitHub Project上获得1,000个星星,以及在此过程中学到的教训

热门文章

  1. 计算机集群 -- Linux 集群技术概述
  2. 如何查看本机的ip地址和端口号
  3. Derby ij工具
  4. java concurrent 探秘
  5. Swift中键盘的弹出隐藏,页面抬高,Return键等的配置
  6. 说一说递归里的return返回!!!
  7. Windows Terminal美化杂记-Windows Terminal使用与配置
  8. Event日志关键字:EventLogTags.logtags
  9. 计算机机超级用户,电脑超级密码的设置方法
  10. 知乎liv笔记08 买车之后:如何保养不花冤枉钱?