![需要基本设置指导](https://linux22.com/image/1482948/%E9%9C%80%E8%A6%81%E5%9F%BA%E6%9C%AC%E8%AE%BE%E7%BD%AE%E6%8C%87%E5%AF%BC.png)
我设置了一个 CentOS 来使用 Apache 运行我们公司的网站。Apache 以用户 的身份运行apache
。现在,要使用 git 更新我们的网站代码,我设置了一个用户 say sumit
,并创建了一个执行该操作的 shell 脚本git pull
(我认为我们可以使用rsync
,但我不确定如何使用它)。
现在,我将此 shell 脚本设置为及时运行,并且它运行良好。但是,当它下载更改时,它会将文件所有者更改为apache:apache
,sumit:sumit
因为这是下载时使用的用户。我尝试放入chown
我的 shell 脚本,但它不会更改用户,因为它需要sudo
用户。
我如何确保使用git
1. 我可以管理权限(因此所有可写文件夹都不会改变或坚持我的需要)2. 下载的新文件保留给 apache。
哦,我确实尝试过使用用户运行 cron ,但是由于被 shell 禁止,apache
所以没有用。apache
答案1
您的问题在于,您使用 git 作为部署工具,但事实并非如此。Git 用于版本控制,仅此而已。当您想要将代码部署到某个地方时,您应该使用脚本或预构建的产品来检出正确的分支、复制相关文件、编译可能需要编译的任何内容,并在您的例子中设置权限。
有很多方法可以做到这一点。有商业构建服务器,如 TeamCity 或 Jenkins/Hudson(以及更多类似服务器),它们具有各种用于部署的内置功能。
或者,您可以使用 git 服务器上的 git hook 来调用一个脚本,该脚本会为您执行复制和权限设置。此 hook 显然需要以具有正确 chown/chmod 权限的用户身份运行,但您可以使用 ssh 密钥安全地实现此操作。