apache - उसी सर्वर पर अपाचे और नोड.जेएस




node.js (9)

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

  1. उसे नोड का उपयोग करने के लिए मनाएं (वह उस पर थोड़ा जमीन दे रहा है)

  2. नोड में फ़ाइलों को अपलोड, डाउनलोड, नाम बदलने, सहेजने, आदि फ़ाइलों को कैसे अपलोड करें

  3. मुझे उसी सर्वर पर अपाचे और नोड स्थापित करना होगा।

सबसे अनुकूल स्थिति कौन सा है, और मैं इसे कैसे कार्यान्वित करूं?


Answers

यह सवाल सर्वर फॉल्ट पर अधिक है लेकिन एफडब्ल्यूआईडब्ल्यू मैं कहूंगा कि नोड.जेएस के सामने अपाचे चलाना ज्यादातर मामलों में एक अच्छा दृष्टिकोण नहीं है।

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

यदि आप प्रदर्शन और स्केल का लाभ लेना चाहते हैं तो आप Node.js का उपयोग करने से प्राप्त करेंगे - और विशेष रूप से यदि आप ऐसा कुछ उपयोग करना चाहते हैं जिसमें वेब सॉकेट जैसे लगातार कनेक्शन बनाए रखना शामिल है - तो आप अपाचे और आपके नोड दोनों को चलाने से बेहतर हैं। अन्य बंदरगाहों पर जेएस (उदाहरण के लिए स्थानीयहोस्ट पर अपाचे: 8080, स्थानीयहोस्ट पर नोड.जेएस: 3000) और उसके बाद कुछ में nginx, वार्निश या एचए प्रॉक्सी की तरह चल रहा है - और इस तरह यातायात को रूट करना।

वार्निश या nginx जैसे कुछ के साथ आप पथ और / या मेजबान के आधार पर यातायात को रूट कर सकते हैं। वे दोनों बहुत कम सिस्टम संसाधनों का उपयोग करते हैं और यह बहुत अधिक स्केलेबल है कि अपाचे का उपयोग एक ही काम करने के लिए करते हैं।


आप दोनों एक ही सर्वर पर स्थापित कर सकते हैं, लेकिन उन्हें विभिन्न बंदरगाहों का उपयोग करने के लिए कॉन्फ़िगर करने की आवश्यकता है। दोनों पोर्ट 80 का उपयोग नहीं कर सकते हैं, कम से कम इतना आसान नहीं।

ध्यान रखें कि अपाचे एक सर्वर है, और नोडजेएस एक भाषा है।

क्या आपने यहां पूछने से पहले इस मुद्दे को हल करने की कोशिश की है?

http://arguments.callee.info/2010/04/20/running-apache-and-node-js-together/

मुझे अपने सर्वर पर node.js स्क्रिप्ट चलाने की क्या ज़रूरत है?

http://www.readwriteweb.com/hack/2010/12/how-to-run-apache-and-nodejs.php

http://eastmond.org/blog/?p=45


महान सवाल!

अपाचे पर चलने वाले PHP में लागू कई वेबसाइटें और निःशुल्क वेब ऐप्स हैं, बहुत से लोग इसका उपयोग करते हैं ताकि आप कुछ आसान और इसके अलावा मैट अप कर सकें, यह स्थिर सामग्री की सेवा करने का कोई ब्रेनर तरीका नहीं है। नोड तेज, शक्तिशाली, सुरुचिपूर्ण और एक सेक्सी उपकरण है जिसमें वी 8 की कच्ची शक्ति और कोई अंतर्निर्मित निर्भरता वाले फ्लैट स्टैक हैं।

मैं अपाचे की आसानी / लचीलापन और फिर भी नोड.जेएस की गड़बड़ी और लालित्य चाहता हूं, मेरे पास दोनों क्यों नहीं हो सकते ?

सौभाग्य से Apache httpd.conf में ProxyPass निर्देश के साथ आपके नोड.जेएस एप्लिकेशन पर किसी विशेष URL पर सभी अनुरोधों को पाइप करना बहुत मुश्किल नहीं है।

