LaunchAgentではなく、LaunchDaemonとして実行したいと思うかもしれません。デーモンはシステムコンテキストで実行されるため、誰かがログインする前にシステムの起動時に実行できます。エージェントはログインセッション内で実行されるため、ユーザーがログインするまで起動しません(rootではなく、高速切り替えで一度にログインすると、ユーザーごとにコピーが実行されます...)。 .plistファイル自体は、デーモンとエージェントの場合とほとんど同じですが、違いは/ Library/LaunchDaemonsか/ Library/LaunchAgentsのどちらに入れているかです。
ファイル自体はいくつかの要素によって異なります。私はそれがシステム起動時に開始される必要があると仮定しています。それは自分自身をデーモン化する(つまり、バックグラウンドに落とす)か? launchdは、自分自身をデーモン化するために起動するプログラムが好きではなく、それらを監視し、クラッシュ/終了した場合に再起動する可能性があります。ユニコーンがデーモン化しないオプションを持っている場合は、それを使用してください。もしそうでなければ、.plistファイルを少し変更してそれに適応させる必要があります。ユニコーンdaemonizes自体、あなたは(</dict>
行の前に)これを追加する必要があります場合は
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Disabled</key>
<false/>
<key>Label</key>
<string>local.unicorn</string>
<key>ProgramArguments</key>
<array>
<string>/full/path/to/unicorn</string>
<string>-c</string>
<string>/xyz/project/config/unicorn.rb</string>
<string>-E</string>
<string>production</string>
</array>
<key>WorkingDirectory</key>
<string>/xyz/project</string>
<key>RunAtLoad</key>
<true/>
<key>EnableTransactions</key>
<false/>
</dict>
</plist>
:まず、ここでは基本的な実行・アット・スタートアップLaunchDaemonの.plistファイルです
<key>KeepAlive</key>
<false/>
<key>AbandonProcessGroup</key>
<true/>
それならば/ライブラリ/ LaunchDaemons/LOCのようなファイルに何かを
<key>KeepAlive</key>
<true/>
名:デーモン化しない(またはあなたはそれがProgramArgumentsを変更することでdaemonizingをスキップするために得ることができます)、必要に応じて代わりにこれを追加することができますal.unicorn.plist(名前はラベルと一致する必要があります)、所有権をroot:wheelに、許可を600に設定します。sudo launchctl load /Library/LaunchDaemons/local.unicorn.plist
でアクティブ化するか、リブートしてください。
EDIT:トラブルシューティングのために、あなたはの.plistファイルに次のようなものを追加することができます。
<key>StandardOutPath</key>
<string>/tmp/unicorn.out</string>
<key>StandardErrorPath</key>
<string>/tmp/unicorn.err</string>
<key>Debug</key>
<true/>
次に(sudo launchctl unload /Library/LaunchDaemons/local.unicorn.plist
)をアンロードし、再読み込み、および/var/log/system.logチェック、/ tmpに/unicorn.out、/ tmp/unicorn.errには何が起こっているのかについてのヒントがあります。
EDIT2:
<key>UserName</key>
<string>choise</string>
EDIT3::のようなものを追加し、別のユーザーとして実行するために、私はRVMに非常に精通していないよ、それは、その構成をどのように扱うかが、あなたは、いくつかを設定する必要がありますように聞こえます環境変数を適切に設定する必要があります。通常のシェルではディレクトリにcdしていないので、.rvmrcファイルは決して実行されません。これを解決するにはいくつかの方法があります。
まず、あなたは、環境変数を設定する必要があるかを把握し、このようなものとの.plistファイルにそれらを追加することができます。
<key>EnvironmentVariables</key>
<array>
<key>ruby_string</key>
<string>ruby-1.9.2-p136</string>
<key>gemset_name</key>
<string>unicorn</string>
</array>
...しかし、それは特に、少し壊れやすいかもしれ彼らが変わるならば。一貫して動作するには、.rvmrcファイルと.plistファイルを一緒に更新する必要があります。
ユニコーンを起動する前に、実際にシェルを開き、すべての必要なセットアップファイルをsource
することをお勧めします。シェルスクリプトでこれを行うことも、必要なコマンドシーケンスをシェルに(単一の長い)パラメータとして含めることもできます。これを行うには、このようなものでProgramArgumentsセクションを置き換える:
<key>ProgramArguments</key>
<array>
<string>/bin/bash</string>
<string>-c</string>
<string>source /etc/rvmrc; source /Users/server/.rvmrc; source .rvmrc; /Users/server/.rvm/gems/[email protected]/bin/unicorn -c /Users/server/Sites/Rails/q/config/unicorn.rb -E production</string>
</array>
(ただし、存在しないrvmrcファイルのいずれかをsourceingておきます。)
あなたはOS Xであなたのユニコーンを開始するために管理しませんでした起動?はいの場合は、作業用のスクリプトをどこかに投稿してください。私はos xサーバで成功しなくても同じことをやろうとしています... – Yannis