So verschieben Sie einen Apache-Webstamm an einen neuen Speicherort unter Ubuntu 18.04

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-enableduchen, 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.comyour_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.