zoukankan      html  css  js  c++  java
  • php在linux下配制webhook

     exec有3个参数,第一个是要执行的命令,第二个是参数是一个数组,数组的值是由第一个命令执行后生成的,第三个参数执行的状态,0表示成功,其他都表示失败。

    1.linux 切换用户

    果当前是root用户,那么切换成普通用户test用以下命令:
    su - test
    如果要切换回root用户,那么用以下命令:
    su或su -

    2.在 linux 中运行 php 的用户,和 WebHooks 触发时,运行 php 的用户是两个用户

    sudo mkdir -p /home/www/.ssh
    sudo chown -R www.www /home/www/.ssh
    sudo -Hu www ssh-keygen -t rsa

    3. sudo -Hu www git clone https://git.coding.net/Tinywan/auto-test.git /home/www/web/hook/auto-test/ --depth=1

    初始化克隆的时候要用www用户拉取

    4.生成公私钥

    sudo -Hu www ssh-keygen -t rsa # 请选择 "no passphrase",一直回车下去
    #sudo cat /var/www/.ssh/id_rsa.pub # 这个只是针对单个项目的
    sudo cat /home/www/.ssh/id_rsa.pub # 查看生成的密钥内容,复制全部

    -Hu www 命令: 
    -u 代表切换到哪一个用户,这里说的是www 
    -H 代表切换HOME环境变量的值,也就是password文件中www用户对应的home目录

    5.weehook文件内容

    <?php

    $cmd = "cd /www/wwwroot/nxxxx/nxx/ &&sudo git reset --hard origin/pt && sudo git pull origin pt && sudo git pull --all && sudo git pull origin pt 2>&1";

    $res = array();
    exec($cmd,$res);

    var_dump($res);

    6.原因

    1、我们服务器上的web文件,大多是用户和用户组都是www,所以平时运行那些PHP文件,也都是www用户运行的。那么我们就必须以www用户来吧代码仓库clone下来,然后以www的身份去生成ssh密钥
    ssh-keygen -t rsa -C "your_email@youremail.com",生成之后记得把公钥放在github里的项目配置里。

    要以www用户创建公私钥才能hook成功。

    转:https://blog.csdn.net/qq756684177/article/details/81335649

    https://www.v2ex.com/amp/t/455526

    https://www.cnblogs.com/wdw31210/p/11211978.html

    https://www.cnblogs.com/wdw31210/p/11009968.html

  • 相关阅读:
    线程安全的signals
    排序
    TCMalloc : ThreadCaching Malloc
    C++箴言:争取异常安全的代码
    windows 内存泄露debug的相关函数
    分析几个驱动
    CAsyncSocket对象不能跨线程之分析 (转载)
    优化理论
    标 题: C++0x把Concept去掉了
    几个流行的http 服务器开源软件
  • 原文地址:https://www.cnblogs.com/ygyy/p/11827587.html
Copyright © 2011-2022 走看看