2013-02-01 8 views
6

私は現在、ステージング(Ubuntu)でForemanを実行しています。一度起動すればupstartの使用に切り替わります。フォアマンはNginxを起動できませんが、手動で起動できます。どうして?

マイ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のを開始することができます:私は$ foreman startを実行すると、他の三つのプロセスが正常に起動しながら

$ sudo service nginx start 

はしかし、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 

Sフォアマンによって開始されたときになぜnginxが起動しないのですか?

+0

「コード0で終了」ということは、多くのことを意味する可能性があります。通常、ログは/ var/log/nginxにあります。 –

+0

@TanelSuurhans提案していただきありがとうございます。残念ながら、2つのログがありますが、/var/log/nginx/access.logと/var/log/nginx/error.logの両方は空です。 – Undistraction

+0

代わりに '$ sudo foreman start'を実行するとどうなりますか? –

答えて

4

あなたのProcfileに問題があります。

コマンドは、always ask for a passwordになるため、foremanの中にsudoを使用することはできません。そのため、あなたはnginxを開始しておらず、ログは空です。

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

私は本当にお勧めしません:あなたは本当にprocfile内でsudoを使用する必要がある場合

あなたはこのようなものを使用することができます。その他のオプションはsudo foreman start

issue on githubを参照してください。詳細は、あなたが解決したいことです。

私にとってうれしければ投稿してください。

3

このサービスの管理を許可するには、ローカルユーザーにパスワードなしでsudoアクセス権を追加する必要があります。これは大きなセキュリティホールになりますが、コマンドを実行することでホワイトリストを作成すると、リスクが大幅に削減されます。

の/ etc/sudoersファイル:あなたはこれで慣れていないなら

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

別のオプションを実行することです私は、スクリプトしたい無パスワードをサービスコマンドと他の何かのためのsudoersエントリを追加していないお勧めしますnginxを直接、サービスマネージャではなく:

nginx: /usr/sbin/nginx -c /path/to/nginx.conf 
関連する問題