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.
- Tworzenie struktury domyślny folder w katalogu/var/www/
- Dodaj plik .conf vhost do pliku/etc/apache2/stron dostępną w nowej domenie zastępującego zastępcze poprzez sed
- 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.
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' –
@MichaelColeman, dodałem wyjście konsoli z Twojej sugestii do oryginalnego wpisu. Jak również, link sym pojawia się teraz w/sites-enabled/ – jslanger
@ raina77ow miał rozwiązanie w [starsze pytanie, którego jeszcze nie znalazłem] (http://stackoverflow.com/questions/13035385/a2ensite-from-script -path) – jslanger