Apache HTTP सर्वर इतना जटिल क्यों है?


14

अपाचे HTTP सर्वर एक काफी बड़े प्रोजेक्ट-बहुत जो एक राशि बड़ा है, lighthttpया nginxया निश्चित रूप से "सरल HTTP सर्वर" आप सी / सी में चारों ओर चल देखें ++ ट्यूटोरियल।

के लिए अतिरिक्त कोड क्या है? क्या यह सुरक्षा / स्थिरता (और यदि ऐसा है तो कैसे?) को जोड़ता है या क्या यह अपाचे confफाइलों / .htaccessटाइप चीजों को पार्स करने जैसी चीजों के लिए है (और, मुझे लगता है, VirtualHostsआदि)।

मैं अपाचे की आलोचना नहीं करने के लिए कहता हूं, लेकिन क्योंकि मैं एक तरह के वेब सर्वर को लिखने में दिलचस्पी रखता हूं और मैं उन चीजों को जानना चाहता हूं जो, जबकि स्पष्ट नहीं है, एक सुरक्षित, स्थिर और तेज वेब सर्वर के लिए याद रखना महत्वपूर्ण है।


यह उन सभी को बाहर निकालने में मदद करता है जो इसे संभालने के लिए गियर को पैक नहीं करते हैं।
जोएल एथर्टन

6
इसका वास्तविक जवाब नहीं है - लेकिन मैंने सुना है कि नाम इस तथ्य से आता है कि इसका विकास में बहुत अधिक योगदान था। पैच का बहुत योगदान दिया गया, जिससे यह ए पैची सर्वर बन गया। सच्ची कहानी।
जेरेमी

+1 @ जोएल एथरटन: अच्छी कहानी, खासकर यह सच है। लेकिन एक अच्छी कहानी के रास्ते में सच्चाई को कभी न आने दें :)
therobyouknow

यथास्थिति पर सवाल उठाने वाले उदाहरण के लिए +1 @हार। लेकिन "वेबसर्वर लिखना"? क्या हम यहाँ पहिया का फिर से आविष्कार नहीं कर रहे हैं जब वहाँ कई प्रसाद के साथ-साथ अपाचे भी हैं?
थेरोबोकेन

जवाबों:


20

यह बहुत अधिक जटिल है क्योंकि:

  • यह पुराना है ,
  • इसे फीचर-सेट ( फीचर सेट तुलना ) का एक बड़ा हिस्सा मिला है ,
  • यह मॉड्यूलर है ,
  • इसे एक व्यापक प्लेटफ़ॉर्म समर्थन ( OS समर्थन तुलना ) मिला है,
  • यह ऑपरेशन के कई तरीके हैं (बहु-प्रक्रिया, बहु-सूत्र, आदि ...)।

लेकिन:

  • यह अधिक सक्रिय रूप से विकसित हुआ है ( स्थिति तुलना । आज 2011-05-28 के अनुसार, अपाचे एचटीडी के पास सबसे हालिया अपडेट है, हालांकि इसकी अंतर्निहित रिलीज प्रक्रिया को अपने प्रतिद्वंद्वियों के विपरीत विस्तारित जटिलता से बाधित होना चाहिए।)

यह कहा जा रहा है, आर। के उत्तर में इसकी वास्तुकला के बारे में मान्य बिंदु हैं और क्यों कुछ अन्य वेब-सर्वरों के साथ-साथ रिश्तेदार प्रसिद्धि का लाभ मिलता है। आपको क्या चाहिए इस पर यह निर्भर है।

आप कुछ और सामग्री के लिए /programming/475386/apache-vs-nginx-vs-lighttpd-which-is-simpler-to-configure-and-administer पर भी देखना चाह सकते हैं । हालांकि सीधे आपके सवाल का जवाब नहीं दे रहा है, लेकिन पूरे धागे में बहुत अंतर है।


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


1
+1: चैंज इतिहास के माध्यम से बस पढ़ना यह सीखने में अविश्वसनीय रूप से शिक्षाप्रद हो सकता है कि वेब सर्वर खुद कैसे विकसित हुआ और वर्षों में टीम किन चुनौतियों से गुजरी।
जोएल एथर्टन

