1

Gitoliteを使用してNodeアプリの非常に単純なデプロイプロセスを実行しようとしています。私はGitoliteをセットアップしてサーバーで作業していますが、問題なくプッシュできます。

Gitoliteは、というユーザーの下で実行されており、Nodeアプリの実行に使用したいユーザーをgit設定しました。node

私の計画では、NodeアプリをGitoliteにプッシュしてから、受信後フックスクリプトを使用して、アプリが存在するディレクトリ(この場合)にアプリファイルを移動します/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ユーザーがこの場所にチェックアウトしようとすると、多数の許可拒否エラーが発生します。ポストレシーブで使用しているコマンドは次のとおりです。

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ますか?または、グループとフォルダーのアクセス許可を変更することで、これを何らかの方法で修正できますか?または完全に別のアプローチ?道に迷いました!

ありがとう!

4

1 に答える 1

0

sudoを使用すると確かに機能しますが、「受信後のフック許可が「ファイルを作成できません」というエラーが拒否されました」という1つの例があり、gitコマンドをスクリプトでラップしています。

受信後を次のように変更しました:

sudo sh /usr/local/sbin/prgetsimpleappscom

visudoでsudoersを変更しました

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

nodeもう1つのアプローチは、ユーザーが定期的に宛先リポジトリをフェッチして(新しいコミットがある場合は)プルするcronジョブです。

于 2012-09-18T16:49:10.870 に答える