• 使用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

  • 相关阅读:
    ParamCount、ParamStr
    写一个可拖动的 TShape 回复 "韦韦" 的问题
    读十六进制文本到 Btye 数组的函数 回复 "峰哥!!!" 的问题
    网站速度优化
    [新功能]新增分类浏览页面
    [CN.Text开发笔记]嵌套Repeater的问题
    中秋祝福
    10 Golden rules for publishing your blog
    HttpCompressionModule 6的一个Bug及使用效果
    [CN.Text开发笔记]OnInit与运行期数据绑定
  • 原文地址:https://www.cnblogs.com/zendwang/p/7105012.html
Copyright © 2020-2023  润新知