2012-03-20 14 views
1

私は、Unixアカウント/許可のどのモデルがCapistranoで意図されているのかよく分かりません。capistrano、unix user、permissions

私はウィジェットと呼ばれるレールアプリを持っているとしましょう、私は乗客と一緒に展開するでしょう。一般的に、pre-capistranoでは、./widgetディレクトリ全体を 'widget'というユーザが所有したいと思っています。そして、デフォルトでは、乗客はファイルを所有するユーザーとして実行されるため、デフォルトの乗客はappプロセスをユーザー 'ウィジェット'として実行します。

そして、この「ウィジェット」アカウントはかなり限定された権限しか持たないのがポイントです。ウェブアプリケーションはそのアカウントの下で実行されるでしょうか? 「:セットアップキャップデプロイを」、それは望んでいる

しかし、私が実行したときに、今の「ウィジェット」、ユーザー:

は、だから、私はキャップ

セットを教えて、ファイルが「ウィジェット」によって所有されるようにしたいので、そのアカウントから「sudo」する。 「ウィジェット」アカウントがsudo権限を取得することは決してありません。このアカウントは限られた権限を保持しています。

さて、私はキャップにsudoを使わないように言うことができますが、実際には必要なことをするためにprivsを持っていないでしょう。

これにも回避策があります。しかし私は思考を始めます、なぜ私は車輪を再発明しなければならないのですか?私は間違いなくキャップのレシピのポイントは私にここでいくつかのベストプラクティスを与えることだと思った。とにかく...ここで人々は実際に何をしていますか?

インストールには1つのunixアカウントを使用しますが、それから何らかの理由で他のものに「chown」する必要がありますか? 1つのUNIXアカウントを使用しますが、何か非キャップ(人形?)で十分なセットアップをして、アカウントを開始するためにsudoする必要はありませんか?何?私は何が欠けていますか?

答えて

0

ウェブサーバーとしてNginxで最も一般的に使用されるPassengerを使用すると、頭痛の種を避けることができます。

次に、Webサービスを再起動する権限を持たないウィジェットのユーザーは、それが存在して、そのファイルを見たときに彼のパスと旅客内のファイルが自動的にnginxのを再起動します作成されます。

これはあなたのconfig/deploy.rbに次を経由して有効になっている:

名前空間: 作業を行う展開:やる開始。終了 タスク:停止します。再起動、::役割=>:アプリ、: タスクを終了=除い> {:no_release =>真}やる ラン "タッチ#{File.join(CURRENT_PATH、 'TMP'、 'restart.txt')}" end end

MySQL/DB管理の他の特権タスクに関しては、database.ymlはレーキ移行タスクを処理するために必要な資格情報を提供します。

宝石、ルビー、またはレールのアップデートをシステム全体でインストールするには、本当に唯一の特別なものが必要ですが、その多くはプロダクション環境のセットアップ/インストール方法によって異なります。

あなたはsudoを無効にし、あなたのCapistranoの展開プロセス中にエラーが発生し、そこからピックアップかどうかを確認することができ旅客+ DB用Nginxは、別の資格情報が与えられました。

+0

私は乗客とのtmp/restart.txtを理解しています(どちらもapacheまたはnginx)。しかし、それは私の質問に答えるものではありません、人々は一般的にアカウントとアクセス許可をどのように扱うのか、どのアカウントがログイン用のキャップに設定されているのか、ファイルを所有するアカウントはどうなっているのですか? 。 – jrochkind