通过Gitolite和post-receive hook部署Node Apps

时间:2012-09-18 16:30:18

标签: node.js unix deployment permissions gitolite

我正在尝试使用Gitolite为Node应用程序进行相当简单的部署过程。我有Gitolite设置并在我的服务器上工作,我能够很好地推进它。

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

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

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

问题是我是一个Unix菜鸟,而且我没有得到我的头文件/文件夹权限和wotnot。

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

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用户授予su用户无密码sudo权限给node?或者可以通过更改组和文件夹权限以某种方式修复此问题?还是完全不同的方法?我迷路了!

谢谢!

1 个答案:

答案 0 :(得分:0)

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

  

将收到后的内容更改为:

sudo sh /usr/local/sbin/prgetsimpleappscom
  

用visudo改变了sudoers

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

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

相关问题