ProxyPass /node http://localhost:8000

साथ ही, सुनिश्चित करें कि निम्न पंक्तियों पर टिप्पणी नहीं की गई है, इसलिए आपको http अनुरोधों को दोबारा करने के लिए सही प्रॉक्सी और सबमिशन प्राप्त होता है:

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so

फिर पोर्ट 8000 पर अपना नोड ऐप चलाएं!

var http = require('http');
http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello Apache!\n');
}).listen(8000, '127.0.0.1');

फिर आप अपने यूआरएल पर /node/ पथ का उपयोग करके सभी नोड.जेएस तर्क का उपयोग कर सकते हैं, शेष वेबसाइट को आपके मौजूदा PHP पृष्ठों को होस्ट करने के लिए अपाचे में छोड़ा जा सकता है:

अब केवल एक चीज बाकी है जो आपकी होस्टिंग कंपनी को इस कॉन्फ़िगरेशन के साथ चलने देती है !!!


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

बंदरगाहों के बजाय, नोड के तकनीकी ढेर का मूल्यांकन करना बेहतर होगा जो कि अधिकांश लोगों से बिल्कुल अलग है और यही कारण है कि मैं इसे प्यार करता हूं लेकिन इसमें कुछ समझौता भी शामिल है जिन्हें आपको पहले से अवगत होना चाहिए।

आपका उदाहरण एक सीएमएस या साझा करने वाला वेब ऐप जैसा दिखता है और इसमें से कई बॉक्स ऐप उपलब्ध हैं जो अपाचे पर ठीक चलेंगे। यहां तक ​​कि यदि आपको कोई रेडीमेड समाधान पसंद नहीं है, तो आप PHP / Java / Python में एक वेबपैप लिख सकते हैं या मिश्रण को दो तैयार किए गए ऐप्स के साथ मिलान कर सकते हैं और वे सभी अपाचे के एक उदाहरण के पीछे चलाने के लिए डिज़ाइन और समर्थित हैं।

अब मैंने जो कहा है उसके बारे में सोचने और सोचने का समय है।

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

अंत में, टेकस्टैक की आपकी पसंद किसी भी व्यक्तिगत घटक की तुलना में अधिक महत्वपूर्ण है।

मैं @Straseus से पूरी तरह से सहमत हूं कि अपलोड और डाउनलोड को संभालने के लिए node.js फ़ाइल सिस्टम एपीआई का उपयोग करना अपेक्षाकृत मामूली है लेकिन लंबे समय तक अपनी वेबसाइट से आप जो चाहते हैं उसके बारे में और सोचें और फिर अपने टेकस्टैक का चयन करें।

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

यह पोस्ट लगभग एक वर्ष पुराना है और संभावना है कि आपने पहले से ही फैसला कर लिया है, लेकिन मुझे आशा है कि मेरा राग अगले व्यक्ति की मदद करेगा जो इसी तरह के फैसले से गुजर रहा है।

पढ़ने के लिए धन्यवाद।


एक सर्वर पर नोड और अपाचे चलाना तुच्छ है क्योंकि वे संघर्ष नहीं करते हैं। NodeJS जावास्क्रिप्ट सर्वर पक्ष को निष्पादित करने का एक तरीका है। वास्तविक दुविधा बाहर से नोड और अपाचे दोनों तक पहुंचने से आती है। जैसा कि मैंने देखा है आपके पास दो विकल्प हैं:

  1. NodeJS को सभी मिलान अनुरोधों को प्रॉक्सी करने के लिए अपाचे सेट अप करें, जो फाइल अपलोडिंग और नोड में और भी कुछ भी करेगा।

  2. विभिन्न आईपी पर अपाचे और नोड रखें: पोर्ट संयोजन (यदि आपके सर्वर में दो आईपी हैं, तो कोई आपके नोड श्रोता से बाध्य हो सकता है, दूसरा अपाचे के लिए)।

