A2ensite (000-default.conf और& default-ssl.conf के पास से गुजरते समय) सभी साइट को सक्षम करने के लिए कैसे?


12

मैं Apache2 के साथ Ubuntu सर्वर 16.04.2 का उपयोग करता हूं, जिस पर मैं अपनी व्यक्तिगत वेबसाइटों को संग्रहीत करता हूं।

/etc/apache2/sites-available(इसके अलावा 000-default.confऔर ssl-default.conf) के तहत मेरी सभी कॉन्फिड फाइलों को सक्षम करने के लिए , मैं गया /var/www/htmlऔर निष्पादित किया गया a2ensite

मुझे तब बताया गया था:

Your choices are: 
000-default default-ssl domain.tld1 domain.tld2 domain.tld3 domain.tld4 
Which site(s) do you want to enable (wildcards ok)?

मैंने तब Ctrl+ Cकुछ और निष्पादित करने का लक्ष्य रखा।

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

जवाबों:


19

हो सकता है कि आपके कॉन्फिग डाइरेक्टरी पर केवल खोज का उपयोग करें।

find /etc/apache2/sites-available/ -type f -and -not -name "*default*" -exec a2ensite {} \;

यह आपकी सभी कॉन्फ़िगरेशन फ़ाइलों को ढूंढता है जो उनके नाम में "डिफ़ॉल्ट" नहीं हैं और उन्हें सक्रिय करता है।


1
आपको उन फ़ाइलों को भी खोजना चाहिए जिनके पास *.confएक्सटेंशन है। वरना a2ensite शिकायत करती है कि साइट मौजूद नहीं है
Dan

@ आवश्यक नहीं है क्योंकि हम गोपनीय निर्देशिका में खोज कर रहे हैं।
जियाजिस

मुझे लगता है कि यह विधि भी अच्छी है, सिद्धांत रूप में, जब नग्नेक्स Sblocks बनाते हैं, और न केवल अपाचे Vhosts के लिए।

9

आपको /etc/apache2/sites-availableकमांड को चलाने और फिर चलाने की आवश्यकता है:

sudo a2ensite *

यह निर्देशिका में सभी साइटों को सक्षम करेगा। (फाइलें xxx.conf की तरह होनी चाहिए)

और फिर अपाचे का उपयोग करके पुनः लोड करें sudo service apache2 reload

तो आपका कमांड क्रम ऐसा होना चाहिए:

cd /etc/apache2/sites-available
sudo a2ensite *
sudo service apache2 reload

यह भी फ़ाइल को सक्षम करता है default-ssl.conf... यह आउटपुट से स्पष्ट हैEnabling site default-ssl.

आप यह dpkg -Sदेखने के लिए उपयोग कर सकते हैं कि कॉन्फ़िगरेशन फ़ाइल पैकेज से है या नहीं।
मुरु

1

कोई फर्क नहीं पड़ता कि हमारा वर्तमान स्थान क्या है, कमांड sudo a2ensite "*.conf"सभी कॉन्फ़िगरेशन फ़ाइलों को सक्षम करने का प्रयास करेगा /etc/apache2/sites-available/

अगला हम a2dissite 000-default.conf default-ssl.confडिफ़ॉल्ट अपाचे के विन्यास को अक्षम करने के लिए उपयोग कर सकते हैं और फिर हम systemctl restart apache2.serviceइसे पुनः आरंभ करने के लिए उपयोग कर सकते हैं ।

हम यह सब एक ही आदेश की तरह चला सकते हैं:

sudo bash -c "a2ensite '*.conf' && a2dissite 000-default.conf default-ssl.conf && systemctl restart apache2.service"

कुछ और, हम bash में एक फंक्शन के माध्यम से एक कस्टम कमांड बना सकते हैं:

function a2ensites {
        sudo bash -c "a2ensite '*.conf' && a2dissite 000-default default-ssl && systemctl restart apache2.service"
}
export -f a2ensites

अब हमारे पास कमांड है , जिसे इस काम को करने के लिए डिज़ाइन किया गया है। इस आदेश को स्थायी बनाने के लिए, हमें उपरोक्त पंक्तियों को फ़ाइल के निचले भाग में रखना होगा और फिर इसे। अगली सरल स्क्रिप्ट इस कार्य को पूरा करेगी:a2ensites~/.bashrcsource

 printf "\nfunction a2ensites { \n\tsudo bash -c \"a2ensite '*.conf' && a2dissite 000-default.conf default-ssl.conf && systemctl restart apache2.service\" \n}\nexport -f a2ensites\n" | tee -a $HOME/.bashrc; source $HOME/.bashrc

पहली पंक्ति सत्य नहीं है। *इससे पहले कि यह करने के लिए पारित हो वाइल्डकार्ड का विस्तार किया जा रहा है a2ensiteमेरे मामले में आदेश। हालाँकि, यह काम करता है sudo a2ensite "*.conf"
दान

नमस्ते, @, मेरे मामले में (Ubuntu 16.04.2) यह उद्धरण के बिना ठीक से काम करता है। हालाँकि मैंने उत्तर को अपडेट कर दिया है। क्या आप जांच सकते हैं कि a2ensite '*.conf'आपके सिस्टम में काम सही है या नहीं?
पा ४० 25०

1
हां यह काम करता है, मैं Ubuntu 17.04 btw पर हूँ।
दान

0

