在centos下使用git hooks自动部署代码的用户权限问题

目前我使用git hooks将每次同步到服务器上的代码,更新到生产环境中。
首先声明:我的centos服务器上建立了两个用户一个是git一个是www
git是用来同步代码的
www是宝塔面板创建的

因为执行git hooks命令的是linux服务器的git用户
而生产环境是www用户。
这就导致了git用户无法更新属于www用户的文件夹。

目前我想到的解决办法:
1.把git加入www用户组,给用户组rwx权限(不知道会不会有隐患),用的是宝塔面板管理生产环境。

2.直接让git hooks访问url来激活php脚本来更新生产环境。(觉得有点啰嗦)

3.不要git用户,直接用www用户来同步代码。

不知道大家有没有更好的办法。
让git用户和www用户同时存在,且都能操作生产环境的目录

阅读 3.4k
1 个回答

建议不使用git用户,直接用www用户来同步。

我的githook.php是属于root用户:

<?php

$project = $_GET['project'];
$branch = $_GET['branch'];

if(empty($project) || empty($branch)){
    exit('error');
}

$path = "/usr/local/nginx/html/{$project}";

if(is_dir($path)) {
    $cmd = "cd {$project} && sudo git pull origin {$branch} 2>&1 && sudo chown -R nginx:nginx {$path}";
}else{
    $cmd = "mkdir {$project} && cd {$project} && sudo git pull origin {$branch} 2>&1 && sudo chown -R nginx:nginx {$path}";
}
$res = array();

exec($cmd,$res);
var_dump($res);
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题