使用git在服务器上更新代码,经常导致权限变了,日志没有写进去,怎么解决?

使用git pull在服务器上更新代码,经常导致权限变了,日志没有写进去,怎么解决?

直接在服务器上 git pull 拉代码,经常需要:

chown -R www.www /data/wwwroot/
find /data/wwwroot/ -type d -exec chmod 755 {} \;
find /data/wwwroot/ -type f -exec chmod 644 {} \;

来解决问题,不然有时会造成日志写不进去 error_log($content, 3, $logFile);

要怎么解决这个问题呢?

或者是我这样使用git来部署代码的方式有问题

还是和git的配置有关,git config core.filemode false这样可以解决吗,怀疑是git拉的时候更改的www/log目录的权限。

阅读 3k
2 个回答

可以这么做,使用运行php-fpm的用户去运行命令

sudo -u www GIT_SSH_COMMAND="ssh -i /root/.ssh/id_rsa"  git pull

替换/root/.ssh/id_rsa key路径

一. 如果决定继续使用git来部署代码
如果你的开发机(提交代码的机器)是 Linux ,请确保 git commit 时的文件权限是正确的。
如果你的开发机(提交代码的机器)是 Windows ,每次部署的时候就跑一遍 chmod 吧。
使用git来部署代码,这是个使用习惯罢了,不能说有问题。只不过理所当然的可能会面临这些问题。

二. 如果想更换其他方式部署代码
可以试试 Git+Jenkins+Docker 这种 自动化打包部署 的方式,虽然有学习成本,但是值得尝试。

三. 如果只是跑跑开发环境测试,不是交付测试或交付部署
直接上 BCompare 这种代码合并工具。人工成本最高,但是非常适合个人调试(相对于上一条)。(但非常不适合用于交付)

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