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/apache2
i nie używają pojedynczego pliku konfiguracyjnego, jak w starszych wersjach, ale są podzielone na mniejsze pliki konfiguracyjne, /etc/apache2/apache2.conf
bę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-available
a 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.com
i zmień właściciela i domyślną grupę katalogu, np. jeśli zalogowana nazwa użytkownika to ubuntu
zmiana uprawnień as sudo chown ubuntu:www-data example.com
. Zapewnia to pełny dostęp do użytkownika ubuntu
i umożliwia odczyt i wykonywanie dostępu do grupy www-data
.
Teraz edytuj plik apache conf, /etc/apache2/apache2.conf
wydając polecenie sudo gedit apache2.conf
i 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ą a2ensite
i a2dissite
odpowiednio. Ponieważ nasz example.com.conf
plik 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.com
na localhost
na domyślnym porcie80
.
The a2ensite
Komenda 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.conf
i dodawanie Listen 8080
tuż 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 localhost
ilocalhost:8080