मुझे यह भी संदेह करना शुरू हो रहा है कि यह वह नहीं हो सकता है जिसे आप वास्तव में खोज रहे हैं। यदि आपका अंतिम लक्ष्य आपके लिए नोडज में अपना एप्लिकेशन तर्क लिखना है और कुछ "फ़ाइल हैंडलिंग" भाग है जिसे आप ठेकेदार को बंद कर देते हैं, तो यह वास्तव में भाषा का विकल्प है, न कि वेब सर्वर।


आप अपाचे और अन्य सभी नोडजेस ऐप्स दोनों को प्रॉक्सी करने के लिए नोडजेस के साथ एक रिवर्स प्रॉक्सी सर्वर लिखने जैसे एक अलग दृष्टिकोण का उपयोग कर सकते हैं।

मुट्ठी आपको बंदरगाह 80 के अलावा अलग-अलग बंदरगाह पर अपाचे चलाने की जरूरत है। पूर्व: पोर्ट 8080

तो आप नोडजेस के साथ एक रिवर्स प्रॉक्सी स्क्रिप्ट लिख सकते हैं:

var proxy = require('redbird')({port: 80, xfwd: false);

proxy.register("mydomain.me/blog", "http://mydomain.me:8080/blog");
proxy.register("mydomain.me", "http://mydomain.me:3000");

निम्नलिखित लेख इसे बनाने की पूरी प्रक्रिया का वर्णन करता है।

http://wathmal.me/blog/run-apache-with-node-js-reverse-proxy/


ProxyPass /node http://localhost:8000/     
  • यह httpd.conf के बजाय httpd-vhosts.conf में प्रविष्टि से ऊपर बनाते समय मेरे लिए काम करता था
  • मेरे पास एक्सएमपीपी मेरे पर्यावरण पर स्थापित है और 8080 पोर्ट यानी http://localhost/[name_of_the_node_application] पर चल रहे नोडजेएस आवेदकिन के साथ पोर्ट 80 पर अपाचे पर सभी ट्रैफिक को हिट करने की तलाश में था।


apache2(v2.4.xx) server साथ node server चलाने के लिए निर्देश:

किसी विशेष URL पर किसी विशेष URL पर सभी अनुरोधों को पाइप करने के लिए अपने Node.JS एप्लिकेशन में /etc/apache2/conf-available निर्देशिका के अंदर CUSTOM.conf फ़ाइल बनाएं, और बनाई गई फ़ाइल में निम्न पंक्ति जोड़ें:

ProxyPass /node http://localhost:8000/

node server लिए prefered पोर्ट नंबर 8000 बदलें।
निम्न आदेश के साथ कस्टम विन्यास सक्षम करें:

$> sudo a2enconf CUSTOM

कस्टम एक्सटेंशन के बिना आपका नया बनाया गया फ़ाइल नाम है, फिर कमांड के साथ proxy_http सक्षम करें:

$> sudo a2enmod proxy_http

यह proxy और proxy_http मॉड्यूल दोनों सक्षम करना चाहिए। आप जांच सकते हैं कि मॉड्यूल सक्षम है या नहीं:

$> sudo a2query -m MODULE_NAME

कॉन्फ़िगरेशन और मॉड्यूल सक्षम करने के बाद, आपको अपाचे सर्वर को पुनरारंभ करना होगा:

$> sudo service apache2 restart

अब आप नोड सर्वर निष्पादित कर सकते हैं। URL/node सभी अनुरोधों को नोड सर्वर द्वारा संभाला जाएगा।


Node.js का उपयोग करते समय, आप process.env ऑब्जेक्ट से कुंजी द्वारा पर्यावरण चर को पुनर्प्राप्त कर सकते हैं:

उदाहरण के लिए

var mode   = process.env.NODE_ENV;
var apiKey = process.env.apiKey; // '42348901293989849243'

यहां जवाब है जो node.js में पर्यावरण चर सेट करने की व्याख्या करेगा





apache node.js