编辑权限:
vim /etc/sudoers
CentOS利用WebHook实现PHP自动部署Git代码,其他系统原理相同
在服务器查看apache2(我用的apache服务)执行用户,执行代码:ps -ef | grep httpd   #我的服务名是httpd,这里根据自己真实的写,比如有的是apache2。
我apache的运行用户是www
然后编辑权限:

root    ALL=(ALL)       ALL
下加
www     ALL=(ALL) NOPASSWD: /usr/bin/git

1. 生成公钥
公钥有两个:1. git用户公钥,2. 部署公钥:
用户公钥
ssh-keygen -t rsa -C "youname@163.com"
# 然后一直回车就行
# 生成的文件通常是 /root/.ssh/id_rsa,如果非root用户请查看提示上的路径
部署公钥
sudo -Hu www ssh-keygen -t rsa # 请选择 “no passphrase”,一直回车下去
#www用户的主目录可以vi /etc/passwd 修改成/home/www,然后在www下建立.ssh目录
例如:www:x:1000:1000::/home/www:/sbin/nologin
2. 准备钩子文件
创建和修改目录权限:
mkdir /home/wwwroot/website.com/hook
chown -R www:www /home/wwwroot/website.com/hook
写入钩子文件:
sudo -Hu www touch /home/wwwroot/website.com/hook/index.php
<?php
        $hook = str_replace('\"','"',$_POST['hook']);//码云webhook返回的json数据对引号都转义了,替换一下。
        $json = json_decode($hook,true);
        $target = '/www/web/hook/public_html/repos/weshop';
        $token = '码云上新建钩子时的密码';
        $cmd = "cd $target; sudo -Hu www git pull";
        if ($json['password'] != $token) {
                exit('error request');
        }
        else
                echo shell_exec($cmd);
?>
确保你的hook文件可以访问:http://example.com/hook/index.php,钩子准备完成。

3.修改git配置和保存git用户名密码(这步看情况吧)
sudo -Hu www git config --global credential.helper store # 永久保存
sudo -Hu www git config --global user.name "Bantes" 
sudo -Hu www git config --global user.email "admin@xsooo.com" # 邮箱请与conding上一致

在GIT网站配置公钥

1.添加用户公钥

