Einführung
Unter Ubuntu speichertApache web server seine Dokumente in/var/www/html
, das sich normalerweise im Root-Dateisystem mit dem Rest des Betriebssystems befindet. Manchmal ist es jedoch hilfreich, das Dokumentstammverzeichnis an einen anderen Speicherort zu verschieben, z. B. in ein separates bereitgestelltes Dateisystem. Wenn Sie beispielsweise mehrere Websites von derselben Apache-Instanz aus bedienen, können Sie den Dokumentenstamm jeder Site auf ein eigenes Volume setzen, um die Skalierung an die Anforderungen einer bestimmten Site oder eines bestimmten Clients anzupassen.
In diesem Handbuch verschieben Sie einen Apache-Dokumentstamm an einen neuen Speicherort.
Voraussetzungen
Um diesen Leitfaden zu vervollständigen, benötigen Sie:
-
Ein Ubuntu 18.04-Server und ein Nicht-Root-Benutzer mit Sudo-Berechtigungen. Weitere Informationen zum Einrichten eines Benutzers mit diesen Berechtigungen finden Sie in unserem HandbuchInitial Server Setup with Ubuntu 18.04.
-
Apache installiert, nachHow To Install the Apache Web Server on Ubuntu 18.04.
-
SSL für Ihre Domain nachHow To Secure Apache with Let’s Encrypt on Ubuntu 18.04 konfiguriert. In diesem Lernprogramm wird der Domainnameexample.com verwendet. Sie sollten diesen jedoch durch Ihren eigenen Domainnamen ersetzen.
-
Ein neuer Speicherort für Ihren Dokumentenstamm. In diesem Tutorial verwenden wir das Verzeichnis
/mnt/volume-nyc3-01
für unseren neuen Speicherort. Wenn Sie Block Storage auf DigitalOcean verwenden, zeigt Ihnenthis guide, wie Sie Ihr Volume erstellen und anhängen. Der neue Dokumentstammspeicherort kann jedoch Ihren Anforderungen entsprechend konfiguriert werden. Wenn Sie das Stammverzeichnis Ihres Dokuments auf ein anderes Speichergerät verschieben, möchten Sie einen Speicherort unter dem Bereitstellungspunkt des Geräts auswählen.
[[Schritt 1 - Kopieren von Dateien an den neuen Speicherort]] == Schritt 1 - Kopieren von Dateien an den neuen Speicherort
Bei einer Neuinstallation von Apache befindet sich das Dokumentstammverzeichnis bei/var/www/html
. Durch Befolgen der erforderlichen Anleitungen haben Sie jedoch einen neuen Dokumentstamm erstellt,/var/www/example.com/html
. Möglicherweise haben Sie auch zusätzliche Dokumentwurzeln in den entsprechendenVirtualHost
-Richtlinien. In diesem Schritt legen wir den Speicherort unserer Dokumentstämme fest und kopieren die relevanten Dateien an ihren neuen Speicherort.
Sie können mitgrep
nach dem Speicherort Ihrer Dokumentwurzeln suchen. Lassen Sie uns im Verzeichnis/etc/apache2/sites-enabled
uchen, um unseren Fokus auf aktive Sites zu beschränken. Das Flag-R
stellt sicher, dassgrep
sowohl dieDocumentRoot
als auch den vollständigen Dateinamen in seiner Ausgabe druckt:
grep -R "DocumentRoot" /etc/apache2/sites-enabled
Wenn Sie die vorausgesetzten Lernprogramme auf einem neuen Server ausgeführt haben, sieht das Ergebnis folgendermaßen aus:
Output/etc/apache2/sites-enabled/example.com-le-ssl.conf: DocumentRoot /var/www/example.com/html
/etc/apache2/sites-enabled/example.com.conf: DocumentRoot /var/www/example.com/html
Wenn Sie bereits Setups haben, können Ihre Ergebnisse von den hier gezeigten abweichen. In beiden Fällen können Sie das Feedback vongrep
verwenden, um sicherzustellen, dass Sie die gewünschten Dateien verschieben und die entsprechenden Konfigurationsdateien aktualisieren.
Nachdem Sie den Speicherort Ihres Dokumentstamms bestätigt haben, können Sie die Dateien mitrsync
an ihren neuen Speicherort kopieren. Wenn Sie das Flag-a
verwenden, bleiben die Berechtigungen und andere Verzeichniseigenschaften erhalten, während-v
eine ausführliche Ausgabe bereitstellt, damit Sie den Fortschritt der Synchronisierung verfolgen können:
[.note] #Note: Stellen Sie sicher, dass das Verzeichnis keinen abschließenden Schrägstrich enthält, der hinzugefügt werden kann, wenn Sie die Tab-Vervollständigung verwenden. Wenn es einen abschließenden Schrägstrich gibt, speichertrsync
den Inhalt des Verzeichnisses in den Mount-Punkt, anstatt ihn in ein Verzeichnis mithtml
zu übertragen.
#
sudo rsync -av /var/www/example.com/html /mnt/volume-nyc3-01
Sie sehen die Ausgabe wie folgt:
Outputsending incremental file list
html/
html/index.html
sent 318 bytes received 39 bytes 714.00 bytes/sec
total size is 176 speedup is 0.49
Nachdem unsere Dateien vorhanden sind, ändern wir die Apache-Konfiguration, um diese Änderungen widerzuspiegeln.
[[Schritt-2 - Aktualisieren der Konfigurationsdateien]] == Schritt 2 - Aktualisieren der Konfigurationsdateien
Apache verwendet sowohl globale als auch standortspezifische Konfigurationsdateien. Hintergrundinformationen zur Hierarchie der Konfigurationsdateien finden Sie unterHow To Configure the Apache Web Server on an Ubuntu or Debian VPS. Wir werdenthe virtual host files for our example.com
project ändern:/etc/apache2/sites-enabled/example.com.conf
und/etc/apache2/sites-enabled/example.com-le-ssl.conf
, die erstellt wurden, als wirconfigured SSL certificates for example.com
.
[.note] #Note: Denken Sie daran, dass in Ihrem Fallexample.com
your_domain_name
ist und dass Sie die virtuellen Hostdateien ändern, die beim Ausführen vongrep
ausgegeben wurden Befehl in Schritt 1.
#
Öffnen Sie zunächst/etc/apache2/sites-enabled/example.com.conf
:
sudo nano /etc/apache2/sites-enabled/example.com.conf
Suchen Sie die Zeile, die mitDocumentRoot
beginnt, und aktualisieren Sie sie mit dem neuen Stammspeicherort. In unserem Fall ist dies/mnt/volume-nyc3-01/html
:
/etc/apache2/sites-enabled/example.com.conf
ServerAdmin [email protected]
ServerName example.com
ServerAlias www.example.com
DocumentRoot /mnt/volume-nyc3-01/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
RewriteEngine on
RewriteCond %{SERVER_NAME} =www.example.com [OR]
RewriteCond %{SERVER_NAME} =example.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
Fügen Sie außerdem Anweisungen hinzu, um sicherzustellen, dass der Server den symbolischen Links im Verzeichnis folgt:
/etc/apache2/sites-enabled/example.com.conf
. . .
Options FollowSymLinks
AllowOverride None
Require all granted
Achten Sie auf dieDocumentRoot
, diegrep
in Schritt 1 ausgegeben haben, einschließlich in Aliasnamen oder Umschreibungen. Sie sollten diese auch aktualisieren, um den neuen Speicherort des Dokumentstamms widerzuspiegeln.
Wenden wir uns nach dem Speichern dieser Änderungen der SSL-Konfiguration zu. Öffnen Sie/etc/apache2/sites-enabled/example.com-le-ssl.conf
:
sudo nano /etc/apache2/sites-enabled/example.com-le-ssl.conf
Ändern SieDocumentRoot
, um den neuen Speicherort/mnt/volume-nyc3-01/html
wiederzugeben:
/etc/apache2/sites-enabled/example.com-le-ssl.conf
ServerAdmin [email protected]
ServerName example.com
ServerAlias www.example.com
DocumentRoot /mnt/volume-nyc3-01/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
. . .
Sie haben jetzt die erforderlichen Konfigurationsänderungen vorgenommen, um den neuen Speicherort Ihres Dokumentstamms widerzuspiegeln.
[[Schritt 3 - Apache neu starten]] == Schritt 3 - Apache neu starten
Nachdem Sie die Konfigurationsänderungen vorgenommen haben, können Sie Apache neu starten und die Ergebnisse testen.
Stellen Sie zunächst sicher, dass die Syntax mitconfigtest
stimmt:
sudo apachectl configtest
Bei einer Neuinstallation erhalten Sie folgendes Feedback:
OutputAH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message
Syntax OK
Wenn Sie die oberste Zeile unterdrücken möchten, fügen Sie einfach eineServerName
-Direktive zu Ihrer (globalen) Apache-Hauptkonfigurationsdatei bei/etc/apache2/apache2.conf
hinzu. DieServerName
können die Domain oder IP-Adresse Ihres Servers sein. Dies ist jedoch nur eine Nachricht und hat keinen Einfluss auf die Funktionalität Ihrer Website. Solange die AusgabeSyntax OK
enthält, können Sie fortfahren.
Verwenden Sie den folgenden Befehl, um Apache neu zu starten:
sudo systemctl reload apache2
Besuchen Sie nach dem Neustart des Servers die betroffenen Sites und stellen Sie sicher, dass sie wie erwartet funktionieren. Wenn Sie sich sicher sind, dass alles in Ordnung ist, vergessen Sie nicht, die Originalkopien der Daten zu entfernen:
sudo rm -Rf /var/www/example.com/html
Sie haben Ihr Apache-Dokumentenstammverzeichnis nun erfolgreich an einen neuen Speicherort verschoben.
Fazit
In diesem Lernprogramm wurde erläutert, wie Sie den Apache-Dokumentenstamm in einen neuen Speicherort ändern. Dies kann Ihnen bei der grundlegenden Webserververwaltung helfen, z. B. beim effektiven Hosten mehrerer Websites auf einem einzelnen Server. Sie können auch alternative Speichergeräte wie z. B. Netzwerkblockspeicher nutzen, die bei der Skalierung einer Website hilfreich sein können, wenn sich ihre Anforderungen ändern.
Wenn Sie eine geschäftige oder wachsende Website verwalten, möchten Sie möglicherweisehow to load test your web serverlernen, um Leistungsengpässe zu identifizieren, bevor Sie sie in der Produktion feststellen. In diesem Vergleich vonfive ways to improve your production web application server setup erfahren Sie auch mehr über die Verbesserung der Produktionserfahrung.