2015-02-17 6 views
6

सिस्टम के साथ: Ubuntu 14.04 दीप समानताएं वी एम पर चल Vagranta2ensite: त्रुटि 'साइट ___ मौजूद नहीं है', यहां तक ​​कि .conf फ़ाइल

के साथ सेट अप

मैं करने के लिए मेरी पहली गैर तुच्छ खोल स्क्रिप्ट लिख रहा हूँ मेरे मैक लैपटॉप पर एक देव वीएम में नई वेब परियोजनाएं जोड़ें।

  1. /var/www में एक डिफ़ॉल्ट फ़ोल्डर संरचना बनाएं/
  2. /etc/apache2/साइटों से उपलब्ध नए डोमेन sed
  3. के माध्यम से प्लेसहोल्डर की जगह के साथ करने के लिए एक .conf vhost फ़ाइल जोड़ें नई साइट सक्षम करें और पुन: प्रारंभ अपाचे

मैं फोल्डर और अधिक फ़ाइलों की प्रतिलिपि हो गया और sed किया है मेरी index.html और .conf vhost फ़ाइल को अनुकूलित कर खुश लगता है, लेकिन a2ensite/आदि में .conf फ़ाइल को देखने के लिए प्रतीत नहीं होता है/apache2/साइट-उपलब्ध/

मैं साइट को सक्षम करने का प्रयास करने से पहले अपने अस्तित्व के लिए परीक्षण करता हूं और एक डीबग सूची भी प्रिंट करता हूं: ls -al /etc/apache2/sites-available/ | grep $CONFFILE

मैंने उबंटू 13 (या 14) के बाद .conf एक्सटेंशन होने के महत्व के बारे में यहां और कहीं और पढ़ा है जो एक बहुत ही आम मुद्दा प्रतीत होता है। मेरी vhost फ़ाइल में .conf एक्सटेंशन है, इसलिए यह एक अलग समस्या की तरह लगता है।

क्या कोई मुझे सही दिशा में इंगित कर सकता है? मैं इस विशेष समस्या के साथ अन्य पोस्टिंग नहीं ढूंढ पाया है।

मेरे भावना है कि मैं a2ensite आदेश में मेरी $CONFFILE चर विस्तार में एक त्रुटि मिल गया है क्योंकि त्रुटि .conf विस्तार भले ही निर्देशिका सूची करता दिखाई नहीं देता:

ERROR: Site /etc/apache2/sites-available/example-com-80 does not exist!

संपादित करें:

:

नीचे माइकल के सुझाव के अनुसार कमांड लाइन से a2ensite चलाने के बाद, यह विस्तार प्रदर्शित नहीं करता है ठीक पार्स करने के लिए लग रहा था, लेकिन अभी भी

$ sudo a2ensite example-com-80.conf 
Enabling site example-com-80. 
To activate the new configuration, you need to run: 
    service apache2 reload 

समाप्ति संपादित

संपादित करें: जवाब

पर व्यापक दृष्टिकोण के साथ खोज के बाद पाया जाता है, Ubuntu 14.04 के बजाय a2ensite Vagrant आदि, मैं a two year old question पाया जहां @ raina77ow अंक बाहर a2ensite बस चाहता है कि साइट का नाम, पूरा पथ नहीं। sudo a2ensite /etc/apache2/sites-available/$CONFFILE से sudo a2ensite $CONFFILE बदलना स्क्रिप्ट कार्य के रूप में कार्य करता है। यह भी बताता है कि कमांड लाइन से a2ensite चलाने के मेरे पिछले प्रयास क्यों विफल हुए; मैं इसे अंदर/var/www/templates/से चला रहा था और .conf फ़ाइल के पूरे पथ में गुजर रहा था।

अब, एक स्टैक ओवरफ्लो प्रश्न, मुझे यह कैसे संकेत देना चाहिए कि मेरे पास सीमित प्रतिष्ठा का समाधान है? और क्रेडिट ठीक से दे?

ऊपर संपादित देखें समाधान के लिए

example.com साथ

कंसोल आउटपुट:

$ ./newvhost 
New Server Name with Top Level Domain: example.com 
Validating: example.com 
New DocumentRoot created: /var/www/example 
Copying template structure 
Creating: example-com-80.conf 
-rw-r--r-- 1 root root 811 Feb 17 15:11 example-com-80.conf 
Enabling site 
ERROR: Site /etc/apache2/sites-available/example-com-80 does not exist! 

