網站部署經過git的webhook

<?php

/**
  • draguophp

  • 2016.1.9linux

  • 經過git hook 自動化部署git

  • 在網站目錄 mkdir hookweb

  • 在hook中放置該文件用於接收hook請求shell

  • 要在visudo 中添加apache

  • www-data ALL=(ALL) NOPASSWD: ALLjson

  • 這裏面有一個原則,就是apache 的運行用戶要擁有執行腳本的權限,ubuntu

  • 由於權限的問題我出現了不少的問題,centos

  • ubuntu測試經過less

  • 修改/etc/selinux/config 文件

  • 將SELINUX=enforcing改成SELINUX=disabled

  • centos 測試經過php >5.3
    */

    ini_set('max_execution_time', '0');
    // 生產環境目錄
    $web_dir = __DIR__.'/../casarover';
    // 準備部署的文件
    $dir = '/var/www/casarover';
    // hook password
    $pwd = '這個是密碼的部分';

    // 接收hook

    $data = $_POST["hook"];
    $json = json_decode($data,true);

  1. (empty($json)) {

    header("Location: http://www.draguo.cn");

    }

  2. ($json['password'] !== $pwd) {

    echo "password is wrong";
       exit();

    }

    // 執行的腳本內容
    $shs = array(

    "cd $dir && sudo git pull",
       "sudo rm -rf $web_dir/* ",
       "cd $dir/web && sudo rm -rf .settings/ docs/ tests/ .buildpath .project .zfproject.xml website/less/ ",
       "sudo cp -r $dir/web/* $web_dir/"
        );
  3. ($shs as $sh) {

    echo $sh;
       echo "<br>";
       shell_exec($sh);

    }

    ?>

相關文章
相關標籤/搜索