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/apache2Apache2 befinden sich die Konfigurationsdateien unter und verwenden keine einzige Konfigurationsdatei wie in älteren Versionen, sondern sind in kleinere Konfigurationsdateien aufgeteilt, wobei /etc/apache2/apache2.confdies 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-availableund sudo cp 000-default.conf example.com.conferstellen Sie eine Kopie von . Bearbeiten Sie nun die Datei bis sudo gedit example.com.confzu:
<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 DocumentRootist 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.comund ä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 ubuntuund ermöglicht den Lese- und Ausführungszugriff auf die Gruppe www-data.
Bearbeiten Sie nun die Apache Conf-Datei, /etc/apache2/apache2.confindem 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 a2ensiteund a2dissitejeweils. Da unsere example.com.confDatei denselben Port ( 80) verwendet wie die Standardkonfigurationsdatei ( 000-default.conf), müssen wir die Standardkonfigurationsdatei durch Ausgabe des Befehls deaktivieren sudo a2dissite 000-default.confund 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.coman localhostauf Standard - Port 80.
Der a2ensiteBefehl 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.confund Hinzufügen Listen 8080direkt 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 localhostund auf beide Verzeichnisse zugegriffen werdenlocalhost:8080