2015-02-17 34 views
6

System: Ubuntu 14.04 LAMP działa na Parallels VM utworzone z Vagranta2ensite „strony: ___ nie istnieje” błąd, nawet z .conf pliku

Piszę mojego pierwszego nietrywialne skrypt do dodaj nowe projekty internetowe do wirtualnej maszyny wirtualnej na moim laptopie Mac.

  1. Tworzenie struktury domyślny folder w katalogu/var/www/
  2. Dodaj plik .conf vhost do pliku/etc/apache2/stron dostępną w nowej domenie zastępującego zastępcze poprzez sed
  3. Włącz nową witrynę i restart apache

mam foldery i pliki kopiowanie i sed wydaje się szczęśliwy dostosowanie index.html i .conf pliku vhost, ale a2ensite nie wydaje się, aby zobaczyć plik .conf w/etc/apache2/sites-available/

Testuję jego istnienie, a nawet wydrukuję listę debugowania: ls -al /etc/apache2/sites-available/ | grep $CONFFILE przed próbą włączenia witryny.

Czytałem tutaj i gdzie indziej o znaczeniu posiadania rozszerzenia .conf od Ubuntu 13 (lub 14), co wydaje się być bardzo częstym problemem. Mój plik vhost ma rozszerzenie .conf, więc wydaje się, że jest to inny problem.

Czy ktoś może wskazać mi właściwy kierunek? Nie mogłem znaleźć innych wpisów z tym konkretnym problemem.

Mam wrażenie, że mam błąd w moim $CONFFILE zmiennej ekspansji w komendzie w a2ensite ponieważ błąd nie pokazuje rozszerzenie .conf choć aukcja katalog służy:

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

Edycja:

Po uruchomieniu a2ensite z wiersza poleceń według sugestii Micheala poniżej, wydawało się, że parsowanie jest w porządku, ale nadal nie pokazuje rozszerzenia:

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

End Edit

Edycja: Znaleziono odpowiedź

Po poszukiwaniach w szerszych kategoriach, a2ensite zamiast Ubuntu 14.04 Vagrant etc, znalazłem a two year old question gdzie @ raina77ow wskazuje, że a2ensite prostu chce nazwa strony, a nie cała ścieżka. Zmiana sudo a2ensite /etc/apache2/sites-available/$CONFFILE na sudo a2ensite $CONFFILE powoduje, że skrypt działa zgodnie z zamierzeniami. To wyjaśnia również, dlaczego moje wcześniejsze próby uruchomienia a2ensite z wiersza poleceń nie powiodły się; Uruchomiłem go od wewnątrz/var/www/templates/i przekazując całą ścieżkę do pliku .conf.

Teraz pytanie stackoverflow, jak najlepiej powinienem wskazać, że jest to rozwiązanie o ograniczonej reputacji, że mam? I właściwie oddać kredyt?

Zobacz zmienił powyższe rozwiązania

wyjścia konsoli z 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 scenariusz:

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 

Dzięki,

jakieś inne sugestie dotyczące poprawy scenariusz jest bardzo mile widziane, o ile nie ma to wpływu na warunki StackOverflow.

+0

Spróbowałbym sprawdzić, czy sam plik 'example-com-80.conf' nie jest zły, spróbuj ręcznie parsować go z wiersza poleceń' $ sudo a2ensite example-com-80.conf' –

+0

@MichaelColeman, dodałem wyjście konsoli z Twojej sugestii do oryginalnego wpisu. Jak również, link sym pojawia się teraz w/sites-enabled/ – jslanger

+0

@ raina77ow miał rozwiązanie w [starsze pytanie, którego jeszcze nie znalazłem] (http://stackoverflow.com/questions/13035385/a2ensite-from-script -path) – jslanger

Odpowiedz

13

Krótko mówiąc, odpowiedź brzmi następująco: a2ensite chce tylko nazwy pliku site.conf, a nie całej ścieżki do pliku.

Więc sudo a2ensite example-com-80.conf

Znalazłem to w earlier answer przez @ raina77ow.

+0

Drapałam głowę i sprawdzałam wszystkie ścieżki 10 razy, zanim zobaczyłam twoją odpowiedź - wielkie dzięki za jasną odpowiedź –

+0

Myślę, że to było takie łatwe. Ale nie działa dla mnie –