2011-06-11 10 views
19

के साथ रेल यात्री समस्या समस्या मैं apache2 और mod_rails (फ़्यूज़न पैसेंजर) के साथ ubuntu10.10 पर रेल सर्वर पर रूबी सेट करने का प्रयास कर रहा हूं।अपाचे 2

मैंने पहले से ही रूबी 1.9.2-पी 0 और रेल 3.0.8 स्थापित किया है और यात्री-इंस्टॉल-अपाचे 2-मॉड्यूल और यात्री मणि (v3.0.7) के साथ यात्री स्थापित किया है।

यह मुझे मेरे अपाचे कॉन्फ़िगरेशन फ़ाइल में 3 लाइन जोड़ने के लिए कहता है। इसलिए मैं '/etc/apache2/apache2.conf' में ये पंक्तियां कहा:

LoadModule passenger_module /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.7/ext/apache2/mod_passenger.so 
PassengerRoot /usr/local/lib/gems/1.9.1/gems/passenger-3.0.7 
PassengerRuby /usr/local/bin/ruby 

और मैं अपने '/etc/apache2/httpd.conf' संपादित और कहा:

NameVirtualHost *:80 

<VirtualHost *:80> 
ServerName 192.168.0.2 
DocumentRoot /var/www/webop/public 

<Directory /var/www/webop/public> 
Allow from all 
Options -MultiViews 
</Directory> 
</VirtualHost> 

मैं भी पता चला है कि फ़ाइल mod_passenger.so में /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.7/ext/apache2/ वास्तव में मौजूद नहीं है, इसका नाम mod_passenger.c है। लेकिन मुझे इससे कोई त्रुटि नहीं मिली है।

सर्वर केवल एक लैन के माध्यम से सुलभ होना चाहिए। जब मैं सर्वर तक पहुंचता हूं तो मैं अपने ऐप के सार्वजनिक फ़ोल्डर में सभी फाइलें और निर्देशिका देखता हूं लेकिन ऐप स्वयं शुरू नहीं होता है।

जब मैं अपाचे को पुनरारंभ करता हूं तो यह मुझे बताता है कि mod_rails पहले ही लोड हो चुका है, इसलिए मुझे लगता है कि यात्री चल रहा है लेकिन मुझे पता नहीं चल रहा है कि यह मेरा ऐप क्यों शुरू नहीं करता है!

अग्रिम धन्यवाद!

उत्तर

12

मुझे अंत में पता चला कि समस्या क्या थी: मैंने अपनी रूबी स्थापना को गड़बड़ कर दिया।

में/usr/local/I में ruby1.9.2-p0 स्थापित था (जो संस्करण मैं उपयोग करना चाहता था) लेकिन/usr/i में ruby1.8.7 स्थापित था।

यात्री को किस रूबी संस्करण का उपयोग करने के लिए भ्रमित किया गया था, इसलिए मैंने लोड मोड, पैसेंजर रूट और पैसेंजररबी पथ को apache2/mods-enable/passenger.load और .config में सही पथों में बदल दिया और अंत में काम किया! दोनों फाइलें स्वचालित रूप से बनाई गईं जो एक पुनर्वितरण की समस्या का कारण बनती हैं: अपाचे स्टार्टअप पर एक चेतावनी 'mod_passenger पहले ही लोड हो चुकी थी'। तो मैंने

LoadModule passenger_module /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.7/ext/apache2/mod_passenger.so 
PassengerRoot /usr/local/lib/gems/1.9.1/gems/passenger-3.0.7 
PassengerRuby /usr/local/bin/ruby 

अपाचे कॉन्फ़िगरेशन से हटा दिया और चेतावनी गायब हो गई!

शायद यह किसी और दिन किसी और की मदद करेगा!

+1

मेरे पास मेरे apache2 फ़ोल्डर के अंदर भी mods-enabled नहीं है! क्या किया जा सकता है? – vishB

+0

@vishB कोई और विवरण? क्या आपने किसी ट्यूटोरियल का पालन किया? आपने पहले से क्या प्रयास किया? –

1

