Apache2 के लिए अलग-अलग पोर्ट के तहत डायरेक्टरी बदलने या कई डायरेक्टरी से चलने का सही तरीका इस प्रकार है:
Apache2 के लिए कॉन्फ़िगरेशन फ़ाइल के अंतर्गत स्थित हैं /etc/apache2और पुराने संस्करणों के रूप में एक एकल कॉन्फ़िगरेशन फ़ाइल का उपयोग नहीं करता है, लेकिन /etc/apache2/apache2.confमुख्य कॉन्फ़िगरेशन फ़ाइल होने के साथ छोटे कॉन्फ़िगरेशन फ़ाइलों में विभाजित है । एक अलग निर्देशिका से फ़ाइलों की सेवा करने के लिए हमें एक नई virtualhost conf फ़ाइल की आवश्यकता है। वर्चुअलबॉस्ट conf फाइलें /etc/apache2/sites-available( स्थित साइटों को सक्षम में संपादित न करें) में स्थित हैं। डिफ़ॉल्ट अपाचे इंस्टॉलेशन virtualhost conf फ़ाइल का उपयोग करता है 000-default.conf।
एपाचे की डिफ़ॉल्ट स्थापना (पोर्ट 80 पर स्थानीयहोस्ट पर चलने वाली) द्वारा उपयोग की जाने वाली डिफ़ॉल्ट वर्चुअलहोस्ट फ़ाइल की प्रतिलिपि बनाकर एक नई वर्चुअलाइज फाइल तैयार करना शुरू करें। निर्देशिका में बदलें /etc/apache2/sites-availableऔर फिर प्रतिलिपि बनाएँ sudo cp 000-default.conf example.com.conf, अब फ़ाइल को इसके द्वारा संपादित करें sudo gedit example.com.conf:
<VirtualHost *:80>
ServerAdmin example@localhost
DocumentRoot /home/ubuntu/example.com
</VirtualHost>
मैंने संक्षिप्तता के लिए उपरोक्त फ़ाइल से गैर महत्वपूर्ण लाइनें हटा दी हैं। यहाँ DocumentRootनिर्देशिका का पथ है जहाँ से वेबसाइट फ़ाइलों को इस तरह से परोसा जाना हैindex.html ।
वह निर्देशिका बनाएं जिससे आप फ़ाइलों की सेवा करना चाहते हैं, उदाहरण के लिए; mkdir example.comऔर निर्देशिका के स्वामी और डिफ़ॉल्ट समूह को बदलें, उदाहरण के लिए यदि आपका उपयोगकर्ता नाम लॉग इन किया गया है तो ubuntuपरिवर्तन अनुमतियाँ हैं sudo chown ubuntu:www-data example.com। यह उपयोगकर्ता तक पूर्ण पहुंच प्रदान करता है ubuntuऔर समूह तक पहुंच को पढ़ने और निष्पादित करने की अनुमति देता हैwww-data ।
अब अपाचे conf फ़ाइल को संपादित /etc/apache2/apache2.confआदेश जारी करके sudo gedit apache2.confऔर लाइन को खोजने <Directory /var/www/>और बंद टैग नीचे </Directory>, नीचे निम्नलिखित जोड़ें:
<Directory /home/ubuntu/example.com>
Options Indexes FollowSymLinks Includes ExecCGI
AllowOverride All
Require all granted
</Directory>
अब सक्षम या वर्चुअलहोस्ट विन्यास फाइल है, जो कर रहे हैं निष्क्रिय करने के लिए दो आदेशों हैं a2ensiteऔर a2dissiteक्रमशः। अब चूंकि हमारी example.com.confफ़ाइल समान पोर्ट ( 80) का उपयोग करती है जैसा कि डिफ़ॉल्ट कॉन्फ़िगरेशन फ़ाइल ( 000-default.conf) द्वारा उपयोग किया जाता है , हमें कमांड जारी करके डिफ़ॉल्ट कॉन्फ़िगरेशन फ़ाइल को अक्षम करना होगा sudo a2dissite 000-default.confऔर हमारे virtualhost conf फ़ाइल को सक्षम करना होगा।sudo a2ensite example.com.conf
अब कमांड के साथ सर्वर को रिस्टार्ट या रीलोड करें sudo service apache2 restart। अब अपाचे निर्देशिका से फ़ाइलों में कार्य करता है example.comपर localhostकी डिफ़ॉल्ट पोर्ट पर80 ।
a2ensiteआदेश मूल रूप से साइट-सक्षम निर्देशिका के अंतर्गत conf फ़ाइल के लिए एक प्रतीकात्मक लिंक बनाता है
साइट-सक्षम (या * -सक्षम) डायरेक्टॉय के भीतर फ़ाइलों को संपादित न करें, जैसा कि इस उत्तर में बताया गया है https://stackoverflow.com/a/41568701/2532763
बंदरगाह को बदलने और विभिन्न बंदरगाहों पर कई निर्देशिकाओं से चलाने के लिए:
अब यदि आपको किसी भिन्न पोर्ट पर डायरेक्टरी को चलाने की आवश्यकता है, तो वर्चुअलाइज़ह फ़ाइल को संपादित करके पोर्ट संख्या को 80 से 8080 तक बदल दें:
<VirtualHost *:8080>
ServerAdmin user@localhost
DocumentRoot /home/ubuntu/work
</VirtualHost>
और संपादन /etc/apache2/ports.confऔर Listen 8080लाइन के ठीक नीचे जोड़नाListen 80
अब हम default virtualhost conf फाइल को सक्षम कर सकते हैं जो कि 80 पर चलता है क्योंकि example.com निर्देशिका पोर्ट 8080 का उपयोग करता है, जैसा कि sudo a2ensite 000-default.conf
अब कमांड के साथ सर्वर को रिस्टार्ट या रीलोड करें sudo service apache2 restart। अब दोनों निर्देशिकाओं से localhostऔर तक पहुँचा जा सकता हैlocalhost:8080