2010-01-13 22 views
10

शुरू करते हैं। मैं पैसेंजर का उपयोग करके फेडोरा 12 पर रेल एप्लिकेशन पर रूबी चलाने के लिए सर्वर स्थापित करने की प्रक्रिया में हूं।पैसेंजर का उपयोग करते हुए पैसेंजर 12 में यात्री/mod_rails फेडोरा 12 में प्रारंभ करने में विफल रहता है जब आप Apache

मैं, मंच है जहाँ मैं पैसेंजर स्थापित किया है पर हूँ इसे सेट अप के रूप में निर्धारित है, लेकिन जब मैं पुनः आरंभ निम्न त्रुटियों मिल अपाचे:

[Wed Jan 13 15:41:38 2010] [notice] caught SIGTERM, shutting down 
[Wed Jan 13 15:41:40 2010] [notice] SELinux policy enabled; httpd running as context unconfined_u:system_r:httpd_t:s0 
[Wed Jan 13 15:41:40 2010] [notice] suEXEC mechanism enabled (wrapper: /usr/sbin/suexec) 
[Wed Jan 13 15:41:40 2010] [error] *** Passenger could not be initialized because of this error: Cannot create FIFO file /tmp/passenger.25235/.guard: Permission denied (13) 
[Wed Jan 13 15:41:40 2010] [notice] Digest: generating secret for digest authentication ... 
[Wed Jan 13 15:41:40 2010] [notice] Digest: done 
[Wed Jan 13 15:41:40 2010] [error] *** Passenger could not be initialized because of this error: Cannot create FIFO file /tmp/passenger.25235/.guard: Permission denied (13) 
[Wed Jan 13 15:41:40 2010] [error] python_init: Python version mismatch, expected '2.6', found '2.6.2'. 
[Wed Jan 13 15:41:40 2010] [error] python_init: Python executable found '/usr/bin/python'. 
[Wed Jan 13 15:41:40 2010] [error] python_init: Python path being used '/usr/lib/python26.zip:/usr/lib/python2.6/:/usr/lib/python2.6/plat-linux2:/usr/lib/python2.6/lib-tk:/usr/lib/python2.6/lib-old:/usr/lib/python2.6/lib-dynload'. 
[Wed Jan 13 15:41:40 2010] [notice] mod_python: Creating 4 session mutexes based on 256 max processes and 0 max threads. 
[Wed Jan 13 15:41:40 2010] [notice] mod_python: using mutex_directory /tmp 
[Wed Jan 13 15:41:40 2010] [notice] Apache/2.2.14 (Unix) DAV/2 Phusion_Passenger/2.2.9 PHP/5.3.0 mod_python/3.3.1 Python/2.6.2 mod_ssl/2.2.14 OpenSSL/1.0.0-fips-beta3 mod_perl/2.0.4 Perl/v5.10.0 configured -- resuming normal operations 

जैसा कि आप देख सकते हैं, वहाँ अनुमतियों की समस्या जब है यात्री को प्रारंभ करने की कोशिश कर रहा है:

[Wed Jan 13 15:41:40 2010] [error] *** Passenger could not be initialized because of this error: Cannot create FIFO file /tmp/passenger.25235/.guard: Permission denied (13) 

जब अपाचे शुरू होता है, यह/tmp में एक फ़ाइल पैदा करता है:

