मूल निर्देशिका को "/ var / www" में डिफ़ॉल्ट रूप से वेब सर्वर पर क्यों रखा गया है?


87

Tuxfiles लिनक्स निर्देशिका संरचना के बारे में निम्नलिखित कहते हैं:

/var:

इस निर्देशिका में परिवर्तनशील डेटा होता है जो सिस्टम के चलने पर लगातार बदलता रहता है।

निम्नलिखित पर FHS/var कहता है:

/varचर डेटा फ़ाइलें हैं। इसमें स्पूल डायरेक्टरीज़ और फाइल्स, एडमिनिस्ट्रेटिव और लॉगिंग डेटा और ट्रांसिएंट और अस्थायी फाइल्स शामिल हैं।

फिर वे कहते हैं कि लॉग, मेल और स्पूलर जैसी चीजें उस फ़ोल्डर में डाल दी जाती हैं।

पारंपरिक रूप से उबंटू लिनक्स पर अपाचे या नग्नेक्स का स्टॉक इंस्टॉलेशन डायरेक्टरी को रखेगा /var/www/

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

ऐसा अक्सर क्यों किया जाता है /var?

अधिक विषयगत रूप से, यह वह जगह है जहां इसे आदर्श रूप से जाना चाहिए, निर्देशिका संरचना के अनुसार।


2
यह एक अच्छा सवाल है जो मैंने खुद से भी अक्सर पूछा और किसी तरह इसके साथ व्यवस्था की :)।
भेड़िया

1
एफएचएस के अनुसार /var/lib/wwwअधिक उपयुक्त होगा ...
निल्स

3
वर्तमान FHS का कहना है कि वेब सर्वर रूट कहीं नीचे/srv
LogicDaemon

1
/varगैर-निष्पादन योग्य गैर-कॉन्फ़िगरेशन के लिए गैर-स्वामित्व-द्वारा-एक-वास्तविक-उपयोगकर्ता डेटा है जिसे संपादित किया जा सकता है या बदल सकता है (जैसे कि एक पुनर्लेखन योग्य मात्रा पर रहना चाहिए)। /var/libविशेष रूप से उस प्रकार के डेटा के लिए है जिसे रिबूट से बचना चाहिए और रखरखाव प्रक्रिया द्वारा हटाया नहीं जाना चाहिए, उदाहरण के लिए डीएचसीपी पट्टों के अपने रिकॉर्ड को संग्रहीत करने के लिए isc-dhcp-serverउपयोग करता /var/libहै। तो यह वेब सर्वर फ़ाइलों के लिए एक तार्किक स्थान होगा।
लॉरेंस सी

@ नील, क्यों देय?
पचेरियर

जवाबों:


35

यह वास्तव में "पारंपरिक" स्थान नहीं है। परंपरागत रूप से, ओएस के जाने के बाद आपने जो कुछ भी स्थापित किया है /usr/local, और वास्तव में यह "शास्त्रीय अपाचे पथ लेआउट" (उनके शब्द) हैं। लंबे समय से, यह था /home/httpd

आप जो देख रहे हैं वह यह है कि एक Apache जिसे किसी विशेष OS के लिए कॉन्फ़िगर किया गया है - चाहे वह Red Hat Linux, Mac OS X, GNU, आदि हो - स्थान को कस्टमाइज़ करेगा। अपाचे का स्रोत इसके लिए अच्छी तरह से डिज़ाइन किया गया है, वास्तव में यदि आप स्रोत फ़ाइलों में ServerRoot के लिए मान का पता लगाते हैं, तो आप देखेंगे कि यह इस फ़ाइल में शुरू होता है config.layout:

उस फ़ाइल के कुछ अंश आपको दिखाएंगे कि डॉक्रोॉट स्थान में बहुत विविधता है।

IIRC, /var/wwwRed Hat Linux 7.x (Red Hat Enterprise Linux नहीं) के 2000-2001 रिलीज के साथ मेरे जीवन में आया। उपरोक्त सभी कारणों के लिए, मैंने सोचा था कि इसका कोई मतलब नहीं था - लेकिन वास्तविकता यह है कि आधुनिक युग में कई अन्य उपकरण और प्रौद्योगिकियां शामिल हैं, वैसे भी स्थान चाल चलती हैं।

#   Classical Apache path layout.
<Layout Apache>
    prefix:        /usr/local/apache2
    datadir:       ${prefix}

#   GNU standards conforming path layout.
#   See FSF's GNU project `make-stds' document for details.
<Layout GNU>
    exec_prefix:   ${prefix}
    datadir:       ${prefix}/share+

