Der richtige Weg, um das Verzeichnis zu wechseln oder von mehreren Verzeichnissen unter verschiedenen Ports für Apache2 auszuführen, ist wie folgt:
Für /etc/apache2
Apache2 befinden sich die Konfigurationsdateien unter und verwenden keine einzige Konfigurationsdatei wie in älteren Versionen, sondern sind in kleinere Konfigurationsdateien aufgeteilt, wobei /etc/apache2/apache2.conf
dies die Hauptkonfigurationsdatei ist. Um Dateien aus einem anderen Verzeichnis bereitzustellen, benötigen wir eine neue virtualhost conf-Datei. Die conf-Dateien von virtualhost befinden sich in /etc/apache2/sites-available
(bearbeiten Sie keine Dateien innerhalb von Sites, die aktiviert sind). Die Standardinstallation von Apache verwendet die Konfigurationsdatei virtualhost 000-default.conf
.
Erstellen Sie zunächst eine neue VirtualHost-Datei, indem Sie die Standard-Virtualhost-Datei kopieren, die von der Standardinstallation von Apache verwendet wird (die bei localhost auf Port 80 ausgeführt wird). Wechseln Sie in das Verzeichnis /etc/apache2/sites-available
und sudo cp 000-default.conf example.com.conf
erstellen Sie eine Kopie von . Bearbeiten Sie nun die Datei bis sudo gedit example.com.conf
zu:
<VirtualHost *:80>
ServerAdmin example@localhost
DocumentRoot /home/ubuntu/example.com
</VirtualHost>
Ich habe der Kürze halber die nicht wichtigen Zeilen aus der obigen Datei gelöscht. Hier DocumentRoot
ist der Pfad zu dem Verzeichnis, aus dem die Website-Dateien bereitgestellt werden sollen, wie z index.html
.
Erstellen Sie das Verzeichnis, aus dem Sie die Dateien bereitstellen möchten, z. mkdir example.com
und ändern Sie den Eigentümer und die Standardgruppe des Verzeichnisses, z. B. wenn Ihr angemeldeter Benutzername ubuntu
Änderungsberechtigungen als ist sudo chown ubuntu:www-data example.com
. Dies gewährt dem Benutzer vollen Zugriff ubuntu
und ermöglicht den Lese- und Ausführungszugriff auf die Gruppe www-data
.
Bearbeiten Sie nun die Apache Conf-Datei, /etc/apache2/apache2.conf
indem Sie den Befehl eingeben sudo gedit apache2.conf
, die Zeile suchen <Directory /var/www/>
und unter dem schließenden Tag </Directory>
Folgendes hinzufügen:
<Directory /home/ubuntu/example.com>
Options Indexes FollowSymLinks Includes ExecCGI
AllowOverride All
Require all granted
</Directory>
Nun gibt es zwei Befehle , um die Virtualhost - Konfigurationsdateien zu aktivieren oder zu deaktivieren, die sind a2ensite
und a2dissite
jeweils. Da unsere example.com.conf
Datei denselben Port ( 80
) verwendet wie die Standardkonfigurationsdatei ( 000-default.conf
), müssen wir die Standardkonfigurationsdatei durch Ausgabe des Befehls deaktivieren sudo a2dissite 000-default.conf
und unsere virtualhost conf-Datei durch aktivierensudo a2ensite example.com.conf
Starten Sie nun den Server mit dem Befehl neu oder laden Sie ihn neu sudo service apache2 restart
. Jetzt dient Apache Dateien aus dem Verzeichnis example.com
an localhost
auf Standard - Port 80
.
Der a2ensite
Befehl erstellt im Grunde genommen einen symbolischen Link zur conf-Datei im Site-fähigen Verzeichnis
Bearbeiten Sie keine Dateien in der Site-fähigen (oder * -aktivierten) Direktive, wie in dieser Antwort https://stackoverflow.com/a/41568701/2532763 angegeben
So ändern Sie den Port und führen ihn aus mehreren Verzeichnissen an verschiedenen Ports aus:
Wenn Sie das Verzeichnis nun an einem anderen Port ausführen müssen, ändern Sie die Portnummer von 80 auf 8080, indem Sie die virtualhost-Datei wie folgt bearbeiten:
<VirtualHost *:8080>
ServerAdmin user@localhost
DocumentRoot /home/ubuntu/work
</VirtualHost>
und Bearbeiten /etc/apache2/ports.conf
und Hinzufügen Listen 8080
direkt unter der LinieListen 80
Jetzt können wir die Standard-Konfigurationsdatei virtualhost aktivieren, die auf Port 80 ausgeführt wird, da das Verzeichnis example.com Port 8080 als verwendet sudo a2ensite 000-default.conf
Starten Sie nun den Server mit dem Befehl neu oder laden Sie ihn neu sudo service apache2 restart
. Jetzt kann von localhost
und auf beide Verzeichnisse zugegriffen werdenlocalhost:8080