复制/root/.ssh/id_rsa.pub内容到个人设置页的SSH公钥里添加即可(https://coding.net/user/account/setting/keys)

2.添加部署公钥

复制/home/www/.ssh/id_rsa.pub的内容并添加到部署公钥:

选择项目 > 设置 > 部署公钥 > 新建 > 粘贴到下面框并确认

3.添加hook

初始化

1.我们需要先在服务器上clone一次,以后都可以实现自动部署了:

sudo -Hu www git clone https://git.coding.net/yourname/yourgit.git /home/wwwroot/website.com/  --depth=1
这个时候应该会要求你输入一次Coding的帐号和密码,因为上面我们设置了永久保存用户名和密码,所以之后再执行git就不会要求输入用户名和密码了。

**!!注意,这里初始化clone必须要用www用户**

2.往Coding.net提交一次代码测试:

在本地clone的仓库执行:

git commit -am "test hook" --allow-empty
git push

OK,稍过几秒,正常的话你在配置的项目目录里就会有你的项目文件了。

转载自:http://www.wdlinux.cn/bbs/thread-55659-1-1.html

CentOS利用WebHook实现PHP自动部署Git代码相关推荐

  1. 在gitlab 中使用webhook 实现php 自动部署git 代码

    在技术团队讨论中,我们决定从svn 迁移到 git ,于是使用了gitlab,代码自动部署使用了webhook 在服务器上 1.开启PHP需要的环境支持 服务器环境必须先安装git 环境,webhoo ...

  2. 利用WebHook实现自动部署Git代码

    目录 类型 coding 钩子 github 钩子 环境 服务端:阿里云虚拟主机(Ubuntu16.04) coding 自动部署 WebHook3.0 Windows 10 开发环境 部署 服务器虚 ...

  3. Jenkins之自动部署、代码安全扫描、自动化接口测试

    搭建Jenkins wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo rpm -- ...

  4. gitlab 自动推送代码到gitee_Gitlab 利用 Webhook+jenkins 实现自动构建与部署

    之前部署了Gitlab的代码托管平台和Jenkins的代码发布平台.通常是开发后的代码先推到Gitlab上管理,然后在Jenkins里通过脚本构建代码发布. 这种方式每次在发版的时候,需要人工去执行j ...

  5. 怎么把项目推到gitlab上_Gitlab利用Webhook+jenkins实现自动构建与部署

    之前部署了Gitlab的代码托管平台和Jenkins的代码发布平台.通常是开发后的代码先推到Gitlab上管理,然后在Jenkins里通过脚本构建代码发布. 这种方式每次在发版的时候,需要人工去执行j ...

  6. Php+WebHook实现项目自动部署 - 关于Git自动部署方案

    序言 测试环境:ubantu14.window10 测试Git平台:coding.net "了解一下" ①. git pull 了解一下 ②. Linux的SSH 了解一下 ③. ...

  7. 使用github提供的webhook服务完成自动部署网站

    Cover 前言 我的博客之前一直是手动更新的,需要自己打包,然后上传到网站.但是项目已经托管在github了,所以何不搞个自动部署呢? 想象一下,网站有修改之后,git push之后等几分钟,网站就 ...

  8. webhook php自动部署,git利用webhook实现自动部署​

    在项目部署时,之前采用的方式是登录服务器手动去pull代码,这样做很麻烦而且在服务器管理上也存在一些风险,github和gitlab都提供有webhook功能,可以在项目发生某些变化时,系统向指定的U ...

  9. CentOS 7.2安装Jenkins自动构建Git项目

    1.环境 本文使用VMWare虚拟机进行实验. 最终实现目标,在Jenkins服务器上新建构建任务,从Git服务器上拉取master HEAD(不编译,仅演示),部署到"目标服务器" ...

  10. 记录-gitlab自动部署-git拉取代码失败构建失败 + linux系统升级git(yum安装 + 源码安装)

    遇见的问题 fatal: git fetch-pack: expected shallow list 在使用gitlab自动构建部署时,遇到的一个问题我第一次构建部署的时候成功了,但是后面再去部署构建 ...

最新文章

  1. Spring源码分析【6】-ThreadLocal的使用和源码分析
  2. [转]文件传输协议(FTP)操作(上传,下载,新建,删除,FTP间传送文件等)实现汇总1
  3. 20145328《网络对抗》Web基础
  4. Edges图像边缘处理halcon算子,持续更新
  5. HALCON示例程序color_fuses.hdev通过颜色对保险丝进行分类
  6. php中一级标题和二级标题,什么是一级标题,一二三标题格式举例
  7. 编写一个C程序,实现以下功能:用一个函数实现两个字符串的比较,即自己写一个strcmp函数,函数原型为:int strcmp(char *p1,char *p2);设p1指向字符串s
  8. 3dmax电脑配置要求(3dmax需要什么样的笔记本配置?)
  9. 使用ETest实现汽车ECU的HIL测试
  10. 悉尼大学计算机学士,2017年悉尼大学计算机学士介绍
  11. JavaScript中canvas绘制太极图案
  12. [转]多媒体范例: 如何使用CSS来格式化TLF文本
  13. 什么是堆栈,堆和栈到底是不是一个概念
  14. opencv vs2010 应用程序无法正常启动(oxc000007b) 解决
  15. 51单片机的智能窗帘设计
  16. DL: Basic of C/C++(to be continued)
  17. mansory使用与UIScrollView
  18. 学历证书有用吗?到了社会才知道
  19. 计算机作业我家乡的变化英语作文,家乡的变化英语作文(通用7篇)
  20. TOM集团投资科技平台快速增长 录得卓越成绩

热门文章

  1. python interpreter下载_Pyonic Python 2 interpreter
  2. 记事本APP之Alpha报告
  3. 网吧用计算机性能配件清单,如何查看网吧电脑配置清单图文教程
  4. MapReduce统计以某字母开头的单词的平均长度
  5. HashMap常见面试考题
  6. python的print输出格式举例_python中print输出格式是什么
  7. [生存志] 第134节 兵锋十万踏匈奴
  8. low memory killer
  9. 怎么录制游戏视频,哪个电脑录屏软件好用?
  10. STM32的ETR引脚计数功能