Als Front-End-Ingenieur dachte ich, ich sollte nicht nur das Codieren, sondern auch die Webserver verstehen, deshalb wollte ich lernen, während ich mit Nginx spiele. Ich zögerte jedoch, einen Webserver auf meinem Mac-Computer zu installieren und die Einstellungen zu ändern, und entschied mich daher, diese Gelegenheit zu nutzen, um mit Docker zu beginnen. Während ich die Grundlagen von Docker lerne, zeichne ich auf, was ich beim Erstellen der Lernumgebung für Nginx getan habe.
Laden Sie Docker Desktop von [Docker Official Get Started] 3 herunter und installieren Sie es. Es gibt nichts besonders Schwieriges.
Als ich den heruntergeladenen Docker startete, wurde der Tutorial-Bildschirm gestartet.
Sie können sogar das Tutorial-Repository klonen, ein Docker-Image erstellen und es auf dem Docker-Hub freigeben. Wenn Sie die blaue Taste mit dem Befehl drücken, wird sie auf der Konsole auf der rechten Seite des Bildschirms ausgeführt. Wenn ich darauf drücke, ohne es zu wissen, habe ich begonnen, das Repository in das Home-Verzeichnis zu klonen. Ich muss es später bereinigen.
Der Vorgang dauert weniger als 5 Minuten. Lesen Sie eine kleine Erklärung und drücken Sie die Taste viermal. Über Docker ist jedoch noch wenig bekannt.
Als ich dachte, das Tutorial sei vorbei, war der Container selbst ein Dokument. Der Docker-Tutorial-Container wird ausgeführt und kann unter http: // localhost aufgerufen werden.
Ich werde es lesen, weil es auf verschiedene Arten geschrieben ist
Ich fand es etwas problematisch, weil es eine bestimmte Menge Text gab, aber es enthält ziemlich nützliche Informationen. Es gibt auch Elemente, die absichtlich einen Fehler erzeugen und Ihnen erklären, wie Sie damit umgehen sollen. Außerdem erfahren Sie, wie Sie Probleme lösen, in die Anfänger häufig geraten. Lesen Sie sie daher von Anfang an ohne Probleme.
Ich habe alles richtig gelesen und zwei Tage frei verbracht, aber es hat sich gelohnt, es zu lesen. Wir empfehlen, dass Sie es nicht nur lesen, sondern fortfahren, während Sie den Befehl tatsächlich ausführen.
Nachdem wir die ersten Schritte abgeschlossen haben, können wir loslegen.
Laden Sie das Bild von [nginx] 1 von Docker Hub herunter Am unteren Rand der Nginx-Bildseite befindet sich ein Schnellstartbefehl. Da der Teil / some / content zum sogenannten hthome wird, erstellen Sie ein geeignetes Verzeichnis und ersetzen Sie / some / content durch diesen zu testenden Pfad. Führen Sie den folgenden Befehl mit der Option -p aus und fügen Sie 8080: 80 hinzu, um ihn dem Port des Hostcomputers zuzuordnen.
docker run --name some-nginx -v /some/content:/usr/share/nginx/html:ro -dp 8080:80 nginx
Wenn ich den Browser starte und auf http: // localhost: 8080 zugreife, wird 403 Verboten, aber ich kann bestätigen, dass nginx erfolgreich gestartet werden kann. 403 wird später gelöst.
Es ist schwierig, jedes Mal einen langen Befehl wie den oben genannten einzugeben, und in Zukunft möchte ich eine Verknüpfung mit anderen Containern herstellen, damit ich von Docker-Compose aus starten kann. Erstellen Sie ein PJ-Verzeichnis mit der folgenden Struktur
ProjectRoot/ ┣ docker-compose.yml ┗ static-html-directory/
Schreiben Sie docker-compose.yml und merken Sie sich den Inhalt von Erste Schritte.
version: "1.0"
services:
nginx:
image: nginx
ports:
- "8080:80"
volumes:
- ./static-html-directory:/usr/share/nginx/html
Wenn Sie dann auf Docker-Compose klicken, tritt der folgende Fehler auf
ERROR: Version "1.0" in "./docker-compose.yml" is invalid.
Ich dachte, dass die Version die Version meines Systems ist und setzte sie auf 1.0, aber als ich mich daran erinnerte, dass es sich beim Start um die Schemaversion von Docker-Compose handelte und die Version auf 3.8 umschrieb, wurde der Start erfolgreich abgeschlossen.
Wenn ich den Browser starte und auf http: // localhost: 8080 zugreife, wird er erneut zu 403 Forbidden, und der folgende Fehler wird auf der Konsole angezeigt.
nginx_1 | 2020/08/27 06:59:58 [error] 23#23: *5 directory index of "/usr/share/nginx/html/" is forbidden, client: 172.20.0.1, server: localhost, request: "GET / HTTP/1.1", host: "localhost:8080"
Da / usr / share / nginx der Bereich ist, der an ./static-html-directory gebunden ist, überprüfen Sie die Berechtigungen des Verzeichnisses static-html-directory.
kontam> ls -l
total 16
-rw-r--r-- 1 kontam staff 150 8 27 16:48 docker-compose.yml
drwxr-xr-x 3 kontam staff 96 8 27 15:56 static-html-directory
Alle Benutzer haben Leseberechtigung, daher scheint es kein Problem zu geben. Ich dachte, ich habe die folgende Datei test.html benannt und im Verzeichnis static-html-directory gespeichert.
<html>
<body>
<h1>kontam added this</h1>
</body>
</html>
Wenn ich danach mit einem Browser auf http: //localhost:8080/test.html zugreife, wird der HTML-Code erfolgreich zurückgegeben und "kontam add this" angezeigt. Da sich im Verzeichnis static-html-index keine index.html befand, wird beim Zugriff auf das Stammverzeichnis die Dateiliste angezeigt. Es scheint jedoch 403 zu sein, da die Liste standardmäßig deaktiviert ist.
Ich habe beschlossen, die Einstellung zu ändern, damit diese Dateiliste angezeigt wird, um Nginx zu lernen. Aufgrund von Google lautet die Grundeinstellungsdatei von nginx /etc/nginx/nginx.conf. Öffnen wir die Einstellungsdatei sofort mit vim.
root@d46b1cf2dadf:/etc/nginx# vim /etc/nginx/nginx.conf
bash: vim: command not found
Es gibt kein vim ...? Wenn Sie es nicht haben, haben Sie keine andere Wahl, als es einzulegen. Ich habe herausgefunden, dass es sich um ein Debian-System mit debian_version unter / etc handelt. Installieren Sie es also mit apt-get.
apt-get update
apt-get install vim
Sie können Vim jetzt sicher verwenden.
Informationen zur Einstellung von Autoindex, einer Dateiliste, finden Sie unter [offizielles Nginx-Dokument] 4. Geben Sie im Positionsblock der Einstellungsdatei an, dass nginx die Dateiliste anzeigen soll. Als ich nginx.conf mit vim öffnete, gab es eine solche Beschreibung im http-Block.
http {
...
include /etc/nginx/conf.d/*.conf;
}
Enthält andere conf-Dateien. Ist der Server dort nicht blockiert? Ich werde versuchen, es zu finden. Unter /etc/nginx/conf.d befindet sich eine Einstellungsdatei mit dem Namen default.conf. Öffnen Sie sie daher. Dann wurde, wie ich erwartet hatte, der gesamte Serverblock hier geschrieben, und die Pfadspezifikation von hthome wurde ebenfalls geschrieben. Fügen Sie hier die folgende Zeile hinzu
autoindex on;
Dadurch wird der Nginx-Container neu gestartet
docker-compose down
docker-compose up
Als ich erneut versuchte, auf http: // localhost: 3000 zuzugreifen, wurde die Dateiliste wie erwartet angezeigt.
Man kann sagen, dass die Lernumgebung so eingerichtet wurde, dass Sie die Änderungen sicher überprüfen können, während Sie mit den Nginx-Einstellungen spielen.
Die Lernumgebung für Nginx wurde erstellt. Wenn Sie jedoch nur die Einstellungsdatei im Container neu schreiben, werden alle Einstellungen zurückgegeben, wenn Sie den Container neu erstellen. Es ist praktisch, verfügbar zu sein, wenn Sie mit der Absicht lernen, es zu zerbrechen. In der Praxis, z. B. beim Aufbau eines Systems, kann jedoch die gesamte Arbeit bis zu diesem Zeitpunkt verloren gehen und es ist schwierig, Git zu verwalten. Ich denke, die Konfigurationsdatei sollte auf dem Dateisystem des Host-Computers verwaltbar sein.
Ich habe ein Nginx-Verzeichnis zum Speichern der Nginx-Konfigurationsdateien erstellt und eine Kopie jeder Konfigurationsdatei darin gespeichert. Das PJ-Verzeichnis hat die folgende Struktur.
ProjectRoot/ ┣ docker-compose.yml ┣ static-html-directory/ ┗ test.html ┗ nginx/ ┣ nginx.conf ┗ conf.d/ ┗ default.conf
Wenn Sie dieses Nginx-Verzeichnis als Volume angeben, können die geänderten Einstellungen auch dann beibehalten werden, wenn der Container neu erstellt wird. Fügen Sie den Volumes-Teil von docker-compose.yml hinzu.
version: "3.8"
services:
nginx:
image: nginx
ports:
- "8080:80"
volumes:
- ./static-html-directory:/usr/share/nginx/html
- ./nginx/conf.d:/etc/nginx/conf.d
- ./nginx/nginx.conf:/etc/nginx/nginx.conf
Da es sich um die Conf des Host-Computers handelt, ist dies einfach, da Sie nicht jedes Mal, wenn Sie die Einstellungen ändern, eine Verbindung zum Docker-Container herstellen müssen. Danach können Sie weiter lernen, während Sie die Einstellungen nach Belieben ändern oder aufheben.
--Docker-Anfängern wird empfohlen, zuerst [Docker / Erste Schritte] 1 zu machen
das ist alles. Wenn Sie Fehler oder Verbesserungspunkte haben, kommentieren Sie diese bitte.
Recommended Posts