使用PHP脚本远程部署git项目
准备工作:
1.coding.net创建私有项目
2.安装了Web服务 Git服务的服务器
服务器端:
1.nginx、php-fpm统一用www用户 www 目录,这个可以通过修改配置文件实现。
[root@yz_test www]# ps -ef|grep nginx
root 7826 1 0 Jul01 ? 00:00:00 nginx: master process nginx
www 7827 7826 0 Jul01 ? 00:00:01 nginx: worker process
root 9482 9437 0 06:33 pts/0 00:00:00 grep nginx [root@yz_test www]# ps -ef|grep php-fpm
root 7800 1 0 Jul01 ? 00:00:00 php-fpm: master process (/usr/local/php-5.6.22/etc/php-fpm.conf)
www 7801 7800 0 Jul01 ? 00:00:01 php-fpm: pool www
www 7802 7800 0 Jul01 ? 00:00:00 php-fpm: pool www
www 7803 7800 0 Jul01 ? 00:00:01 php-fpm: pool www
www 7804 7800 0 Jul01 ? 00:00:00 php-fpm: pool www
www 7805 7800 0 Jul01 ? 00:00:01 php-fpm: pool www
www 7806 7800 0 Jul01 ? 00:00:01 php-fpm: pool www
www 7807 7800 0 Jul01 ? 00:00:01 php-fpm: pool www
www 7808 7800 0 Jul01 ? 00:00:01 php-fpm: pool www
www 7809 7800 0 Jul01 ? 00:00:01 php-fpm: pool www
www 7810 7800 0 Jul01 ? 00:00:01 php-fpm: pool www
www 7811 7800 0 Jul01 ? 00:00:01 php-fpm: pool www
www 7812 7800 0 Jul01 ? 00:00:00 php-fpm: pool www
www 7813 7800 0 Jul01 ? 00:00:01 php-fpm: pool www
www 7814 7800 0 Jul01 ? 00:00:00 php-fpm: pool www
www 7815 7800 0 Jul01 ? 00:00:00 php-fpm: pool www
www 7816 7800 0 Jul01 ? 00:00:01 php-fpm: pool www
www 7817 7800 0 Jul01 ? 00:00:01 php-fpm: pool www
www 7818 7800 0 Jul01 ? 00:00:00 php-fpm: pool www
www 7819 7800 0 Jul01 ? 00:00:00 php-fpm: pool www
www 7820 7800 0 Jul01 ? 00:00:00 php-fpm: pool www
root 9484 9437 0 06:34 pts/0 00:00:00 grep php-fpm
2.生成Git用户公钥:用于clone时认证权限
ssh-keygen -t rsa -C "wangzhenxian@foxmail.com"
# 然后一直回车就行
# 生成的文件通常是 /root/.ssh/id_rsa,如果非root用户请查看提示上的路径
3.生成部署公钥
sudo -Hu www ssh-keygen -t rsa # 请选择 "no passphrase",一直回车下去
sudo cat /home/www/.ssh/id_rsa.pub # 查看生成的密钥内容,复制全部
4.准备钩子目录 项目目录
chown -R www:www /www/hook
chown -R www:www /www/repos
sudo -Hu www touch /mnt/www/hook/index.php
<?php error_reporting(1);
// 生产环境web目录
$target = '/home/wwwroot/website.com';
$token = '您在coding填写的hook令牌'; $wwwUser = 'www';
$wwwGroup = 'www'; $json = json_decode(file_get_contents('php://input'),true); if (empty($json['token'])||$json['token']!==$token) {
exit('error request');
} $repo = $json['repository']['name']; $cmd = "sudo -Hu www cd $target && git pull"; shell_exec($cmd);
5.修改git配置和保存git用户名密码
sudo -Hu www git config --global credential.helper store # 永久保存
sudo -Hu www git config --global user.name "wangzhenxian"
sudo -Hu www git config --global user.email "wangzhenxian@foxmail.com" # 邮箱请与conding上一致
在Coding.net
1.添加用户公钥
2.添加部署公钥
3.添加hook
个人感悟:
1.nginx .php-fpm 执行的用户组、用户保持统一
2.生产www用户的公钥,确保www用户在执行操作时 能从/home/www/.ssh 目录下到到公钥。
参阅:
http://blog.csdn.net/liu510817387/article/details/51594699
http://overtrue.me/articles/2015/01/how-to-deploy-project-with-git-hook.html
使用PHP脚本远程部署git项目的更多相关文章
- 使用idea来部署git项目
使用idea来部署git项目 一).将项目交由git管理 VCS ---->import into Version Cntorl ------>create Git Repository ...
- idea远程部署SpringBoot项目到Docker
安装docker服务或者系统学习docker参考这篇文档:https://shimo.im/docs/fE0eJCx8IIojQXzB/ 1.配置docker的远程端口 vim /usr/lib/sy ...
- Jenkins与Git持续集成&&Linux上远程部署Java项目
一.环境搭建 1.安装所需软件 Jdk Maven Jenkins Tomcat Xshell git 以上软件去官网下载,比较简单,不一一描述了 2.安装所需的jenkins插件 Git plugi ...
- 脚本:将git项目下载到本地并启动
大致思路:从git上clone源代码到本地:使用mvn package将源代码达成war/jar包:将打好的包放到tomcatpath/webapps/下:到tomcatpath/bin/下执行res ...
- ant+Jacoco 统计tomcat远程部署后项目接口自动化测试或者功能测试代码覆盖率
1.安装ant 环境,https://ant.apache.org/bindownload.cgi 2.下载jacoco包 https://www.eclemma.org/jacoco/ ,解压后, ...
- 利用WebHook实现PHP自动部署Git代码
平时项目代码都托管在Coding,然后每次提交了代码之后都要SSH到服务器上去git pull一次,很是繁琐,在看了OverTrue的<使用PHP脚本远程部署git项目>后就尝试在自己服务 ...
- Jenkins部署git+python项目实现持续集成
目录 1. 创建 item 2. 配置 3. 构建 1. 创建 item 接下来填写创建任务的名字,并选择创建一个 Freestyle project ,点击确认. 2. 配置 接下来进入到项目相关配 ...
- 图文详解远程部署ASP.NET MVC 5项目
话外篇: 由于感觉自己的机器比较慢,配置不好,所以最近想把之前的项目部署到实验室的服务器上,但是由于常不在实验室,所以在想能不能远程部署.因此今天专门研究了一下具体的过程,下面和大家分享一下.本人新手 ...
- 图文详解远程部署ASP.NET MVC 5项目 [转载]
话外篇: 由于感觉自己的机器比较慢,配置不好,所以最近想把之前的项目部署到实验室的服务器上,但是由于常不在实验室,所以在想能不能远程部署.因此今天专门研究了一下具体的过程,下面和大家分享一下.本人新手 ...
随机推荐
- Mybatis入门程序
作为一个java的学习者,我相信JDBC是大家最早接触也是入门级别的数据库连接方式,所以我们先来回忆一下JDBC作为一种用于执行SQL语句的Java API是如何工作的.下面的一段代码就是最基本的JD ...
- maven 每次update后影响接口实现类的问题
遇到maven每次update后,就会更改eclipse中java Compiler中的jdk compliance版本 <plugin> <groupId>org.apach ...
- C# 读取网页JSON数据
场景描述: 公司和别的系统需要对接,现在对方提供一个网址,数据都是json字符串,我需要对json数据进行处理. 提供的json数据如下格式 一.读取网址中的json数据 public string ...
- C#微信公众号——消息处理
当普通微信用户向公众账号发消息时,微信服务器将POST消息的XML数据包到开发者填写的URL. 一.接收POST请求,处理XML信息 public void ProcessRequest(HttpC ...
- 算法 排序NB二人组 堆排序 归并排序
参考博客:基于python的七种经典排序算法 常用排序算法总结(一) 序前传 - 树与二叉树 树是一种很常见的非线性的数据结构,称为树形结构,简称树.所谓数据结构就是一组数据的集合连同它们的储 ...
- [翻译] Tensorflow中name scope和variable scope的区别是什么
翻译自:https://stackoverflow.com/questions/35919020/whats-the-difference-of-name-scope-and-a-variable-s ...
- HTTP首部扫盲
[TOC] 之前在做web开发时使用到HTTP首部的时候遇到不熟悉的都是现用现查,时间一长印象就不深刻了.最近在重读<图解HTTP>,其中有一章是专门讲解HTTP首部的,讲解的HTTP首部 ...
- 使用开源数据库客户端DBeaver连接DB2数据库
下载安装 首先进入 官网 选择对应的版本进行安装. 下载下来后,一直惦记next即可完成安装(期间包括选择文件安装路径等操作,可按需修改). 连接db2 打开DBeaver,新建连接-->DBe ...
- Linux(一)VMware虚拟机的安装
vmware的安装文件: 链接:https://pan.baidu.com/s/1QGjNqRZzE-vV7Af0PI2QYA 密码:omfe 1.1 首先下载安装包 安装包的内容 1.2 双击exe ...
- 【Android】Android Studio3.1 Mac版本设置项目桌面icon
近来项目处于测试阶段,工作少了许多,就装了个最新的Android Studio,想写一下安卓.新建好项目,想设置个桌面的icon.我先准备好自己的icon图片,然后复制粘贴到res/mipmap-hd ...