1
+1 @haylem "रिश्तेदार प्रसिद्धि के कुछ अन्य वेब-सर्वर लाभ" - यह अपाचे के विकल्प के बारे में पढ़ने के लिए आश्वस्त है जिसे अपाचे-संगत कहा जाता है अर्थात बस उसी काम के बारे में करेंगे।
उपचार

3

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

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


3

मैंने अपाचे का उपयोग बारह वर्षों में बड़े पर्ल, पायथन और रूबी वेब अनुप्रयोगों के लिए प्रशासक और डेवलपर दोनों के रूप में किया है। अपाचे एक रॉक-सॉलिड वेब सर्वर है जिसमें एक साफ / मॉड्यूलर डिजाइन और एक मजबूत यूनिक्स तुला है। इसकी सबसे शक्तिशाली विशेषताओं में से एक इसकी सघनता और अच्छा प्रलेखन है। यह एक बहुत प्रबंधनीय वेब सर्वर है। यह परिपक्व और सिद्ध है जैसा कि प्रमुख बाजार हिस्सेदारी के 15 वर्षों तक स्पष्ट रूप से देखा जा सकता है ।

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

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

सरासर सुविधाओं, लचीलेपन, प्रशासन, मंच समर्थन, मापनीयता, प्रलेखन और परिपक्वता के दृष्टिकोण से, अपाचे एक शानदार वेब सर्वर है।


-2

यह ओवर-डिज़ाइन / ओवर-इंजीनियर है। सबसे बुरी बात यह है कि यह एपीआर (अपाचे पोर्टेबल रनटाइम), एक ब्लोट परत का उपयोग करता है जो कई कॉल फ़ंक्शन और डायनेमिक मेमोरी आवंटन के कई स्तरों को समाप्त करने और एकल printfकॉल के बराबर को पूरा करने के लिए मुक्त करता है । यह सब होता है:

  • बहुत धीमी गति से
  • बहुत संसाधन-भूख ​​लगी है
  • सुरक्षा के लिए ऑडिट करना असंभव है
  • समझना और संशोधित करना कठिन है

5
आप ज्यादातर इसकी जटिलता के नुकसान की ओर इशारा करते हैं और (यकीनन, किन हिस्सों पर निर्भर करता है) खराब डिजाइन; हालांकि ये कथन मान्य हो सकते हैं, वे इसकी जटिलता का कारण नहीं हैं।
केश

1
-1 एपीआर ब्लोट के लिए। मैं पूर्व 1.0 युग और पीछे एपीआर के साथ काम कर रहा था, फिर यह 1.3 कोडबेस में पहले से किसी भी अधिक ब्लोट को पेश नहीं कर रहा था। इसके अलावा एपीआर में डायनेमिक मेमोरी एलोकेशन 1.3 मेमोरी कोड की कम या ज्यादा कॉपी है। और यहां तक ​​कि अगर आप सही हैं ... किसी भी तरह का एक ब्लोट ऑडिट होने के लिए कैसे असंभव बनाता है?
जेस्क प्रुकिया

@haylem (+1) और भी: @R .. के जवाब में उन चार बिंदुओं से सहमत हैं: आप कैसे जानते हैं? आप किसके खिलाफ तुलना कर रहे हैं आप सही हो सकते हैं लेकिन आपके अंक सापेक्ष होने वाले हैं, अर्थात "बहुत धीमे" - लेकिन क्या तुलना में? एक अन्य सर्वर जैसे यहाँ उल्लेख किया है? यदि ऐसा है तो कृपया उन्हें उद्धृत करें।
थ्रोबोकोन

मेरा मानना ​​है कि थेटपेड वेबसाइट में स्थैतिक सामग्री के लिए कुछ अच्छे आंकड़े हैं। और अधिक आश्चर्य की बात यह है कि, वेब-आधारित छात्र होमवर्क प्रणाली को चलाने वाले व्यक्तिगत अनुभव से, अपाचे भी बहुत धीमा था, mod_perlजबकि थेटपैड केवल प्रत्येक ग्राहक के लिए एक नया अनुभव था। यह एक लंबे समय से पहले था और मैंने सभी कारणों को ट्रैक करने के लिए कठोर परीक्षण कभी नहीं किया; विभाग ने सिर्फ एक नया सर्वर खरीदा ...
R .. GitHub STOP HELPING ICE

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