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




(4)

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

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

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


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

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

मैं कहूंगा कि जब तक आप express.js जैसे node.js आधारित वेब अनुप्रयोग ढांचे के साथ PHP को प्रतिस्थापित नहीं करना चाहते हैं, तो आपको अपाचे के साथ रहना चाहिए (या यदि आपके पास प्रदर्शन समस्याएं हैं तो Nginx पर माइग्रेट करने के बारे में सोचें)।


Previous SO पोस्ट वास्तव में वर्णन कर रहा है कि मैं क्या कह रहा हूं (php + socket.io + node)

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

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


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

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

आप शायद सभी स्थिर फ़ाइलों की सेवा करने के लिए हमेशा एक अपाचे या nginx एक उबाऊ वेब सर्वर के रूप में चलाना चाहते हैं: sendfile(2) सिस्टम कॉल एक वास्तविक वेब सर्वर से स्थिर पृष्ठों को बहुत तेजी से सेवा प्रदान करता है (यह 'डबल-कॉपी' को हटा देता है डिस्क से प्रक्रिया मेमोरी में डेटा की प्रतिलिपि बनाने के लिए, केवल स्मृति कार्ड को नेटवर्क कार्ड के लिए कर्नेल में प्रतिलिपि बनाने के लिए - कर्नेल को बताकर जो कि सॉकेट पर भेजे गए कर्नेल को संग्रहीत करता है, कर्नेल सीधे डिस्क से कर्नेल में डेटा कॉपी करने की व्यवस्था कर सकता है नेटवर्क कार्ड के लिए मेमोरी! woot।) मुझे नहीं पता कि node.js को sendfile sendfile(2) syscall तक आसानी से पहुंच है, लेकिन मुझे आश्चर्य होगा, इसलिए मुझे लगता है कि स्थिर फाइलों को संभालने के लिए एक nginx चलाने के लायक होगा एक साथ स्मृति में लोड दो पूर्ण सर्वर।


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

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

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

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







node.js