#   Mac OS X Server (Rhapsody)
<Layout Mac OS X Server>
    prefix:        /Local/Library/WebServer
    datadir:       ${prefix}

#   Darwin/Mac OS Layout
<Layout Darwin>
    prefix:        /usr
    datadir:       /Library/WebServer

#   Red Hat Linux 7.x layout
<Layout RedHat>
    prefix:        /usr
    datadir:       /var/www

#   SuSE 6.x layout
<Layout SuSE>
    prefix:        /usr
    datadir:       /usr/local/httpd

#   BSD/OS layout
<Layout BSDI>
    prefix:        /var/www
    datadir:       ${prefix}

#   Solaris 8 Layout
<Layout Solaris>
    prefix:        /usr/apache
    datadir:       /var/apache

33

उपयोग /var/wwwपहली नजर में ही भ्रामक है।

FHS के अनुसार, वेब सर्वर डेटा को जाना चाहिए /srv। यही मुख्य नियम है।

हालाँकि, यह भी कहता है कि संरचना के बारे में निर्णय लेना /srvस्थानीय व्यवस्थापक की एकमात्र जिम्मेदारी है! इसलिए पैकेजों में कुछ भी नहीं डाला जाना चाहिए /srv, और डिफ़ॉल्ट दस्तावेज़ रूट नहीं होना चाहिए /srv, क्योंकि (अपाचे) पैकेज को यह नहीं पता है कि इसके अंदर /srvया नीचे क्या है । शायद स्पष्ट पाठ पासवर्ड और अन्य चीजों के साथ एक तोड़फोड़ भंडार। तो बाहर एक डिफ़ॉल्ट होना चाहिए /srv। वह डिफ़ॉल्ट बन जाता है /var/www

/var/wwwज्यादातर एक प्लेसहोल्डर है। पैकेज /usr/shareस्थिर HTML सामग्री के लिए, या /var/libगतिशील चर सामग्री के लिए उपयोग करते हैं । बहुत से लोगों ने गलती से सोचा कि उन्हें तब HTML डाल देना चाहिए /var/www। यह एक समस्या है, क्योंकि पैकेज कभी-कभार इसका उपयोग करते हैं। इसलिए हाल ही में उन्होंने /var/www/htmlपैकेज के लिए आविष्कार किया । उम्मीद है कि लोग इसका उपयोग शुरू नहीं करेंगे क्योंकि तब फिर से उन्हें एक नई निर्देशिका का आविष्कार करना होगा ... और इसी तरह।

सारांश: आपको /srvअपने अपाचे आभासी मेजबानों को तदनुसार उपयोग और कॉन्फ़िगर करना चाहिए ।


5
यह उत्तर वास्तव में मूल्यवान है। "उम्मीद है कि लोग इसका उपयोग करना शुरू नहीं करेंगे क्योंकि तब फिर से उन्हें एक नई निर्देशिका का आविष्कार करना होगा ... और इसी तरह।" दिखाता है कि कई प्रशासकों को समय निकालना चाहिए और कुछ मूल बातों को पढ़ना चाहिए। (जैसे मैं अभी कर रहा हूँ;))
Toastgeraet

यह उबंटू संस्करणों में पहले ही हो चुका है। अपाचे दस्तावेज़ रूट डिफॉल्ट / var / www / html मैंने कहीं पढ़ा कि परिवर्तन का कारण यह अधिक सुरक्षित था। मुझे पता नहीं है कि मैं प्रतियोगिता नहीं कर सकता। मैं आपको बता सकता हूं कि मैं वास्तव में उस रास्ते का उपयोग नहीं कर रहा हूं। और उस सेटअप के साथ जारी रहेगा जिसे मैं कुछ समय से उपयोग कर रहा हूं। मैं विशेष रूप से वर्चुअल होस्ट / वेबसाइटों के लिए एक डिस्क माउंट करता हूं। मैं cpanel की होस्टिंग के लिए समान संरचना रखता हूं और / वेबसाइटों / vhostname / public_html से सेवा करता हूं। इस तरह मैं vhost का उपयोग मेल रखने के लिए या विशिष्ट vhost के लिए जो कुछ भी हो सकता है।
क्रिस

