2011-11-07 3 views
7

वर्तमान में मेरे अपाचे सर्वर की तरह तोक्या अपाचे 2 सबडोमेन की आभासी होस्टिंग का समर्थन करता है?

<VirtualHost *:80> 
ServerName www.example.com 
ServerAlias example.com 
DocumentRoot /var/www 
</VirtualHost> 

समस्या यह है कि /var/www नीचे सब कुछ अन्य सभी स्थानों से पहुँचा जा सकता है है की स्थापना की है। अगर मैं एक वेब पेज /var/www/john/bio.html है, तो उस वेब पेज से var/www/jane/

मैं इतना

<VirtualHost *:80> 
ServerName www.example.com 
ServerAlias example.com 
DocumentRoot /var/www 
</VirtualHost> 

<VirtualHost *:80> 
ServerName www.john.example.com 
ServerAlias john.example.com 
DocumentRoot /var/www/john 
</VirtualHost> 

<VirtualHost *:80> 
ServerName www.jane.example.com 
ServerAlias jane.example.com 
DocumentRoot /var/www/jane 
</VirtualHost> 

की तरह मेरे अपाचे सर्वर स्थापित करना चाहते हैं लिपियों/तस्वीरें उधार ले सकता तो उपयोगकर्ता john के लिए सभी फ़ाइलों में जाना /var/www/john/ फ़ोल्डर, और इसी तरह उपयोगकर्ता jane के लिए। फिर, प्रतीकात्मक लिंक बंद हो गए (डिफ़ॉल्ट रूप से), और केवल /var/www/user/ नीचे (डिफ़ॉल्ट रूप से फिर से) प्रदान किया गया है, मुझे वेब पेज से स्क्रिप्ट/छवियों सहित john's वेब पेज पर चिंता करने की आवश्यकता नहीं है।

उत्तर

21

स्थानीय उपायों का उपयोग केवल (/etc/hosts DNS के बजाय) मैंने पाया कि यह वास्तव में काम कर सकता है।

सबसे पहले, अपनी इच्छित वेबसाइट नाम (www.example.com) का मानचित्रण करने के लिए अपनी /etc/hosts फ़ाइल बदलें, और लक्ष्य आईपी पता (1 9 2.168.1.1)। मैंने अपना स्थानीय आईपी पता इस्तेमाल किया।

IPAddress    Hostname     Alias 
-----------  -------------------------- ------------------ 
192.168.1.1  www.example.com    example.com 
192.168.1.1  www.john.example.com   john.example.com 
192.168.1.1  www.jane.example.com   jane.example.com 

आपके वेब ब्राउज़र को वर्ल्ड वाइड वेब पर देख रहे हैं से पहले अपने /etc/hosts फ़ाइल की जाँच करेगा।

अगला अपने सभी अपाचे config फ़ाइलें (httpd.conf, apache2.conf, ports.conf, conf.d/*) के माध्यम से जाने के लिए और ठीक एक फ़ाइल आदेश NameVirtualHost *:80 जारी किया जाता है में यह सुनिश्चित कर लें (यह बंदरगाह :80 होना जरूरी नहीं है, लेकिन अगर यह जारी किया जाता है एक से अधिक बार, आपको this problem मिलेगा)। मेरा /etc/apache2/ports.conf में जारी किया गया था, इसलिए यदि आपको करना है तो वहां अपना रखें। अंत में, अपनी अपाचे कॉन्फ़िगरेशन फ़ाइल अपडेट करें (मेरा /etc/apache2/sites-available/default पर था) ऐसा ही है।

<VirtualHost *:80> 
    ServerName www.example.com 
    ServerAlias example.com 
    DocumentRoot /var/www 
</VirtualHost> 

<VirtualHost *:80> 
    ServerName www.john.example.com 
    ServerAlias john.example.com 
    DocumentRoot /var/www/john 
</VirtualHost> 

<VirtualHost *:80> 
    ServerName www.jane.example.com 
    ServerAlias jane.example.com 
    DocumentRoot /var/www/jane 
</VirtualHost> 

एक अंतिम कदम के रूप में, आप नीचे दिए गए आदेशों जारी करके अपाचे पर वेबसाइटें जोड़ने की आवश्यकता हो सकती है (यह चरण आवश्यक नहीं है, यदि आप अलग-अलग वेबसाइटों के लिए अलग फ़ाइलों में sites-available/default में सभी वेबसाइटों और नहीं दे है)।

# a2ensite www.example.com 
# a2ensite www.john.example.com 
# a2ensite www.jane.example.com 

यह करने के बाद, john.example.com/var/www/john के लिए जाना जाएगा। वह निर्देशिका रूट निर्देशिका के रूप में कार्य करेगी, और john के पास www तक पहुंच नहीं होगी, और इसलिए, /var/www/jane तक पहुंच नहीं है।

इसी प्रकार, ऐसा करने के बाद, jane.example.com/var/www/jane पर जाएगा। वह निर्देशिका तब मूल निर्देशिका के रूप में कार्य करेगी, और jane के पास www तक पहुंच नहीं होगी, और इसलिए, /var/www/john तक पहुंच नहीं है।

सांकेतिक लिंक के साथ बंद कर दिया --by default-- न निर्देशिका इससे मुझे याद है कि मैं अपने मेजबान फ़ाइल को बदलने के लिए भूल गया एक दूसरे को

+0

उपयोग करने में सक्षम हो जाएगा। अतीत से धन्यवाद आदमी। –

+0

@MeowMix खुश मैं कम से कम एक व्यक्ति की सहायता कर सकता हूं – puk

+1

कमांड 'a2ensite example.com' साइट्स-सक्षम/example.com' से साइट्स-सक्षम/example.com' से सिम्लिंक बनाएं, विपरीत कमांड 'a2dissite example.com है ', जो इसे अक्षम कर देगा। – Honza

संबंधित मुद्दे