newvhost स्क्रिप्ट:

OLDIFS=$IFS 
IFS="." 
printf "New Server Name with Top Level Domain: " 
read NEW_SUBDOMAIN NEW_TLD 
IFS=$OLDIFS 

NEW_FULL_NAME="$NEW_SUBDOMAIN.$NEW_TLD" 

echo "Validating: $NEW_FULL_NAME" 

if [[ "$NEW_TLD" != "com" && "$NEW_TLD" != "dev" ]] ; then 
    echo -e "\E[31;1mTLD must be com or dev! \033[0m" 
    exit 1 
fi 


if [ -d "/var/www/$NEW_SUBDOMAIN" ]; then 
    echo -e "\E[31;1mRoot directory /var/www/$NEW_SUBDOMAIN already exists!\033[0m" 
    exit 1 
fi 

mkdir /var/www/$NEW_SUBDOMAIN 

if [ -d "/var/www/$NEW_SUBDOMAIN" ]; then 
    echo "New DocumentRoot created: /var/www/$NEW_SUBDOMAIN" 
else 
    echo -e "\E[31;1mUnable to make directory\033[0m" 
    exit 1 
fi 

echo "Copying template structure" 

cp /var/www/templates/structure/. /var/www/$NEW_SUBDOMAIN/ -R 

sed -i "s/TEMPLATE/$NEW_FULL_NAME/g" /var/www/$NEW_SUBDOMAIN/index.html 

CONFFILE="$NEW_SUBDOMAIN-$NEW_TLD-80.conf" 

echo "Creating: $CONFFILE" 

sudo cp /var/www/templates/vhost_template.conf /etc/apache2/sites-available/$CONFFILE 

sudo sed -i "s/FULLNAME/$NEW_FULL_NAME/g" /etc/apache2/sites-available/$CONFFILE 
sudo sed -i "s/DOMAINNAME/$NEW_SUBDOMAIN/g" /etc/apache2/sites-available/$CONFFILE 

if [ -e "/etc/apache2/sites-available/$CONFFILE" ]; then 
    ls -al /etc/apache2/sites-available/ | grep $CONFFILE # DEGBUG Listing to doubly confirm $CONFFILE exists 
    echo "Enabling site" 
    sudo a2ensite /etc/apache2/sites-available/$CONFFILE 
    sudo apache2ctl graceful 
fi 

धन्यवाद,

में सुधार के लिए किसी भी अन्य सुझाव लिपि बहुत हैं जब तक स्टैक ओवरफ्लो की शर्तों से परेशान नहीं होता है तब तक आपका स्वागत है।

+0

मैं यह जांचने की कोशिश करता हूं कि 'example-com-80.conf' फ़ाइल स्वयं खराब नहीं है, मैन्युअल रूप से कमांड लाइन' $ sudo a2ensite example-com-80.conf' –

+0

@MichaelColeman से इसे पार्स करने का प्रयास करें, मैंने जोड़ा आपके सुझाव से मूल पोस्ट में कंसोल आउटपुट। साथ ही, एक sym लिंक अब/साइट-सक्षम/ – jslanger

+0

@ raina77ow में एक समाधान था [एक पुराना प्रश्न जो मुझे अभी तक नहीं मिला] में एक समाधान था (http://stackoverflow.com/questions/13035385/a2ensite-from- स्क्रिप्ट -पाथ) – jslanger

उत्तर

13

उत्तर, संक्षेप में, यह है कि a2ensite सिर्फ साइट.conf का नाम चाहता है और फ़ाइल के पूरे पथ को नहीं चाहता है।

तो sudo a2ensite example-com-80.conf

मैं इस एक earlier answer में @ raina77ow द्वारा पाया।

+0

मैं अपने सिर को खरोंच कर रहा था और मैंने आपके जवाब को देखने से पहले 10 बार सभी पथों की जांच की - स्पष्ट उत्तर –

+0

के लिए बहुत बहुत धन्यवाद मुझे लगता है कि यह इतना आसान था। लेकिन मेरे लिए काम नहीं कर रहा है –

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