PHP设置git钩子文件自动部署代码至WEB服务(nginx)

 

vi /etc/sudoers

NOTICE:以下环境仅适用于测试服务器,基于安全性考虑,请勿在正式服务器和开发环境使用。

前置条件

Git库:阿里云code

nginx/php-fpm 所属组和用户 :nginxuser

服务器:LNMP

1.给nginxuser 设置sudo权限

root@ms:vi souders

#添加 nginxuser ALL=(ALL:ALL) NOPASSWD:ALL

2.在项目目录下从Git库获取项目

#打开项目目录
cd /var/www/html/hooks
#创建钩子文件,单独存在于服务器与Git项目不同
mkdir hook
touch index.php
#克隆项目
git clone https://code.aliyun.com/Marhal/hooks.git
#更改用户和权限
chown -R nginxuser:nginxuser hooks/
#根据自己的情况去设置权限
chmod -R 777 hooks/

3.编写钩子文件index.php上传至服务器

<?php

$temp     = file_get_contents("php://input",true);
$msg     = date('Y-m-d H:i:s',time());
if(empty($temp)){
    echo 'access defind';
    //file_put_contents("./hooks.log", "access defind $msg"."\r\n",FILE_APPEND);
    exit();
}

$params = json_decode($temp,true);
//file_put_contents("./hooks.log", '参数'.json_encode($params)." $msg"."\r\n",FILE_APPEND);
//设置用户组 可以设置多个用户
$user     = array('Marhal');
if(!isset($params['user_name']) && !in_array($params['user_name'],$user)){
    echo 'user_name error,access defind';
    //file_put_contents("./hooks.log", "user_name error,access defind $msg"."\r\n",FILE_APPEND);
    exit();
}
//项目根目录
$root     = "/var/www/html/hooks";

//git仓库地址
$repo     = "https://code.aliyun.com/Marhal/hooks.git";

//执行指令
echo shell_exec("cd $root && sudo git pull $repo");

echo shell_exec("sudo chown -R www-data:www-data $root");

4. 项目结构如下

3695739e50279b1e20aa82a0efbb822122e.jpg

5.永久设置git账户

切换至nginxuser 然后进入项目目录执行

cd /var/www/html/hooks
git config --global credential.helper store

接着继续执行

sudo git pull

按照提示系统会提示输入用户名和密码,输过这一次,以后就不用了。

6.在git库项目设置中写入自己的钩子文件路径

e9ae4029e96e718e3637825ef82bb2350f9.jpg

然后在本地修改git项目,提交后,代码会在git库和服务器同步。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值