निष्पादन a2ensite /var/www/html/*/अपाचे को प्रत्येक साइट को यह सुनिश्चित करने में सक्षम करेगा कि उसका नाम वही है , जो साइट के नाम के समान है

एक साइड इफेक्ट के रूप में, यह साइट डेयर से मेल खाने की कोशिश करेगा, जो निम्न आउटपुट से अनुमानित के रूप में साइट के लिए फाइल से मेल नहीं खा रहे हैं, लेकिन मुझे लगता है कि इसे सुरक्षित रूप से अनदेखा किया जा सकता है:

ERROR: Site /var/www/html/domain.tld1 does not exist!
ERROR: Site /var/www/html/domain.tld2 does not exist!
ERROR: Site /var/www/html/nice_directory does not exist!
ERROR: Site /var/www/html/nice_file does not exist!

गोपनीय फ़ाइलों को सक्षम करने के बाद आपको Apache को पुनरारंभ करने की आवश्यकता होगी:

systemctl restart apache2.service

1
मुझे यकीन नहीं है, लेकिन वेबरूट फ़ोल्डर में आपकी साइट कॉन्फ़िगरेशन क्यों है? /etc/apache2/sites-availableअपनी साइटों के लिए कॉन्फ़िगरेशन के लिए फ़ोल्डर का उपयोग करने का प्रयास करें । एक बार जब आप उन्हें a2ensite के माध्यम से सक्षम करते हैं, तो वे स्वचालित रूप से लिंक हो जाते हैं /etc/apache2/sites-enabled। अभी आप जो कर रहे हैं वह बहुत अजीब है और आपके वेबसर्वर तक पहुंच वाले हर व्यक्ति आपके कॉन्फ़िगरेशन में देख सकता है?
ज़ियाज़िस

हाय @Ziazis। मुझे वास्तव में समझ में नहीं आता है, आप मुझसे यह भी क्यों पूछते हैं "आपके वेबसर्वर तक पहुंच वाले हर व्यक्ति आपके कॉन्फ़िगरेशन में देख सकता है?" मैं सर्वर का उपयोग करने वाला एकमात्र व्यक्ति हूं; यदि मैं नहीं होता, तो आमतौर पर अन्य उपयोगकर्ताओं के पास दस्तावेज़ रूट तक पहुंच नहीं होती। वैसे भी, क्या आप स्पष्ट कर सकते हैं कि आप ऐसा क्यों पूछते हैं और वास्तव में आपको क्या गलत लगता है?

वैसे मुझे यकीन नहीं है कि आप इस वेबसर्वर का उपयोग किस लिए कर रहे हैं। हालाँकि यदि यह एक लाइव सिस्टम है, जिसमें एक एक्सेस है जो किसी थर्ड पार्टी द्वारा उपलब्ध है, तो आप नहीं चाहते कि आपकी कॉन्फिगरेशन फाइल लेट हो, /var/www/htmlक्योंकि यह डॉक्यूमेंट- default.htmlकूट है। तो आपके मामले में आपको लगता है कि वहाँ विन्यास चल रहा है ... यह एक खुले मुँह के साथ खाने जैसा है;
ज़ियाज़िस

मुझे समझ नहीं आ रहा है। आपको लगता है कि मैंने दस्तावेज़ फ़ाइलों को रूट रूट में डाल दिया है? क्योंकि मैं नहीं था। आप मुझे उन्हें वहां लगाने का सुझाव देंगे? मैं उससे बचना चाहूंगा ... मैं उन सभी को सक्षम करना चाहता हूं जो 000-डिफ़ॉल्ट और डिफ़ॉल्ट-एसएसएल नहीं हैं। BTW, मैं अपनी व्यक्तिगत वेबसाइटों को संग्रहीत करने के लिए वेबसर्वर का उपयोग करता हूं।

आह, मैं देख रहा हूँ - आपने अपने सभी रूटडायरेक्टरीज का नाम वही दिया है जो आपकी कॉन्फिग फाइलों के समान है। और यहाँ मुझे लगा कि आपने /var/www/htmlअपने कॉन्फ़िगर फ़ोल्डर के रूप में अपाचे 2 कॉन्फिग को बदल दिया है । फिर इस पर ध्यान मत देना। क्या आप वास्तव में जरूरत है सिर्फfind ./ -type f -and -not -name "*default*" -exec a2ensite {} \;
ज़ियाज़िस

0

फ़ाइल नाम में निम्नलिखित पंक्तियों को कॉपी पेस्ट करें apache_enable.sh

cd /etc/apache2/sites-available/
a2ensite *
service apache2 reload

और apache_enable.shरूट उपयोगकर्ता का उपयोग करके स्क्रिप्ट को पढ़ने + निष्पादित करने की कमांड दें और निष्पादित करें


0

डिफॉल्ट कॉन्फिग को दूसरे फोल्डर में ले जाएं और फिर * आप के लिए काम करना चाहिए जैसा आप चाहते हैं।

फ़ोल्डर "साइट्स-उपलब्ध" पर जाएं क्योंकि यह केवल इस फ़ोल्डर में काम करता है।

cd / etc / apache2 / sites-available /

सूडो a2ensite *

परीक्षण किया


AFAIK, आप सिस्टम में कहीं से भी ऐसा कर सकते हैं जब आप रूट डॉक्यूमेंट / var / www / html?

महत्वपूर्ण हिस्सा / etc / apache2_or_other / sites-available फ़ोल्डर है। दस्तावेज़ रूट तब उस कॉन्फ़िगरेशन में जुड़ा हुआ है। आप अपनी जड़ें / usr / शेयर / htlm में रख सकते हैं और यह कुछ भी नहीं बदलेगा सिवाय अगर आपने इसे गोपनीय फाइल में नहीं लिखा है। मैं अपने सर्वर में कहीं भी हो सकता हूं, जब तक कि गोपनीय फाइलें साइटों में उपलब्ध फ़ोल्डर में हैं a2ensite अपना काम करेगा।
कैरोलबेल

मेरे जवाब को पहले विकल्प के रूप में संपादित किया गया है जो परीक्षण में
कैरोलबेल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.