d-ws--x--x. 2 root root 4096 2010-01-13 16:04 passenger.26117 
ActiveRecord::StatementInvalid (Mysql::Error: Can't create/write to file '/tmp/#sql_5d3_0.MYI' (Errcode: 13): SHOW FIELDS FROM `users`): 

फिर त्रुटि अनुमति मुद्दों के लिए /tmp निर्देशिका के साथ अंक:मैं सीधे mongrel_rails start -e production साथ दोगला ऊपर फायरिंग से अनुप्रयोग चलाने अगर इसके बजाय, मैं निम्नलिखित देखते हैं।

मैं समाधान के बारे में एक नुकसान में हूं। मुझे यकीन नहीं है कि यह केवल निर्देशिका अनुमतियों या फेडोरा की SELinux सुरक्षा से संबंधित है।

किसी भी मदद की सराहना की जाएगी। धन्यवाद।

उत्तर

13

मैं फ्रेड के रूप में ही किया था, बजाय एक समय में यह एक त्रुटि करने का सिवाय इसके कि: setenforce 0

  • पुनः प्रारंभ अपाचे चलाकर

    1. अनुमोदक मोड में जाएं, और अपनी साइट को मारा और के लिए इसका इस्तेमाल करते हैं थोड़ी देर सामान्य
    2. भागो grep httpd /var/log/audit/audit.log | audit2allow -M passenger
    3. semodule -i passenger.pp
    4. setenforce 1
    5. पुनः प्रारंभ अपाचे चलाकर वापस मोड को लागू करने के लिए जाओ और अपनी साइट का परीक्षण - उम्मीद है कि यह सब पहले की तरह काम करना चाहिए!

    ध्यान दें कि यह मूल रूप से Centos SELinux सहायता पर प्रक्रिया का एक विशिष्ट उदाहरण है - इसे जांचें।

  • 2

    शुरू होने से पहले setenforce 0 चलाना आपको यह जांचने देगा कि यह SELinux है या नहीं। setenforce 1 बाद में चलाने के लिए मत भूलना।

    +0

    धन्यवाद। ऐसा लगता है कि यह SELinux है। अपाचे को पुनरारंभ करने से पहले 'setenforce 0' चलाना परिणामस्वरूप चल रहा था। क्या कुछ ऐसा है जो मैं SELinux को अक्षम नहीं करने के लिए देख सकता हूं, जो मुझे लगता है कि अक्षम करने का कोई अच्छा विचार नहीं है, लेकिन यह सक्षम होने के साथ मेरा एप्लिकेशन चल रहा है? – dbarros

    +0

    'audit2why' और' audit2allow' आपको पहुंच की अनुमति देने के लिए SELinux नीति के साथ आने में मदद कर सकता है, लेकिन मैं फ़ाइलों को कहीं और डालने पर विचार करता हूं, उदा।/var/run/यात्री, साथ ही साथ। –

    +0

    आप सुझाव दे रहे हैं कि अपाचे में एप्लिकेशन के वर्चुअलहोस्ट में _PassengerTempDir_ को _/var/run/passenger_ तक सीमित कर दिया जाए? – dbarros

    3

    मुझे सेंटोस 5.4 में एक ही समस्या है, SELinux यात्री के रास्ते में हो रही है।

    /var/चलाने/यात्री को PassengerTempDir स्थापना बस/tmp के बजाय नई निर्देशिका में आप एक ही अनुमति त्रुटियों देता है:

    [Mon Feb 22 11:42:40 2010] [error] *** Passenger could not be initialized because of this error: Cannot create directory '/var/run/passenger/passenger.3686' 
    

    मैं तो/var की सुरक्षा के संदर्भ बदल सकते हैं/चलाने/यात्री इस त्रुटि को पिछले पाने के लिए:

    chcon -R -h -t httpd_sys_content_t /var/run/passenger/ 
    

    ... और कहा कि उस निर्देशिका के भीतर यात्री अस्थायी निर्देशिका बनाने की सुविधा देता है, लेकिन नहीं फ़ाइलें:

    [Mon Feb 22 12:07:06 2010] [error] *** Passenger could not be initialized because of this error: Cannot create FIFO file /var/run/passenger/passenger.3686/.guard: Permission denied (13) 
    

    विचित्र रूप से, रिकर्सिव चॉक को फिर से चलाने से इस त्रुटि को दूर नहीं किया जाता है, यह इस बिंदु पर मर रहा है, और यही वह जगह है जहां मेरा SELinux ज्ञान अस्पष्ट हो जाता है।

    Phusion Passenger guide अनुभाग 6.3.5 और 6.3.7 में कुछ उपयोगी विचार हैं, लेकिन वे समस्या को पूरी तरह से हल नहीं कर रहे हैं।

    +0

    एर्ट: यह अनिवार्य रूप से मैं भी था जहां मैं भी था। अंत में, मैंने काम करने के लिए SELinux बंद कर दिया। आदर्श नहीं है, लेकिन यह अभी के लिए करेगा। – dbarros

    +0

    मैं एक ही निष्कर्ष पर आया था। – Ert

    3

    आपको केवल httpd_sys_content_t अनुमति से अधिक की आवश्यकता है।मैं शुरू कर दिया चीजों को पाने के लिए निम्न तकनीक का उपयोग करें:

      ऑडिट लॉग पर एक पूंछ शुरू
    • : tail -f /var/log/audit/audit.log
    • पुनः लोड अपाचे: apachectl restart
    • /tmp/निर्देशिका पर जाएं: cd /tmp
    • तो सिर्फ 1 लाइन जोड़ा गया है कमांड का उपयोग करें: tail -1 /var/log/audit/audit.log | audit2allow -M httpdfifo
    • ध्यान दें कि 'httpdfifo' नाम सिर्फ एक नाम है जिसे देखा गया त्रुटि को प्रतिबिंबित करने के लिए चुना गया है।
    • यह 'httpdfifo.pp' नाम की एक फ़ाइल तैयार करेगा। अपाचे यहां पर आप आदेश जारी करने के लिए है के बाद से एक फीफो बनाने देने के लिए: semodule -i httpdfifo.pp
    • यह करने के लिए जारी रखें जब तक सभी अंकेक्षण त्रुटियों का समाधान कर दिया गया है (यह अपने सिस्टम Centos 5.4 चल रहा है पर अनुमतियों के 4 अलग तरह लिया)
    0

    मैं क्या दान Sketcher और फ्रेड Appleman सुझाव की कोशिश की, यानी दोहराने निम्नलिखित:

    yum install setroubleshoot 
    echo > /var/log/audit/audit.log # clear irrelevant errors 
    cd ~ 
    service httpd restart # try booting passenger -- audit.log now shows the relevant permission errors 
    tail -f /var/log/httpd/error_log # check that passenger is still failing due to permission errors 
    sealert -a /var/log/audit/audit.log > selinux-diag.txt # translate the permission errors 
    # read and check that you are happy with selinux-diag.txt 
    # and either follow its specific advice, or if it just wants you to grep into audit2allow, then: 
    cat /var/log/audit/audit.log | audit2allow -M mypol # grant everything just denied 
    semodule -i mypol.p # commit new permissions 
    

    लेकिन यह 5 या 6 बार करने के बाद, मैं, और उसी के कुछ नए त्रुटियों के खिलाफ आ रहा रखा "audit2allow" के साथ अनुमति देने की कोशिश करने के बाद भी त्रुटियां आईं।

    अंत में मैं सिर्फ SELinux बंद कर दिया, साथ:

    echo 0 >/selinux/enforce