通过Gitolite和post-receive hook部署节点应用程序

我正在尝试使用Gitolite来获得Node应用程序的一个相当简单的部署过程。 我有Gitolite的设置和在我的服务器上工作,我能够把它推到罚款。

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

我的计划是将Node应用程序推送到Gitolite,然后使用post-receive钩子脚本将应用程序文件移动到应用程序所在的目录,在这种情况下, /var/local/node-apps/my-node-app/ 。 我创build了像这样的Node应用程序文件夹:

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

问题是我是Unix的noob,我没有得到我的头文件/文件夹权限和wotnot。

/var/local/node-apps (也是/var/local/node-apps/my-node-app )是由node用户拥有的,所以当git用户试图检出这个位置时,我得到一堆权限否认错误。 我在post-receive中使用的命令是:

 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权限作为node用户? 或者可以通过更改组和文件夹权限以某种方式修复? 或者完全不同的方法? 我迷路了!

谢谢!

使用sudo肯定会起作用,在“ post-receive hook permission denied”无法创建文件“error ”的例子中,将git命令封装在脚本中。

更改后收到:

 sudo sh /usr/local/sbin/prgetsimpleappscom 

用visudo改变了sudoers

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

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