क्या मैं Apache को Node.js से बदल सकता हूं?


151

मेरे पास सामान्य संदिग्ध (Apache, MySQL और PHP) का उपयोग करके CentOS पर चलने वाली वेबसाइट है। जब से इस वेबसाइट को मूल रूप से लॉन्च किया गया था, तब से यह काफी विकसित हो गया है और अब मैं इसके साथ कट्टर चीजें करना चाहता हूं - अर्थात् वास्तविक समय की सूचनाएं। मैंने जो पढ़ा है, अपाचे उसे खराब तरीके से संभालता है। मैं सोच रहा हूं कि क्या मैं सिर्फ Apache को Node.js से बदल सकता हूं (इसलिए " LAMP " के बजाय यह "LNMP" होगा)।

मैं एक समाधान के लिए ऑनलाइन खोज करने की कोशिश की है, लेकिन एक नहीं मिला है। अगर मैं उन चीजों की सही व्याख्या कर रहा हूं, जो मैंने पढ़ी हैं, तो ऐसा लगता है कि ज्यादातर लोग कह रहे हैं कि Node.js अपाचे और पीएचपी दोनों को एक साथ बदल सकते हैं। मेरे पास बहुत सारे मौजूदा PHP कोड हैं, हालाँकि, मैं इसे रखना पसंद करूँगा।

मामले में यह पहले से ही स्पष्ट नहीं है, मैं बहुत उलझन में हूँ और कुछ ज्ञान का उपयोग कर सकता हूँ। बहुत बहुत धन्यवाद!


एप सर्वर देखने लायक हो सकता है।
ट्रीहार्डर

जवाबों:


86

यदि आप जावास्क्रिप्ट में अपने PHP को फिर से लिखने के लिए तैयार हैं, तो हाँ, Node.js आपकी अपाचे की जगह ले सकता है।

यदि आप अपने सर्वर और अपने क्लाइंट के बीच रिवर्स-प्रॉक्सी मोड में चल रहे अपाचे या NGINX इंस्टेंस को रखते हैं, तो आप Node.js पर जावास्क्रिप्ट में कुछ अनुरोधों को और अपने Apache- होस्टेड PHP में कुछ अनुरोधों को संभाल सकते हैं, जब तक कि आप अपने सभी PHP को पूरी तरह से बदल नहीं सकते। जावास्क्रिप्ट कोड के साथ। यह खुश करने वाला माध्यम हो सकता है: Node.js में अपने WebSockets कार्य करें, Apache + PHP में अधिक सांसारिक कार्य।


1
मैं त्वरित प्रतिक्रिया की सराहना करता हूं! क्या नगीनक्स अपाचे से काफी बेहतर है? मेरे पास पहले से ही एक .htaccess फ़ाइल है और इसे रखना अच्छा होगा। इसके अलावा, मैंने पढ़ा है कि यह अपाचे को Node.js के लिए आगे अनुरोध करने के लिए व्यर्थ है क्योंकि तब आप Node.js के फायदे खो रहे हैं क्योंकि आप अभी भी Apache से गुजर रहे हैं। क्या "नोडज" नाम के किसी सबफ़ोल्डर में Node.js को पोर्ट 80 पर सुनना बेहतर होगा और फिर उस सबफ़ोल्डर में कुछ भी नहीं है जिसे Node.js द्वारा Apache पास किया जा सके? अपाचे 8000 की तरह कुछ अन्य बंदरगाह पर सुन सकता था।
रिक

21
@ क्लिक करें, मैं अपने स्वयं के उत्तर को हटाने के लिए बहुत करीब हूं; नोड का उपयोग कर सकते हैंsendfile , और FastCGI समर्थन के लिए एक मॉड्यूल है जो नोड के माध्यम से आपके PHP की सेवा करना आसान बना सकता है। Apgin बनाम Apache के लिए, मैं हमेशा थ्रेडेड या मल्टीप्रोसेस सर्वरों पर async-style सर्वर के लिए एक चूसने वाला रहा हूं :) लेकिन मैंने Apache प्रलेखन को खोजने और पढ़ने में आसान पाया है। जब तक आपको आश्चर्यजनक संख्याओं के पैमाने की आवश्यकता नहीं होगी, मैं उस व्यक्तिगत प्राथमिकता को कॉल करूंगा। :)
सरनॉल्ड

3
@ आप यह समझने से पहले कि यह क्या है और यह कैसे काम करता है, उत्पादन सामग्री को नोड में माइग्रेट नहीं करना चाहता। सामान को तेजी से बनाने के लिए नोड एक जादू की गोली नहीं है। ईवेंट संचालित / async प्रतिमान नया नहीं है, और इसका कारण है कि इसका उपयोग हर चीज के लिए नहीं किया जाता है। en.wikipedia.org/wiki/Asynchronous_I/O
ikyvind Skaar

1
@ क्लिक करने के बजाय यह सोचने के लिए कि आपको क्या बदलना चाहिए, शायद इसके अलावा नोड को चलाना बेहतर है। लगता है कि नोड (?) के माध्यम से सब कुछ पारित करने का कोई कारण नहीं है, एक बुरा विचार है। बस दूसरे पोर्ट या होस्ट पर नोड चलाएं।
यविन्द स्कार

