使用 git 服务器管理网站

使用 git 服务器管理网站

我有一个使用 nginx 启动并运行的网站,并且我的网站中有一些内容我想使用 git 进行管理,以便其他人可以协作。

假设有一个名为爱丽丝并且网站的根目录位于 alice 的主目录中的某个位置,如 /home/alice/website/index.html

我们还假设我已经通过 gitolite 设置了一个 git 服务器用于访问控制,使用它需要设置一个我们将调用的虚拟用户git。该用户与其他用户不同有充分的理由爱丽丝

我想爱丽丝的网站能够显示一些 git 存储库的内容web_repo.git,其来源可以在 /home/git/web_repo.git 中找到,正如 gitolite 文档所要求的那样。

我的第一个想法是运行一个接收后在存储库中挂钩以将其与 /home/alice/website 的某些子目录同步,但这需要用户git将文件复制到其他用户的(爱丽丝) 主目录,最终导致文件权限错误。

我的构建中有某些限制,要求网站托管在爱丽丝的主目录,我想不出一个安全而优雅的解决方案来解决这个问题。

我刚刚开始管理这个小型服务器,如果有任何见解,我将不胜感激。

答案1

有成千上万种方法可以做到这一点!我将按照以下方式进行:

首先,我创建一个小的 shell 脚本,以用户身份alice在后台运行(tmux、屏幕或事件 initd/systemd 服务)。该脚本将不断地:

  1. /tmp/例如,监视 中的文件/tmp/new_commit
  2. 当文件出现时,如果需要,git pull最后加 a 。chmod -r
  3. 删除文件/tmp/new_commit
  4. 返回步骤 1。

然后我会在服务器端编写一个 git post-receive 挂钩,以在新提交和chmod 666它上创建此文件。

如果你想在这方面更加“专业”,我建议你看看 devops 和 CI 的东西。

相关内容