Im वास्तव में एक डिस्क को विभाजित करने और व्यक्तिगत vhost बैकअप के लिए vhost निर्देशिका में विभाजन को बढ़ाने पर विचार कर रहा है। जो मुझे / वेबसाइटें / vhost / backup प्रत्येक vhost में देगा (मैं कुछ चलाता हूँ और शायद बाद की तारीख में अधिक
क्रिस

24

जबकि मैं एकोंड के उत्तर से सहमत हूं, मुझे लगता है कि इसका एक और महत्वपूर्ण पहलू है। अधिकांश अन्य स्थानों (जैसे /usr/local) आमतौर पर सिस्टम (पैकेज प्रबंधक) द्वारा प्रबंधित किए जाते हैं। /varआमतौर पर वे फाइलें होती हैं जो पैकेज मैनेजर (सिस्टम वाइड 'डेटा') द्वारा प्रबंधित नहीं होती हैं।

मुझे भी लगता है कि एफएचएस से परिभाषा थोड़ी अधिक सटीक है (डेटा को "लगातार बदलते रहना" नहीं है):

/ var में चर डेटा फ़ाइलें हैं। इसमें स्पूल डायरेक्टरीज़ और फाइल्स, एडमिनिस्ट्रेटिव और लॉगिंग डेटा और ट्रांसिएंट और अस्थायी फाइल्स शामिल हैं।


हालांकि एफएचएस भी प्रजाति है कि www डेटा में जाना चाहिए/srv

/ srv में साइट-विशिष्ट डेटा होता है जो इस सिस्टम द्वारा दिया जाता है।

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

/ Srv की उपनिर्देशिकाओं के नाम के लिए उपयोग की जाने वाली कार्यप्रणाली अनिर्दिष्ट है क्योंकि वर्तमान में इस पर कोई सहमति नहीं है कि यह कैसे किया जाना चाहिए। / Srv के तहत डेटा को संरचित करने के लिए एक तरीका प्रोटोकॉल द्वारा है, उदा। ftp, rsync, www, और cvs।


7
इर्र, का पूरा बिंदु /usr/localयह है कि इसका प्रबंधन पैकेज प्रबंधक द्वारा नहीं किया गया है।
derobert

@derobert / usr / स्थानीय को 3 पार्टी पैकेज (डिस्ट्रो के रेपो द्वारा प्रदान नहीं किए गए पैकेज) द्वारा बहुत अधिक उपयोग किया जाता है। यह उन कंपनियों के लिए भी आम है जो उन्हें वहां लगाने के लिए अपने पैकेज का निर्माण करती हैं (हालांकि जो अभी भी डिस्ट्रो द्वारा प्रदान नहीं किए गए पैकेजों के अंतर्गत आती हैं)। यह FHS द्वारा समर्थित है, साथ ही pathname.com/fhs/pub/fhs-2.3.html
पैट्रिक

3
/srv/wwwSuSE -systems (SLES10 तक) पर शास्त्रीय पथ था , भी।
निल्स

1
@ निल्स रुको, वे FHS के अनुरूप थे और फिर जानबूझकर इसे छोड़ दिया ??? sigh
पैट्रिक

1
@ पैट्रिक तो यह है - जब मुझे इसका एहसास हुआ तो मैं बहुत चकित था। संभवतः वे अन्य लिनक्स-वेरिएंट्स की तरह बनना चाहते थे ...
Nils

13

कारण ज्यादातर ऐतिहासिक हैं, जैसा कि अन्य ने कहा। /varसिस्टम डेटा के लिए उपयोग किया जाता है जो हर समय बदलता है, उदाहरण के लिए कैश फ़ाइलें, लॉग, रनटाइम डेटा (लॉक फाइलें, उदाहरण के लिए), मेल सर्वर स्टोरेज, प्रिंटर स्पूलिंग, आदि। मूल रूप से सभी सामानों के लिए जो अंदर नहीं डाले जा सकते /usr( क्योंकि इसमें स्थानीय डेटा शामिल हैं), तीसरे पक्ष के कार्यक्रम नहीं हैं, जो अंदर जाते हैं /optऔर इन में जाने के रूप में त्यागने योग्य और अस्थिर नहीं होते हैं /tmp

जैसे ही यूनिक्स / लिनक्स विकसित हुआ, यह एक साथ रखे गए विभिन्न प्रसार निर्देशिकाओं के एक हॉज-पॉज के साथ गन्दा स्थान बन गया। हाल के वर्षों में कुछ चीजों को वहां से स्थानांतरित करने की प्रवृत्ति रही है, विशेष रूप से मशीन द्वारा सेवा की गई सामग्री (जो अब [ फाइलसिस्टम पदानुक्रम मानक 2.3, p.15 ] के अनुसार अंदर /srvनहीं जाना चाहिए /var/www)।

इसी बात को क्या हुआ /var/runकुछ साल पहले - कई वितरण के केंद्रित प्रयास के साथ, यह से ले जाया गया था /var/runमें /runजो एक साथ पहले प्रयोग के कार्यों जुड़े हुए /var/lock, /var/runऔर /dev/shm


6

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

इसलिए मेरे दृष्टिकोण से, वे परिवर्तनशील हैं। इस प्रकार, वे / var निर्देशिका में पूरी तरह से अनुकूल हैं और इसमें कुछ भी गलत नहीं है।


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

2
मैसकल डेटाबेस में परिवर्तन भी जानबूझकर किया जाता है, फिर भी डेटाबेस फाइलें / var / db में स्थित हैं। आपको परेशान नहीं करता है?
21

5
ज़रूर करता है, लेकिन मैं यह तर्क दूंगा कि चर से निरंतर तक, DB, HTML / जो भी / वेब अनुप्रयोग की तुलना में अधिक चर होगा, क्योंकि वेब पेज के कम संस्करण हैं, क्योंकि डेटाबेस है। वे पृष्ठ जिनके अपेक्षाकृत कुछ भिन्न संस्करण हैं, मैं अंदर नहीं डालूँगा /var। लेकिन मुझे लगता है कि यह कठिन तथ्यों के बजाय विचार और बहस का विषय है।
jonallard

1
अगर मैं आपको एक डेटाबेस दिखाऊं जो दो साल से बदला नहीं है तो आप क्या कहेंगे?
21

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

6

IIRC, पुराने दिनों में, हम हमेशा /varअपने आप ही फाइल सिस्टम (एक डिस्क का अलग डिस्क या स्लाइस) पर चढ़ते रहे ।

इसका एक कारण, जैसा कि अन्य ने कहा है, यह है कि उस फाइलसिस्टम (लॉग / एट अल) में भारी पढ़ना / लिखना है। एक अलग डिस्क / टुकड़ा होने बेहतर आई / ओ के इस प्रकार के लिए देखते जा सकता है (बनाम ज्यादातर पर पढ़ा मतलब है /, /usr, आदि ...)।

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

फाइलसिस्टम और डिस्क तकनीक में समय के साथ बहुत सुधार हुआ है, इसलिए यह बहुत कम होने वाली घटना है।


1
/ एक अलग विभाजन के रूप में var अभी भी अच्छा अभ्यास है यदि आप अपनी मशीन को नीचे नहीं लाना चाहते हैं जब आपके लॉग जंगली हो जाते हैं, / पूर्ण होने के कारण
डंकन

3

/var मल्टीएजर एक्सेस के लिए उपयोगकर्ता-तटस्थ "आधार" स्थान के लिए एक सभ्य विकल्प है, इस घटना में आपके पास कई वर्चुअल होस्ट चलाने वाली वेबसाइट है जो एफ़टीपी या अन्य अपलोड की अनुमति देती है, अर्थात यदि आप एक वेबहोस्ट या समान हैं।

/homeकरने के लिए एक कल्पनातीत या दुर्भावनापूर्ण उपयोगकर्ता अपलोड करता है, तो इसलिए कि बुरी चीजें अन्य उपयोगकर्ता खोल खातों के लिए भी हो सकता है संभवतः इष्टतम नहीं है /homeविभाजन सीमा (के पारंपरिक सेटअप यह सोचते हैं /var, /homeआदि अलग विभाजन पर किया जा रहा है) यह अन्य उपयोगकर्ता खातों को प्रभावित कर सकते हैं।

बेशक मुझे लगता /srvहै कि यह बेहतर है, लेकिन /varयूनिक्स की परंपरा में लंबे समय तक रहा है।


वितरण और वितरित पैकेज को FHS का पालन करना चाहिए। अंत "उपयोगकर्ता" (sysadmin अगर इसका एक सर्वर है) वह जैसा चाहे वैसा कर सकता है और वेब साइट को कहीं भी रख सकता है। मैं / घर / पब या / घर / वेब में वेबसाइटें डाल रहा हूं क्योंकि इससे पहले / srv था। लेकिन अगर मैं आज एक वेब सर्वर सॉफ्टवेयर परियोजना, / srv / www या जो भी FHS कहता है डिफ़ॉल्ट रूप से वितरित करने के लिए थे, हालांकि व्यवस्थापक इसे बदल सकते हैं।
स्कैपरन

@ultrasawblade, क्यों नहीं /home/http?
पचेरियर

1

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

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


1

अपाचे वेब सर्वर के तहत / var / www / के तहत डिफ़ॉल्ट वेबसाइट है, लेकिन यह अन्य वेबसाइटों को / srv / के तहत रखने का सुझाव दे रहा है

मैंने इसे Ubuntu Server 14.04 LTS पर देखा। इसकी डिफ़ॉल्ट apache2.conf फ़ाइल में टिप्पणी ब्लॉक है:

#<Directory /srv/>
#   Options Indexes FollowSymLinks
#   AllowOverride None
#   Require all granted
#</Directory>
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.