So verschieben Sie ein Nginx-Webstammverzeichnis an einen neuen Ort unter Ubuntu 22.04

Einführung

Unter Ubuntu speichert der Nginx-Webserver seine Dokumente im Verzeichnis /var/www/html, das sich normalerweise auf dem Root-Dateisystem zusammen mit dem restlichen Betriebssystem befindet. Manchmal ist es jedoch hilfreich, das Dokumentenverzeichnis an einen anderen Ort zu verschieben, wie z.B. ein separates gemountetes Dateisystem. Wenn Sie beispielsweise mehrere Websites von derselben Nginx-Instanz aus bedienen, ermöglicht es Ihnen, das Dokumentenverzeichnis jeder Website auf einem eigenen Volume zu platzieren, um auf die Bedürfnisse einer bestimmten Website oder eines bestimmten Kunden reagieren zu können.

In diesem Leitfaden werden Sie ein Nginx-Dokumentenverzeichnis an einen neuen Speicherort verschieben.

Voraussetzungen

Um diesen Leitfaden abzuschließen, benötigen Sie:

Wir werden den Domainnamen Ihr_Domain in diesem Tutorial verwenden, aber Sie sollten dies durch Ihren eigenen Domainnamen ersetzen.

  • A new location for your document root. In this tutorial, we will use the /mnt/volume-nyc3-01 directory for our new location. If you are using Block Storage on DigitalOcean, this guide will show you how to create and attach your volume. Your new document root location is configurable based on your needs, however. If you are moving your document root to a different storage device, you will want to select a location under the device’s mount point.

Schritt 1 – Dateien in den neuen Speicherort kopieren

Bei einer frischen Installation von Nginx befindet sich das Dokumentenstammverzeichnis unter /var/www/html. Durch das Befolgen der Voraussetzungshandbücher haben Sie jedoch einen neuen Dokumentenstamm unter /var/www/ihre_domain/html erstellt. Möglicherweise haben Sie auch zusätzliche Dokumentenstämme. In diesem Schritt werden wir den Standort unserer Dokumentenstämme festlegen und die relevanten Dateien an ihren neuen Standort kopieren.

Sie können den Standort Ihrer Dokumentenstämme mit grep suchen. Lassen Sie uns im Verzeichnis /etc/nginx/sites-enabled suchen, um unseren Fokus auf aktive Websites zu beschränken. Das -R-Flag stellt sicher, dass grep sowohl die Zeile mit der root-Anweisung als auch den vollständigen Dateinamen in seiner Ausgabe druckt:

  1. grep -R "root" /etc/nginx/sites-enabled

Wenn Sie den Voraussetzungstutorials auf einem frischen Server gefolgt sind, wird das Ergebnis wie folgt aussehen:

Output
/etc/nginx/sites-enabled/your_domain: root /var/www/your_domain/html; /etc/nginx/sites-enabled/default: root /var/www/html; /etc/nginx/sites-enabled/default: # deny access to .htaccess files, if Apache's document root /etc/nginx/sites-enabled/default:# root /var/www/your_domain;

Wenn Sie bereits bestehende Einrichtungen haben, können Ihre Ergebnisse von dem hier gezeigten abweichen. In jedem Fall können Sie das Feedback von grep verwenden, um sicherzustellen, dass Sie die gewünschten Dateien verschieben und die entsprechenden Konfigurationsdateien aktualisieren.

Jetzt, da Sie den Standort Ihres Dokumentenstamms bestätigt haben, können Sie die Dateien an ihren neuen Standort mit rsync kopieren. Das -a-Flag erhält die Berechtigungen und andere Verzeichniseigenschaften, während -v eine ausführliche Ausgabe bereitstellt, damit Sie den Fortschritt der Synchronisierung verfolgen können:

Hinweis: Stellen Sie sicher, dass am Ende des Verzeichnisses kein Schrägstrich steht, der hinzugefügt werden kann, wenn Sie die Tab-Vervollständigung verwenden. Wenn ein Schrägstrich vorhanden ist, wird rsync den Inhalt des Verzeichnisses in das Mountpoint statt in ein enthaltendes html-Verzeichnis übertragen.

  1. sudo rsync -av /var/www/your_domain/html /mnt/volume-nyc3-01