2
@ Øyvind Skaar मैं सहमत हूँ। इसके अलावा, अधिकांश वेबसाइट (उदाहरण के लिए Wordpress) के लिए, असली अड़चन डेटाबेस है और फ़ाइल एक्सेस नहीं है। और, यदि फ़ाइल का उपयोग एक समस्या है तो कैश हमेशा एक व्यवहार्य समाधान है। वैसे भी, वास्तविक प्रदर्शन के लिए, PHP-APC एक लानत सस्ती चाल है।
मैगनेनल्स

26

Node.js घटना / गैर-अवरुद्ध वास्तुकला के लिए अपाचे की तुलना में तेज़ हो सकता है, लेकिन आपको कुछ अपाचे कार्यक्षमता का विकल्प देने वाले मॉड्यूल / लाइब्रेरी खोजने में समस्या हो सकती है।

Node.js अपने आप में एक हल्का निम्न-स्तरीय ढांचा है, जो आपको सर्वर-साइड सामान और आपके वेब अनुप्रयोगों के वास्तविक-समय के भागों को अपेक्षाकृत जल्दी बनाने में सक्षम बनाता है, लेकिन अपाचे बहुत व्यापक कॉन्फ़िगरेशन विकल्प और "शास्त्रीय" वेब सर्वर उन्मुख सुविधाएँ प्रदान करता है।

मैं कहूंगा कि जब तक आप PHP को नोड के साथ नहीं बदलना चाहते हैं। एक्सप्रेस की तरह वेब अनुप्रयोग रूपरेखा आधारित है। तब आपको अपाचे के साथ रहना चाहिए (या यदि आपको प्रदर्शन की समस्या है तो न्ग्नेक्स की ओर पलायन के बारे में सोचना चाहिए)।


11

मेरा मानना ​​है कि Node.js वेब सर्विंग में भविष्य है, लेकिन अगर आपके पास बहुत सारे मौजूदा PHP कोड हैं, तो Apache / MySQL आपका सबसे अच्छा दांव है। अपाचे को Node.js, या Node.js के प्रॉक्सी अनुरोधों में अपाचे के लिए प्रॉक्सी अनुरोधों के लिए कॉन्फ़िगर किया जा सकता है, लेकिन मेरा मानना ​​है कि कुछ प्रदर्शन दोनों मामलों में खो गए हैं, खासकर पहले एक में। यदि आप एक बहुत उच्च यातायात वेबसाइट नहीं चला रहे हैं, तो कोई बड़ी बात नहीं है।

मैंने अभी स्टैकओवरफ़्लो में पंजीकृत किया है, और मैं अभी तक स्वीकार किए गए उत्तर पर टिप्पणी नहीं कर सकता, लेकिन आज मैंने एक सरल नोड.जेएस स्क्रिप्ट बनाई है जो वास्तव में HTTP प्रोटोकॉल के माध्यम से फ़ाइलों की सेवा करने के लिए Sendfile () का उपयोग करती है। (मौजूदा उदाहरण जो स्वीकृत उत्तर लिंक केवल फ़ाइल भेजने के लिए नंगे टीसीपी प्रोटोकॉल का उपयोग करता है, और मुझे HTTP के लिए एक उदाहरण नहीं मिला, इसलिए मैंने इसे स्वयं लिखा है।)

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

लिंक: https://gist.github.com/1350901


2
हालांकि बहुत सच है, फिर भी मेरा मानना ​​है कि अगर आपने अपाचे को छीन लिया तो आप जो बता रहे हैं, वह उतना ही तेज चलेगा, और यदि नहीं, तो नोड की तुलना में अधिक तेज। अपाचे बहुत सारी चीजें करता है जो लोग नहीं देखते हैं या वास्तव में समझते हैं और अगर आपने इन वेब सर्वरों की सभी कार्यक्षमता को नोड.जेएस में जोड़ा है, तो यह उनके जैसे ही धीमी गति से चलेगा। जैसा कि सरल उदाहरण शायद होगा, mynode.js / getfile? File = / etc / shadow
राहिल

8

पिछला SO पोस्ट जो बता रहा है कि वास्तव में क्या कह रहा है (php + socket.io + नोड)

मुझे लगता है कि आप सॉकेट.आईओ के साथ 8000 पर एक नोड सर्वर लगा सकते हैं। सॉकेट.आईओ क्लाइंट कोड को टैग में थप्पड़ मार सकते हैं और कम से कम काम के साथ अपने मौजूदा ऐप को एक टन के बिना सॉकेट.आईओ (रियलटाइम बेबी) के साथ पा सकते हैं।

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


2

इसका LAMP बनाम MEAN आजकल। प्रत्यक्ष तुलना के लिए http://tamas.io/what-is-the-mean-stack देखें ।

बेशक एम, ई और ए कुछ चर हैं। उदाहरण के लिए हाल ही में कोआ प्रतिस्थापित कर सकते हैं (ई) xpress।

हालाँकि, अपाचे को Node.js के साथ बदलना शायद आपके वेब स्टैक को आधुनिक बनाने का सही तरीका नहीं है।

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