通过部署和Gitolite节点应用程序后收到钩(Deploying Node Apps via Gi

2019-10-17 05:58发布

我试图得到一个相当简单的部署过程中会使用Gitolite节点的应用程序。 我有Gitolite设置和我的服务器上的工作,我能推到它的罚款。

Gitolite被用户称为下运行git ,我已经设置一个node ,我很希望用它来运行的节点应用的用户。

我的计划是推动节点应用Gitolite,然后用后期收到钩子脚本到应用程序文件移动到目录中的应用程序生命,在这种情况下, /var/local/node-apps/my-node-app/ 。 我创建这样的节点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用户密码的sudo的权利, sunode的用户? 或者可以这样莫名其妙地通过改变组和文件夹的权限固定的吗? 或一个不同的方法完全? 我迷路了!

谢谢!

Answer 1:

使用sudo肯定会工作,你必须在一个例子“ 后收到钩权限被拒绝‘无法创建文件’错误 ”,包裹在脚本的Git命令。

更改后接收到:

sudo sh /usr/local/sbin/prgetsimpleappscom

改变sudoers文件与visudo命令

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

另一种方法将是一个cron作业为node用户定期获取和(如果有新的承诺),在目标回购拉动。



文章来源: Deploying Node Apps via Gitolite and post-receive hook