2013-02-01 16 views
6

मैं वर्तमान में स्टेजिंग (उबंटू) पर Foreman चला रहा हूं और एक बार जब मैं इसे काम कर लेता हूं तो अपस्टार्ट का उपयोग करने के लिए स्विच हो जाएगा।फोरमैन 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 शुरू कर सकते हैं:

$ sudo service nginx start 

हालांकि जब मैं $ foreman 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 

एस ओ फोरमैन द्वारा शुरू होने पर nginx क्यों शुरू नहीं हो रहा है?

+0

अपने nginx लॉग देखें, "कोड 0 से बाहर निकलने" का अर्थ बहुत सी चीजें हो सकता है। आम तौर पर लॉग/var/log/nginx –

+0

@TanelSuurhans पर सुझाव के लिए धन्यवाद मिल सकते हैं। दुर्भाग्य से दो लॉग हैं, लेकिन दोनों /var/log/nginx/access.log और /var/log/nginx/error.log खाली हैं। – Undistraction

+0

क्या होता है यदि आप इसके बजाय '$ sudo foreman start' करते हैं? –

उत्तर

4

आपकी प्रसंस्करण में एक समस्या है।

nginx आदेश foreman अंदर sudo उपयोग नहीं कर सकते, क्योंकि यह always ask for a password और होगा तो यह असफल हो जायेगी। यही कारण है कि आप 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

आपको अपने स्थानीय उपयोगकर्ता के लिए इस सेवा के प्रबंधन की अनुमति देने के लिए पासवर्ड के बिना सुडो पहुंच जोड़ने में सक्षम होना चाहिए। यह एक बड़ा सुरक्षा छेद हो सकता है, लेकिन यदि आप श्वेतसूची में क्या कमांड चला सकते हैं तो आप नाटकीय रूप से जोखिम को कम कर सकते हैं। मैं कोई पासवर्ड जोड़ने की सलाह देते sudoers सेवाओं आदेश और कुछ और के लिए प्रवेश आप स्क्रिप्ट हैं:

/etc/sudoers:

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

एक अन्य विकल्प यदि आप सहज के साथ इस चलाने के लिए किया जाएगा नहीं कर रहे हैं nginx सीधे, सेवा प्रबंधक के माध्यम से नहीं:

nginx: /usr/sbin/nginx -c /path/to/nginx.conf 
संबंधित मुद्दे