Właściwy sposób zmiany katalogu lub uruchomienia z wielu katalogów pod innym portem dla apache2 jest następujący:
W przypadku apache2 pliki konfiguracyjne znajdują się pod /etc/apache2i nie używają pojedynczego pliku konfiguracyjnego, jak w starszych wersjach, ale są podzielone na mniejsze pliki konfiguracyjne, /etc/apache2/apache2.confbędąc głównym plikiem konfiguracyjnym. Do obsługi plików z innego katalogu potrzebujemy nowego pliku conf wirtualnego hosta. Pliki conf wirtualnego hosta znajdują się w /etc/apache2/sites-available(nie edytuj plików w obrębie witryn). Domyślna instalacja apache wykorzystuje plik conf virtualhost 000-default.conf.
Rozpocznij od utworzenia nowego pliku virtualhost, kopiując domyślny plik virtualhost używany podczas domyślnej instalacji apache (ten, który działa na localhost na porcie 80). Przejdź do katalogu, /etc/apache2/sites-availablea następnie wykonaj kopię przez sudo cp 000-default.conf example.com.conf, teraz edytuj plik przez sudo gedit example.com.conf:
<VirtualHost *:80>
ServerAdmin example@localhost
DocumentRoot /home/ubuntu/example.com
</VirtualHost>
Dla zwięzłości usunąłem nieistotne wiersze z powyższego pliku. Oto DocumentRootścieżka do katalogu, z którego mają być obsługiwane pliki witryny, takie jak index.html.
Utwórz katalog, z którego chcesz udostępnić pliki, na przykład; mkdir example.comi zmień właściciela i domyślną grupę katalogu, np. jeśli zalogowana nazwa użytkownika to ubuntuzmiana uprawnień as sudo chown ubuntu:www-data example.com. Zapewnia to pełny dostęp do użytkownika ubuntui umożliwia odczyt i wykonywanie dostępu do grupy www-data.
Teraz edytuj plik apache conf, /etc/apache2/apache2.confwydając polecenie sudo gedit apache2.confi znajdź linię, <Directory /var/www/>a pod tagiem zamykającym </Directory>dodaj następujące:
<Directory /home/ubuntu/example.com>
Options Indexes FollowSymLinks Includes ExecCGI
AllowOverride All
Require all granted
</Directory>
Obecnie istnieją dwa polecenia włączyć lub wyłączyć virtualhost pliki konfiguracyjne, które są a2ensitei a2dissiteodpowiednio. Ponieważ nasz example.com.confplik korzysta z tego samego portu ( 80), co używany przez domyślny plik konfiguracyjny ( 000-default.conf), musimy wyłączyć domyślny plik konfiguracyjny, wydając poleceniesudo a2dissite 000-default.conf i włączyć plik conf wirtualnego hosta przezsudo a2ensite example.com.conf
Teraz uruchom ponownie lub ponownie załaduj serwer za pomocą polecenia sudo service apache2 restart. Teraz służy apache pliki z katalogu example.comna localhostna domyślnym porcie80 .
The a2ensiteKomenda zasadzie tworzy dowiązanie symboliczne do pliku conf z katalogu witryn obsługujących
Nie edytuj plików w obrębie bezpośredniego (lub * włączonego) directo, jak wskazano w tej odpowiedzi https://stackoverflow.com/a/41568701/2532763
Aby zmienić port i uruchomić z wielu katalogów na różnych portach:
Teraz, jeśli chcesz uruchomić katalog na innym porcie, zmień numer portu z 80 na 8080, edytując plik virtualhost jako:
<VirtualHost *:8080>
ServerAdmin user@localhost
DocumentRoot /home/ubuntu/work
</VirtualHost>
oraz edytowanie /etc/apache2/ports.confi dodawanie Listen 8080tuż poniżej liniiListen 80
Teraz możemy włączyć domyślny plik conf wirtualnego hosta, który działa na porcie 80, ponieważ katalog example.com używa portu 8080, as sudo a2ensite 000-default.conf
Teraz uruchom ponownie lub ponownie załaduj serwer za pomocą polecenia sudo service apache2 restart. Teraz oba katalogi są dostępne z localhostilocalhost:8080