zoukankan      html  css  js  c++  java
  • 使用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

  • 相关阅读:
    A Node Influence Based Label Propagation Algorithm for Community detection in networks 文章算法实现的疑问
    Fast Newman-FN算法以及模块度定义介绍
    Label Propagation Algorithm LPA 标签传播算法解析及matlab代码实现
    设计一个smartnic
    Intel GEN11 GPU
    Intel GEN9 GPU
    Shared Virtual Memory (SVM) Functions
    connect via ssh to virtualbox guest vm without knowing ip address
    smartnic
    技术精品翻译
  • 原文地址:https://www.cnblogs.com/zendwang/p/7105012.html
Copyright © 2011-2022 走看看