
私はnginxを使用してウェブサイトを運営していますが、他の人が共同作業できるようにgitを使用して管理したいコンテンツがいくつかあります。
という名前のファイルがあるとします。アリスそして、ウェブサイトのルートディレクトリは、/home/alice/website/index.htmlのようなアリスのホームディレクトリのどこかにあります。
また、アクセス制御のためにgitoliteを介してgitサーバーを設定したとします。これを使用するには、呼び出す仮想ユーザーを設定する必要があります。子。このユーザーは他のユーザーとは異なる理由があります。アリス。
私の考えではアリスWebサイトは一部のGitリポジトリの内容を表示できます。web_repo.git、ソースはgitoliteドキュメントで要求されているように/home/git/web_repo.gitにあります。
私の最初の考えは、以下を実行することでした。受信後/home/alice/websiteの一部のサブディレクトリと同期するためにリポジトリを接続しますが、これにはユーザーが必要です。子他のユーザーのファイルをコピーします(アリス) ホームディレクトリが原因でファイル権限エラーが発生します。
私のビルドには、Webサイトをホストする必要がある特定の制限があります。アリスホームディレクトリについては、この問題に対する安全でエレガントな解決策は思い出されません。
私はちょうど小さなサーバーを管理し始めました。
答え1
これを行う方法は何千ものあります!私は次のように進みます:
alice
まず、ユーザー(tmux、screen、またはevent initd / systemdサービス)でバックグラウンドで実行される小さなシェルスクリプトを作成します。スクリプトは常に次のことを行います。
/tmp/
たとえば、監視しているファイルです/tmp/new_commit
。- ファイルが表示されたら、
git pull
必要に応じて末尾にを追加します。chmod -r
- ファイルの削除
/tmp/new_commit
。 - ステップ1に戻ります。
次に、サーバー側にgit post-receiveフックを作成して、新しいコミットにchmod 666
このファイルを作成します。
この分野でもう少し「プロフェッショナル」になりたい場合は、デブオプスとCI関連の内容を調べることをお勧めします。