Sie sehen eine Ausgabe wie folgt:

Output
sending incremental file list created directory /mnt/volume-nyc3-01 html/ html/index.html sent 318 bytes received 39 bytes 714.00 bytes/sec total size is 176 speedup is 0.49

Mit unseren Dateien an Ort und Stelle gehen wir nun dazu über, unsere Nginx-Konfiguration anzupassen, um diese Änderungen widerzuspiegeln.

Schritt 2 – Aktualisierung der Konfigurationsdateien

Nginx verwendet sowohl globale als auch standortspezifische Konfigurationsdateien. Wir werden die Serverblockdatei für unser Ihr_Domain-Projekt ändern: /etc/nginx/sites-enabled/Ihr_Domain.

Hinweis: Ersetzen Sie Ihr_Domain durch Ihren Domainnamen, und denken Sie daran, dass Sie die Serverblockdateien ändern werden, die ausgegeben wurden, als Sie den Befehl grep in Schritt 1 ausgeführt haben.

Beginnen Sie damit, /etc/nginx/sites-enabled/Ihr_Domain in einem Editor zu öffnen:

  1. sudo nano /etc/nginx/sites-enabled/your_domain

Finden Sie die Zeile, die mit root beginnt, und aktualisieren Sie sie mit dem neuen Stammverzeichnis. In unserem Fall wird dies /mnt/volume-nyc3-01/html sein:

/etc/nginx/sites-enabled/your_domain
server {

        root /mnt/volume-nyc3-01/html;
        index index.html index.htm index.nginx-debian.html;
        . . .
}
. . .

Halten Sie Ausschau nach weiteren Stellen, an denen Sie den ursprünglichen Dokument-Root-Pfad sehen, der von grep in Schritt 1 ausgegeben wird, einschließlich Aliasen oder Umleitungen. Sie müssen diese ebenfalls aktualisieren, um den neuen Speicherort des Dokument-Roots widerzuspiegeln.

Wenn Sie alle notwendigen Änderungen vorgenommen haben, speichern und schließen Sie die Datei.

Schritt 3 – Neustart von Nginx

Nachdem Sie die Konfigurationsänderungen abgeschlossen haben, können Sie Nginx neu starten und die Ergebnisse testen.

Zuerst stellen Sie sicher, dass die Syntax korrekt ist:

  1. sudo nginx -t

Wenn alles in Ordnung ist, sollte es folgendes zurückgeben:

Output
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful

Wenn der Test fehlschlägt, suchen Sie die Probleme und beheben Sie sie.

Nachdem der Test bestanden wurde, starten Sie Nginx neu:

  1. sudo systemctl restart nginx

Wenn der Server neu gestartet wurde, besuchen Sie die betroffenen Websites und stellen Sie sicher, dass sie wie erwartet funktionieren. Sobald Sie sicher sind, dass alles in Ordnung ist, vergessen Sie nicht, die ursprüngliche Kopie der Daten zu entfernen:

  1. sudo rm -Rf /var/www/your_domain/html

Sie haben Ihren Nginx-Dokument-Root erfolgreich an einen neuen Speicherort verschoben.

Fazit

In diesem Tutorial haben wir behandelt, wie man das Nginx-Dokumentenstammverzeichnis auf einen neuen Speicherort ändert. Dies kann Ihnen bei der grundlegenden Webserver-Verwaltung helfen, z.B. beim effektiven Verwalten mehrerer Websites auf einem einzigen Server. Es ermöglicht auch die Nutzung alternativer Speichergeräte wie Netzwerkblockspeicher, was beim Skalieren einer Website hilfreich sein kann, wenn sich ihre Anforderungen ändern.

Wenn Sie eine vielbeschäftigte oder wachsende Website verwalten, könnten Sie daran interessiert sein zu lernen, wie man Nginx mit HTTP/2 einrichtet, um von seiner hohen Übertragungsgeschwindigkeit für Inhalte zu profitieren.

Source:
https://www.digitalocean.com/community/tutorials/how-to-move-an-nginx-web-root-to-a-new-location-on-ubuntu-22-04