gpt4 book ai didi

node.js - 通过 Gitolite 和 post-receive hook 部署 Node 应用程序

转载 作者:太空宇宙 更新时间:2023-11-04 02:42:41 26 4
gpt4 key购买 nike

我正在尝试使用 Gitolite 为 Node 应用程序获得一个相当简单的部署过程。我已经在我的服务器上设置并运行了 Gitolite,并且我能够很好地插入它。

Gitolite 在名为 git 的用户下运行,我已经设置了一个 node 用户,希望用它来运行 Node 应用程序。

我的计划是将 Node 应用程序推送到 Gitolite,然后使用接收后 Hook 脚本将应用程序文件移动到应用程序所在的目录,在本例中为 /var/local/node-apps/my-node-app/。我像这样创建了 Node 应用程序文件夹:

sudo mkdir -p /var/local/node-apps/my-node-app
sudo chown node /var/local/node-apps/my-node-app

问题是我是一个 Unix 菜鸟,我对文件/文件夹权限一无所知。

/var/local/node-apps (以及 /var/local/node-apps/my-node-app)由 node 用户拥有,因此当 git 用户尝试 checkout 到此位置时,我会收到一堆权限被拒绝的错误。我在接收后使用的命令是:

GIT_WORK_TREE=/var/local/node-apps/my-node-app git checkout -f

我收到这样的错误:

remote: error: git checkout-index: unable to create file XXXX (Permission denied)
remote: fatal: cannot create directory at 'XXXX': Permission denied

解决这个问题的最佳方法是什么?我是否需要将 git 用户无密码 sudo 权限授予 su 作为 node 用户?或者可以通过更改组和文件夹权限以某种方式解决此问题?或者完全不同的方法?我迷路了!

谢谢!

最佳答案

使用 sudo 肯定可行,您在“post-receive hook permission denied “unable to create file” error ”中有一个示例,将 git 命令包装在脚本中。

Changed post-receive to:

sudo sh /usr/local/sbin/prgetsimpleappscom

Changed sudoers with visudo

git ALL = (root) NOPASSWD: /bin/sh /usr/local/sbin/prgetsimpleappscom

另一种方法是 cron 作业,作为 node 用户定期获取并拉入目标存储库(如果有新提交)。

关于node.js - 通过 Gitolite 和 post-receive hook 部署 Node 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12481197/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com