6

私は現在、ステージング(Ubuntu)でForemanを実行していますが、動作するようになると、upstartの使用に切り替わります。

私のProcfile.stagingは次のようになります。

nginx: sudo service nginx start
unicorn: bundle exec unicorn -c ./config/unicorn.rb
redis: bundle exec redis-server
sidekiq: bundle exec sidekiq -v -C ./config/sidekiq.yml

以下を使用してnginxを正常に起動できます:

$ sudo service nginx start

ただし、実行する$ foreman startと、他の3つのプロセスが正常に開始されますが、nginxは次のことを行いません。

11:15:46 nginx.1   | started with pid 15966
11:15:46 unicorn.1 | started with pid 15968
11:15:46 redis.1   | started with pid 15971
11:15:46 sidekiq.1 | started with pid 15974
11:15:46 nginx.1   | Starting nginx: nginx.
11:15:46 nginx.1   | exited with code 0
11:15:46 system    | sending SIGTERM to all processes
SIGTERM received
11:15:46 unicorn.1 | terminated by SIGTERM
11:15:46 redis.1   | terminated by SIGTERM
11:15:46 sidekiq.1 | terminated by SIGTERM

では、Foremanによって開始されたときにnginxが開始されないのはなぜですか?

4

2 に答える 2

4

これはProcfileの問題です。

nginxコマンドはsudo内部foremanで使用できません。使用すると失敗するためですalways ask for a password。そのため、開始nginxしておらず、ログは空です。

procfile内でsudoを本当に使用する必要がある場合は、次のようなものを使用できます。

sudo_app: echo "sudo_password" | sudo -S app_command
nginx: echo "sudo_password" | sudo -S service nginx start

私は本当にお勧めしません。他のオプションは呼び出すことですsudo foreman start

詳細については、githubでこの問題を確認してください。まさに、解決したい問題です。

それがあなたのために働くならば、私を投稿しておいてください。

于 2013-02-04T20:29:56.310 に答える
3

このサービスの管理を許可するには、ローカルユーザーのパスワードなしでsudoアクセスを追加できる必要があります。これは大きなセキュリティホールになる可能性がありますが、実行できるコマンドをホワイトリストに登録すると、リスクが大幅に軽減されます。servicesコマンドおよびその他のスクリプトを作成するためのno-passwordsudoersエントリを追加することをお勧めします。

/ etc / sudoers:

your_user_name       ALL = (ALL) NOPASSWD: /usr/sbin/service

これに慣れていない場合の別のオプションは、サービスマネージャーを介さずにnginxを直接実行することです。

nginx: /usr/sbin/nginx -c /path/to/nginx.conf
于 2013-02-06T15:20:31.950 に答える