मुझे लगता है कि वे चाहते हैं कि आप उन तीन पंक्तियों को अपनी httpd.conf फ़ाइल में रखें, न कि आपके apache2.conf में। कम से कम इस तरह मैंने इसे हमेशा किया है।

+0

मैंने दोनों तरीकों की कोशिश की, दोनों काम नहीं कर पाए। apache2.conf में httpd.conf शामिल नहीं है? वैसे भी आपके जवाब के लिए धन्यवाद! –

+0

हाँ, आप शायद सही हैं। यह अंधेरे में एक शॉट था। आप जिस व्यवहार को देख रहे हैं उस पर कोई और जानकारी? जब आप अपने ब्राउज़र में यूआरएल पर नेविगेट करने का प्रयास करते हैं तो क्या होता है? क्या आप अपाचे या आपके रेल ऐप लॉग में कुछ भी देखते हैं? – dpb

+0

मुझे अंत में पता चला कि समस्या क्या थी और यात्री अब ठीक से चल रहा है। आपकी सहायताके लिए धन्यवाद! –

34

कारण mod_passenger.so मौजूद नहीं है क्योंकि आपने अपाचे मॉड्यूल स्थापित नहीं किया है। निष्पादित करें:

passenger-install-apache2-module 

यह आपके मणि निर्देशिका के अंदर mod_passenger.so फ़ाइल बनाने जाएगा, और आप तीन लाइनों अपने apache2.conf फ़ाइल में कॉपी करने के लिए दे।

यात्री मॉड्यूल आपके वर्तमान रत्न में स्थापित है ताकि आपको परियोजनाओं के बीच कोई संघर्ष न हो। आप रूबी के किसी भी संगत संस्करण का उपयोग कर सकते हैं, और आरएमवी के माध्यम से, और संभवतः आरबीएनवी के माध्यम से आपको पसंद किए गए किसी भी रत्न का उपयोग कर सकते हैं। यह रुबी के एक संस्करण से अगले संस्करण तक एक अच्छा आसान अपग्रेड पथ बनाता है।

+0

यह भी रुचि का हो सकता है https://rvm.io/integration/passenger/ – carnator

2

आज मैं एक क्लीनर समाधान में आया हूं। यह भविष्य के उपयोगकर्ताओं की मदद कर सकता है।आदेश -

passenger-install-apache2-module 

मुझे इन तीन पंक्तियों को अपाचे कॉन्फ़िगरेशन फ़ाइल में रखने के लिए कहता है।

LoadModule passenger_module /home/anwar/.rvm/gems/ruby-2.2.0/gems/passenger-4.0.59/buildout/apache2/mod_passenger.so 
    <IfModule mod_passenger.c> 
    PassengerRoot /home/anwar/.rvm/gems/ruby-2.2.0/gems/passenger-4.0.59 
    PassengerDefaultRuby /home/anwar/.rvm/gems/ruby-2.2.0/wrappers/ruby 
    </IfModule> 

लेकिन, वह कॉन्फ़िगरेशन फ़ाइल कहां है? जवाब है कॉन्फ़िगरेशन फ़ाइलों को कई टुकड़ों में अलग किया गया है और वे /etc/apache2/mods-available में रहते हैं।

  1. एक फ़ाइल /etc/apache2/mods-available फ़ोल्डर में .load के साथ समाप्त बनाएँ -

    तो आपको तीन कार्य करने चाहिए। मैंने passenger.load का उपयोग किया।

  2. उस फ़ाइल में तीन पंक्तियां पेस्ट करें और फ़ाइल को सहेजें।

  3. अब मॉड्यूल को सक्षम करने के लिए टर्मिनल उपयोग sudo a2enmod <module-conf-filename> पर उपयोग करें। मेरे मामले में, फ़ाइल passenger.load थी। तो, मैं

    sudo a2enmod passenger 
    

अब इस्तेमाल किया, सर्वर को पुनः आरंभ और आदेश apache2ctl -M का उपयोग खोजने के लिए कि passenger मॉड्यूल सक्षम है।

संबंधित मुद्दे