PHP +Git 部署线上生产环境更新代码

6 篇文章 0 订阅
3 篇文章 0 订阅

1、高手在民间-先贴代码

<?php
/***
 * User:peate
 * Email:356522375@qq.com
 * Desc:欢迎各位交流
 *
 * 热更新代码
 * 1、传入项目名称
 * 2、编写linux下执行命令
 * 3、执行PHP中的exec 执行命令
 *
 * #命令解读:
 * #进入到项目的仓库根目录下
 * #cd /usr/local/nginx/html/{$project}/
 * #重置当前仓库上个版本代码--防止仓库有更改导致更新失败,sudo 切换最高权限执行(相当于root)
 * sudo git reset --hard
 *#拉取代码 git pull  2>&1 错误转标准输出
 * sudo git pull 2>&1
 */
$project = isset($_GET['project']) ? trim($_GET['project']) : '';
if (!empty($project)) {
    echo $project . '---正在进行热更新,请稍等...' . "<br/>";
    $shell = "cd /usr/local/nginx/html/{$project}/ && sudo git reset --hard && sudo git pull 2>&1";
    exec($shell, $out);
    var_dump($out);
    echo "<br/>" . $project . '---正在进行热更新,更新完成' . "<br/>";
} else {
    exit('Well done.');
}

2、linux git执行权限要设置一下

如果不配置sudo的话,上面这段更新git代码是100%无法正常使用的,因为sudo要root密码,那我们只想给git相关的命令在用sudo执行的时候不用密码,其他sudo命令一定要密码怎么办?

1.查看git的在哪里执行命令

[root@email ~]# whereis git 
git: /usr/bin/git /usr/share/man/man1/git.1.gz


2.查看php是什么用户在运行的

[root@email public]# ps  -ef|grep  php 
root      1111     1  0  2019 ?        00:00:14 php-fpm: master process 
nobody   25036  1111  0  2019 ?        00:00:02 php-fpm: pool www
nobody   25055  1111  0  2019 ?        00:00:02 php-fpm: pool www
nobody   28265  1111  0 Jan01 ?        00:00:01 php-fpm: pool www

3.配置git命令sudo不用密码 vim /etc/sudoers 

## Allow root to run any commands anywhere 
root    ALL=(ALL)       ALL
nobody  ALL= NOPASSWD:/usr/bin/git

PS:
    vim /etc/sudoers 配置完成保存退出即可生效,然后再访问php的脚本就可以成功了
如果需要给多个sudo命令免密可以多个就用逗号隔开:
nobody ALL= NOPASSWD:/usr/bin/git,/usr/local/nginx/sbin/nginx

3、以上即可配置完成~~~~

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值