मैं Apache को FastCGI और रूबी के साथ कैसे सेटअप करूं?


8

मैं मंच पोस्ट, ट्यूटोरियल आदि की एक बहुत कुछ पढ़ रहा हूं, उपवास के साथ लिनक्स के तहत अपाचे स्थापित करने के बारे में। मैं अपने कुछ रूबी विकास (रेल नहीं) के लिए fcgi चलाने की कोशिश कर रहा हूं, लेकिन मुझे लगता है कि इसे किसी भी भाषा पर लागू होना चाहिए। कृपया ध्यान दें कि मेरे पास पहले से ही अपाचे, फास्टकेगी, रूबी-एफसीजी और मेरे वेब बॉक्स पर पहले से इंस्टॉल है।

वैचारिक रूप से, मैं इसके साथ एक कठिन समय बिता रहा हूं। क्या अपाचे निर्दिष्ट एफसीजी प्रक्रियाओं को आवश्यकतानुसार खोल देता है? क्या मैं उन्हें साइड अपाचे के साथ शुरू करता हूं? मूल रूप से, मैं एक ऐसे बिंदु पर जाने की कोशिश कर रहा हूं, जहां मैं उचित प्रश्न पूछ पा रहा हूं, इसलिए यदि शीर्षक भ्रामक है तो माफी मांगे।

जवाबों:


8

खैर, इस बीच, मुझे यह पता चला। चूँकि इस विषय पर कोई संक्षिप्त विवरण नहीं था, यहाँ एक की शुरुआत है। जब मेरे पास सभी कीड़े होते हैं, तो मैं इसे कुछ ट्यूटोरियल साइटों पर जमा करूँगा।

  1. यह सुनिश्चित करें कि बेस फास्टकेगी अपाचे मॉड्यूल स्थापित है। यदि आप ArchLinux का उपयोग करते हैं जैसा कि मैं करता हूं, aur कार्यों पर mod_fcgid । अन्य वितरणों में, या तो mod_fcgid या mod_fastcgi स्थापित करें। (उन लोगों के लिए जो अंतर को आश्चर्यचकित करते हैं, मुझे नहीं लगता कि बहुत कुछ है, इसलिए मैं अधिक गतिविधि वाले व्यक्ति के लिए गया।)

  2. अपनी httpd.conf फ़ाइल में, अपनी LoadModule परिभाषाओं की शुरुआत में एक पंक्ति जोड़कर मॉड्यूल को सक्रिय करें। निश्चित नहीं है कि यह मायने रखता है जो वितरण करता है, लेकिन आर्क पर यह थाLoadmodule fcgid_module modules/mod_fcgid.so

  3. अपने httpd.conf में एक नया अनुभाग जोड़ें। मैंने इसे सिर्फ cgid_module अनुभाग के अंतर्गत रखा है, लेकिन मुझे पूरा यकीन है कि स्थान मनमाना होगा।

    <IfModule fcgid_module>
      AddHandler fcgid-script .fgci
    </IfModule>
    
  4. अब मेरी समझ से, ExecCGI में एक निर्देशिका में .fcgi एक्सटेंशन वाली किसी भी फ़ाइल को अब स्थापित किए गए Fastcgi मॉड्यूल द्वारा नियंत्रित किया जाएगा। रूबी को फास्टैगी बाइंडिंग देने के लिए मैंने इस पैकेज को स्थापित किया , एक ExecCGI निर्देशिका के अंदर, मैंने यह परीक्षण स्क्रिप्ट लिखी थीtest.rb.fcgi

    #!/usr/bin/ruby -w
    require 'fcgi'
    
    count = 0
    FCGI.each_cgi do
      puts "Content-type: text/html\n\n"
      puts "Hello, Ruby! FastCGI(#{count})"
      count = count + 1
    end
    

अब जब आप अपने ब्राउज़र में उस पेज पर जाते हैं, चूंकि countफास्टसीगी लूप के बाहर है, तो इसे प्रत्येक पृष्ठ दृश्य के साथ बढ़ाना चाहिए। यदि ऐसा है, तो fcgi सही ढंग से सेटअप है।


1
अरे। markdown इस पोस्ट के साथ मुझे कुछ वास्तविक परेशानी दे रहा है।
sdellysse

आपका कोड एक सूची में एम्बेड किया गया था, इसलिए 4 स्थान इंडेंटेशन पर्याप्त नहीं हैं। मैंने इसे 8 स्थानों के साथ काम किया।
Augustin

1
दिलचस्प। तो, फिर एक संदर्भ <Directory>में एक निर्देश के साथ साफ .rb फ़ाइलों को संभाल सकता <VirtualHost>है, कहते हैं - AddHandler fcgi-script .rbऔर FCGIWrapper /path/to/ruby .rb(वेब स्क्रिप्ट के लिए हैशबैंग आवश्यकता को हटाने के लिए)। और शायद Options ExecCGI। यह एक शॉट दे सकता है।
बेन्जी XVI

ArchLinux में, 'mod_fcgid' अब AUR के बाहर,
एरन

1

आपको अपने रेल एप्लिकेशन को संभालने के लिए पैसेंजर का उपयोग करना चाहिए (भले ही आप ActiveRecord आदि जैसी किसी भी रेल सुविधाओं का उपयोग नहीं कर रहे हों)। इस पर कई वेबसाइट चल रही हैं (साथ ही उनके पास रेल्स एंटरप्राइज, कम मेमोरी, बेहतर प्रदर्शन)


जैसा कि प्रश्न में निर्दिष्ट किया गया है, मैं रेल का उपयोग नहीं कर रहा हूं। लेकिन आप दोनों को धन्यवाद।
sdellysse

1
रिकॉर्ड के लिए: फ्यूजन पैसेंजर केवल रेल एप्लिकेशन ही नहीं चलाता है। यह रैक का भी समर्थन करता है। इसलिए यदि आपका वेब एप्लिकेशन रैक का उपयोग कर रहा है तो आप इसे फ्यूजन पैसेंजर के साथ तैनात करने का प्रयास कर सकते हैं।
जोशी

1

क्या अपाचे निर्दिष्ट एफसीजी प्रक्रियाओं को आवश्यकतानुसार खोल देता है? क्या मैं उन्हें साइड अपाचे के साथ शुरू करता हूं?

अपाचे उन्हें आपके लिए उगल देगा। आप अपने httpd.conf में स्पॉन करने के लिए न्यूनतम और अधिकतम संख्या सेट कर सकते हैं, और यह नए लोगों को स्पॉन करेगा और आने वाले अनुरोधों की मात्रा के आधार पर बासी लोगों को मार देगा। जब तक आपके पास अनुरोध आते रहेंगे, आपकी प्रक्रिया चलती रहेगी।


0

अपाचे को फास्टैगी इंटरफ़ेस का उपयोग करके उन्हें स्पॉन करना चाहिए। हालांकि, यह उन्हें कुछ समय के लिए छोड़ देगा, और प्रत्येक प्रक्रिया को अपाचे द्वारा समाप्त होने से पहले एक से अधिक अनुरोधों को संभालने की उम्मीद है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.