One place for hosting & domains

      So installieren und verwenden Sie Docker auf Ubuntu 18.04


      Eine Vorgängerversion dieses Tutorials wurde von finid verfasst.

      Einführung

      Docker ist eine Applikation, die den Verwaltungsvorgang von Applikationsprozessen in Containern vereinfacht. Mit Containern können Sie Ihre Anwendungen in ressourcenisolierten Prozessen ausführen. Container ähneln virtuellen Maschinen, sind jedoch portabler, ressourcenschonender und stärker vom Host-Betriebssystem abhängig.

      Eine detaillierte Einführung in die verschiedenen Komponenten eines Docker-Containers finden Sie im Docker-Ökosystem: Eine Einführung in die gängigen Komponenten.

      In diesem Tutorial installieren und verwenden Sie die Docker Gemeinschaftsedition (CE) auf Ubuntu 18.04. Sie installieren Docker selbst, arbeiten mit Containern und Bildern und verschieben ein Bild in ein Docker-Repository.

      Voraussetzungen

      Um diesem Tutorial folgen zu können, benötigen Sie Folgendes:

      • Ein Ubuntu 18.04-Server, der gemäß dem Installationshandbuch von Ubuntu 18.04 eingerichtet wurde, einschließlich eines nicht root-basierten sudo-Benutzers und einer Firewall.
      • Ein Benutzerkonto auf Docker Hub, wenn Sie Ihre eigenen Bilder erstellen und auf Docker Hub verschieben möchten, wie in Schritt 7 und 8 dargestellt wird.

      Schritt 1 — Docker installieren

      Das im offiziellen Ubuntu-Repository verfügbare Docker-Installationspaket ist möglicherweise nicht die neueste Version. Um sicherzugehen, dass wir die neueste Version erhalten, installieren wir Docker aus dem offiziellen Docker-Repository. Dazu fügen wir eine neue Paketquelle und den GPG-Schlüssel von Docker hinzu, um sicherzustellen, dass die Downloads gültig sind, woraufhin wir das Paket installieren.

      Aktualisieren Sie zunächst Ihre vorhandene Paketliste:

      Als nächstes installieren Sie ein paar Voraussetzungpakete, mit denen apt Pakete über HTTPS verwenden kann:

      • sudo apt install apt-transport-https ca-certificates curl software-properties-common

      Fügen Sie dann den GPG-Schlüssel für das offizielle Docker-Repository zu Ihrem System hinzu:

      • curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

      Fügen Sie das Docker-Repository zu den APT-Quellen hinzu:

      • sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable"

      Aktualisieren Sie anschließend die Paketdatenbank mit den Docker-Paketen aus dem neu hinzugefügten Repo:

      Stellen Sie sicher, dass Sie die Installation aus dem Docker-Repo statt aus dem standardmäßigen Ubuntu-Repo durchführen:

      • apt-cache policy docker-ce

      Sie werden die folgende Meldung sehen, obwohl die Versionsnummer für Docker unterschiedlich sein kann:

      Output of apt-cache policy docker-ce

      docker-ce:
        Installed: (none)
        Candidate: 18.03.1~ce~3-0~ubuntu
        Version table:
           18.03.1~ce~3-0~ubuntu 500
              500 https://download.docker.com/linux/ubuntu bionic/stable amd64 Packages
      

      Beachten Sie, dass docker-ce nicht installiert ist, aber der Installationskandidat aus dem Docker-Repository für Ubuntu 18.04 (bionic) stammt.

      Installieren Sie schließlich den Docker:

      • sudo apt install docker-ce

      Docker sollte nun installiert, der Daemon sowie der Prozess beim Booten gestartet werden. Überprüfen Sie, ob es funktioniert:

      • sudo systemctl status docker

      Die Meldung sollte wie folgt aussehen und zeigen, dass der Dienst aktiv ist und läuft:

      Output

      ● docker.service - Docker Application Container Engine Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled) Active: active (running) since Thu 2018-07-05 15:08:39 UTC; 2min 55s ago Docs: https://docs.docker.com Main PID: 10096 (dockerd) Tasks: 16 CGroup: /system.slice/docker.service ├─10096 /usr/bin/dockerd -H fd:// └─10113 docker-containerd --config /var/run/docker/containerd/containerd.toml

      Die Installation von Docker gibt Ihnen nun nicht nur den Docker-Dienst (Daemon), sondern auch das docker -Befehlszeilenprogramm oder den Docker-Client. Später in diesem Tutorial untersuchen wir, wie der docker -Befehl angewandt wird.

      Schritt 2 — Ausführen des Docker-Befehls ohne Sudo (optional)

      Standardmäßig kann der docker -Befehl nur für den Root-Benutzer oder von einem Benutzer der Docker-Gruppe ausgeführt werden, die während des Installationsprozesses von Docker automatisch erstellt wird. Wenn Sie versuchen, den docker -Befehl auszuführen, ohne ihn mit sudo voranzustellen oder in der Docker-Gruppe zu sein, erhalten Sie folgende Meldung:

      Output

      docker: Cannot connect to the Docker daemon. Is the docker daemon running on this host?. See 'docker run --help'.

      Wenn die Eingabe von sudo bei jeder Ausführung des docker -Befehls vermieden werden soll, fügen Sie Ihren Benutzernamen zur docker -Gruppe hinzu:

      • sudo usermod -aG docker ${USER}

      Um die neue Gruppenzugehörigkeit anzuwenden, melden Sie sich vom Server ab und wieder an, oder geben Sie Folgendes ein:

      Zum Fortfahren werden Sie aufgefordert, das Passwort Ihres Benutzers einzugeben.

      Bestätigen Sie, dass Ihr Benutzer der Docker-Gruppe hinzugefügt wurde, indem Sie folgendes tippen:

      Output

      sammy sudo docker

      Wenn Sie einen Benutzer zur docker -Gruppe hinzufügen möchten, mit dem Sie nicht angemeldet sind, geben Sie diesen Benutzernamen explizit mit an:

      • sudo usermod -aG docker username

      Der Rest dieses Artikels geht davon aus, dass Sie den docker -Befehl als Benutzer in der Docker-Gruppe ausführen. Wenn Sie sich dagegen entscheiden, fügen Sie die Befehle bitte mit sudo durch.

      Als nächstes erkunden wir den docker -Befehl.

      Schritt 3 — Verwendung des Docker-Befehls

      Die Verwendung des docker besteht darin, ihm eine Reihe von Optionen und Befehlen mit anschließender Argumentation zu übermitteln. Die Syntax hat folgende Form:

      • docker [option] [command] [arguments]

      Zum Anzeigen aller verfügbaren Unterbefehle, geben Sie Folgendes ein:

      Ab Docker 18 enthält die vollständige Liste der verfügbaren Unterbefehle:

      Output

      attach Attach local standard input, output, and error streams to a running container build Build an image from a Dockerfile commit Create a new image from a container's changes cp Copy files/folders between a container and the local filesystem create Create a new container diff Inspect changes to files or directories on a container's filesystem events Get real time events from the server exec Run a command in a running container export Export a container's filesystem as a tar archive history Show the history of an image images List images import Import the contents from a tarball to create a filesystem image info Display system-wide information inspect Return low-level information on Docker objects kill Kill one or more running containers load Load an image from a tar archive or STDIN login Log in to a Docker registry logout Log out from a Docker registry logs Fetch the logs of a container pause Pause all processes within one or more containers port List port mappings or a specific mapping for the container ps List containers pull Pull an image or a repository from a registry push Push an image or a repository to a registry rename Rename a container restart Restart one or more containers rm Remove one or more containers rmi Remove one or more images run Run a command in a new container save Save one or more images to a tar archive (streamed to STDOUT by default) search Search the Docker Hub for images start Start one or more stopped containers stats Display a live stream of container(s) resource usage statistics stop Stop one or more running containers tag Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE top Display the running processes of a container unpause Unpause all processes within one or more containers update Update configuration of one or more containers version Show the Docker version information wait Block until one or more containers stop, then print their exit codes

      Für die Anzeige verfügbarer Optionen eines bestimmten Befehls, geben Sie Folgendes ein:

      • docker docker-subcommand --help

      Um systemweite Informationen über Docker anzuzeigen, verwenden Sie:

      Untersuchen wir einige dieser Befehle. Wir beginnen mit der Bildarbeit.

      Schritt 4 — Arbeiten mit Docker-Bildern

      Docker-Container werden aus Docker-Bildern erstellt. Standardmäßig bezieht Docker diese Bilder aus dem Docker Hub, einem Docker-Verzeichnis, das von Docker, der Firma hinter dem Docker-Projekt, verwaltet wird. Jeder kann seine Docker-Bilder auf dem Docker Hub hosten, so dass die meisten Applikationen und Linux-Distributionen, die Sie benötigen, über Bilder verfügen, die dort bereitgestellt werden.

      Um zu überprüfen, ob Sie auf Bilder vom Docker Hub zugreifen und sie herunterladen können, geben Sie Folgendes ein:

      Die Meldung zeigt an, dass Docker korrekt funktioniert:

      Output

      Unable to find image 'hello-world:latest' locally latest: Pulling from library/hello-world 9bb5a5d4561a: Pull complete Digest: sha256:3e1764d0f546ceac4565547df2ac4907fe46f007ea229fd7ef2718514bcec35d Status: Downloaded newer image for hello-world:latest Hello from Docker! This message shows that your installation appears to be working correctly. ...

      Docker konnte das hello-world -Bild zunächst nicht lokalisieren, so dass es das Bild vom Docker Hub, dem Standard-Repository, heruntergeladen hat. Nach dem Herunterladen des Bildes, erstellte Docker einen Container aus dem Bild und der Applikation innerhalb des ausgeführten Containers, der die Nachricht anzeigt.

      Sie können nach Bildern suchen, die auf dem Docker Hub verfügbar sind, indem Sie den docker -Befehl mit dem Unterbefehl search verwenden. Geben Sie beispielsweise für die Suche nach dem Ubuntu-Bild folgendes ein:

      Das Skript durchsucht den Docker Hub und gibt eine Liste aller Bilder zurück, deren Name mit dem Suchbegriff übereinstimmt. In diesem Fall sieht die Meldung wie folgt aus:

      Output

      NAME DESCRIPTION STARS OFFICIAL AUTOMATED ubuntu Ubuntu is a Debian-based Linux operating sys… 7917 [OK] dorowu/ubuntu-desktop-lxde-vnc Ubuntu with openssh-server and NoVNC 193 [OK] rastasheep/ubuntu-sshd Dockerized SSH service, built on top of offi… 156 [OK] ansible/ubuntu14.04-ansible Ubuntu 14.04 LTS with ansible 93 [OK] ubuntu-upstart Upstart is an event-based replacement for th… 87 [OK] neurodebian NeuroDebian provides neuroscience research s… 50 [OK] ubuntu-debootstrap debootstrap --variant=minbase --components=m… 38 [OK] 1and1internet/ubuntu-16-nginx-php-phpmyadmin-mysql-5 ubuntu-16-nginx-php-phpmyadmin-mysql-5 36 [OK] nuagebec/ubuntu Simple always updated Ubuntu docker images w… 23 [OK] tutum/ubuntu Simple Ubuntu docker images with SSH access 18 i386/ubuntu Ubuntu is a Debian-based Linux operating sys… 13 ppc64le/ubuntu Ubuntu is a Debian-based Linux operating sys… 12 1and1internet/ubuntu-16-apache-php-7.0 ubuntu-16-apache-php-7.0 10 [OK] 1and1internet/ubuntu-16-nginx-php-phpmyadmin-mariadb-10 ubuntu-16-nginx-php-phpmyadmin-mariadb-10 6 [OK] eclipse/ubuntu_jdk8 Ubuntu, JDK8, Maven 3, git, curl, nmap, mc, … 6 [OK] codenvy/ubuntu_jdk8 Ubuntu, JDK8, Maven 3, git, curl, nmap, mc, … 4 [OK] darksheer/ubuntu Base Ubuntu Image -- Updated hourly 4 [OK] 1and1internet/ubuntu-16-apache ubuntu-16-apache 3 [OK] 1and1internet/ubuntu-16-nginx-php-5.6-wordpress-4 ubuntu-16-nginx-php-5.6-wordpress-4 3 [OK] 1and1internet/ubuntu-16-sshd ubuntu-16-sshd 1 [OK] pivotaldata/ubuntu A quick freshening-up of the base Ubuntu doc… 1 1and1internet/ubuntu-16-healthcheck ubuntu-16-healthcheck 0 [OK] pivotaldata/ubuntu-gpdb-dev Ubuntu images for GPDB development 0 smartentry/ubuntu ubuntu with smartentry 0 [OK] ossobv/ubuntu ...

      In der Spalte OFFICIAL kennzeichnet OK ein Bild, das von dem Unternehmen hinter dem Projekt erstellt und unterstützt wird. Sobald Sie das Bild identifiziert haben, das Sie verwenden möchten, können Sie es mit dem Unterbefehl pull auf Ihren Computer herunterladen.

      Führen Sie den folgenden Befehl aus, um das offizielle ubuntu-Bild auf Ihren Computer herunterzuladen:

      Sie sehen folgende Meldung:

      Output

      Using default tag: latest latest: Pulling from library/ubuntu 6b98dfc16071: Pull complete 4001a1209541: Pull complete 6319fc68c576: Pull complete b24603670dc3: Pull complete 97f170c87c6f: Pull complete Digest: sha256:5f4bdc3467537cbbe563e80db2c3ec95d548a9145d64453b06939c4592d67b6d Status: Downloaded newer image for ubuntu:latest

      Nach dem Herunterladen eines Bildes, können Sie mit dem Unterbefehl run einen Container mit dem heruntergeladenen Bild ausführen. Wie Sie im hello-world -Beispiel gesehen haben, wenn ein Bild nicht heruntergeladen wurde und docker mit dem Unterbefehl run gestartet wird, lädt der Docker-Client zuerst das Bild herunter und verwendet es dann als Container.

      Um die Bilder anzuzeigen, die auf Ihren Computer heruntergeladen wurden, geben Sie Folgendes ein:

      Die Meldung sollte wie folgt aussehen:

      Output

      REPOSITORY TAG IMAGE ID CREATED SIZE ubuntu latest 113a43faa138 4 weeks ago 81.2MB hello-world latest e38bc07ac18e 2 months ago 1.85kB

      Wie Sie später in diesem Tutorial sehen werden, können Bilder, die Sie zum Ausführen von Containern verwenden, modifiziert und zum Erzeugen neuer Bilder verwendet werden, die dann in den Docker Hub oder andere Docker-Verzeichnisse hochgeladen werden können (pushed ist der Fachbegriff).

      Schauen wir uns genauer an, wie Container ausgeführt werden können.

      Schritt 5 — Ausführen eines Docker-Containers

      Der hello-world -Container, den Sie im vorigen Schritt ausgeführt haben, ist ein Beispiel für einen Container, der nach dem Senden einer Testnachricht läuft und beendet wird. Container können viel nützlicher sein als das, und sie können auch interaktiv sein. Schließlich sind sie ähnlich wie virtuelle Maschinen, nur ressourcenschonender.

      Betrachten wir als Beispiel einen Container mit dem neuesten Bild von Ubuntu. Die Kombination der Schalter -i und -termöglicht Ihnen den interaktiven Shell-Zugriff auf den Container:

      Die Eingabeaufforderung sollte sich entsprechend der Tatsache ändern, dass Sie nun innerhalb des Containers arbeiten, und sollte diese Form annehmen:

      Output

      root@d9b100f2f636:/#

      Notieren Sie sich die Container-ID in der Eingabeaufforderung. In diesem Beispiel ist es d9b100f2f636. Sie benötigen diese Container-ID später, zum Identifizieren des Containers, wenn Sie ihn entfernen möchten.

      Jetzt können Sie jeden beliebigen Befehl innerhalb des Containers ausführen. Aktualisieren wir zum Beispiel die Paketdatenbank im Container. Sie müssen keinen Befehl mit sudo voranstellen, da Sie innerhalb des Containers als Root-Benutzer arbeiten:

      Installieren Sie dann eine beliebige Applikation darin. Installieren wir Node.js:

      Node.js wird dann im Container aus dem offiziellen Ubuntu-Repository installiert. Wenn die Installation abgeschlossen ist, überprüfen Sie, ob Node.js installiert ist:

      Die Versionsnummer wird in Ihrem Terminal angezeigt:

      Output

      v8.10.0

      Alle Änderungen, die Sie innerhalb des Containers vornehmen, gelten nur für diesen Container.

      Um den Container zu verlassen, geben Sie im Eingabefeld exit ein.

      Als nächstes wollen wir uns die Verwaltung der Container auf unserem System ansehen.

      Schritt 6 — Verwalten von Docker-Containern

      Nachdem Sie Docker eine Weile benutzt haben, haben Sie viele aktive (laufende) und inaktive Container auf Ihrem Computer. Um die active ones anzuzeigen, verwenden Sie:

      Sie werden die folgende Meldung sehen:

      Output

      CONTAINER ID IMAGE COMMAND CREATED

      In diesem Tutorial haben Sie zwei Container gestartet, einen aus dem hello-world -Bild und einen weiteren aus dem ubuntu -Bild. Beide Container sind nicht mehr aktiv, aber noch auf Ihrem System vorhanden.

      Um alle Container — aktive und inaktive — anzuzeigen, starten Sie docker ps mit dem Schalter -a:

      Sie werden folgende Meldung sehen:

      d9b100f2f636        ubuntu              "/bin/bash"         About an hour ago   Exited (0) 8 minutes ago                           sharp_volhard
      01c950718166        hello-world         "/hello"            About an hour ago   Exited (0) About an hour ago                       festive_williams
      
      

      Den zuletzt erstellten Container mit dem Schalter-l anzeigen:

      • CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
      • d9b100f2f636 ubuntu "/bin/bash" About an hour ago Exited (0) 10 minutes ago sharp_volhard

      Um einen gestoppten Container zu starten, verwenden Sie docker start, gefolgt von der Container-ID oder dem Namen des Containers. Starten wir den Ubuntu-basierten Container mit folgender ID, d9b100f2f636:

      • docker start d9b100f2f636

      Der Container wird gestartet, und Sie können mit docker ps den Status anzeigen:

      CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
      d9b100f2f636        ubuntu              "/bin/bash"         About an hour ago   Up 8 seconds                            sharp_volhard
      
      

      Um einen aktiven Container zu stoppen, verwenden Sie docker stop, gefolgt von der Container-ID oder dem Namen. Diesmal verwenden wir den Namen, den Docker dem Container zugewiesen hat, sharp_volhard:

      • docker stop sharp_volhard

      Sobald Sie entschieden haben, dass Sie einen Container nicht mehr benötigen, entfernen Sie ihn mit dem Befehl docker rm wiederum entweder mit der Container-ID oder dem Namen. Verwenden Sie den Befehl docker ps -a um die Container-ID oder den Namen für den Container zu finden, der dem hello-world-Bild zugeordnet ist, und entfernen Sie ihn.

      • docker rm festive_williams

      Sie können einen neuen Container starten und ihm mit dem Schalter --name einen Namen geben. Sie können den Schalter --rm auch verwenden, um einen Container zu erstellen, der sich selbst entfernt, wenn er gestoppt wird. Weitere Informationen zu diesen und anderen Optionen finden Sie unter dem Befehl docker run help.

      Container können in Bilder umgewandelt werden, mit denen Sie neue Container erstellen können. Schauen wir uns an, wie das funktioniert.

      Schritt 7 — Änderungen in einem Container auf ein Docker-Bild übertragen

      Wenn Sie ein Docker-Bild starten, können Sie Dateien erstellen, ändern und löschen, wie Sie es von einer virtuellen Maschine gewohnt sind. Die von Ihnen vorgenommenen Änderungen gelten nur für diesen Container. Sie können es starten und stoppen, aber sobald Sie es mit dem Befehl docker rm zerstören, gehen die Änderungen für immer verloren.

      In diesem Abschnitt erfahren Sie, wie Sie den Zustand eines Containers als neues Docker-Bild speichern können.

      Nachdem Sie Node.js innerhalb des Ubuntu-Containers installiert haben, haben Sie nun einen Container, der unter einem Bild läuft, aber der Container unterscheidet sich von dem Bild, mit dem Sie es erstellt haben. Aber vielleicht möchten Sie diesen Node.js-Container als Grundlage für neue Bilder später wiederverwenden.

      Übertragen Sie dann die Änderungen mit dem folgenden Befehl in eine neue Docker-Bildinstanz.

      • docker commit -m "What you did to the image" -a "Author Name" container_id repository/new_image_name

      Der Schalter -m ist für die Bestätigungsnachricht, um zu erfahren, welche Änderungen Sie vorgenommen haben, während -a zur Autorenangabe verwendet wird. Die container_id ist diejenige, die Sie zuvor im Tutorial notiert haben, als Sie die interaktive Docker-Sitzung gestartet haben. Sofern Sie keine zusätzlichen Repositories auf dem Docker Hub erstellt haben, ist das repository in der Regel Ihr Docker Hub-Benutzername.

      So wäre beispielsweise für den Benutzer sammymit der Container-ID d9b100f2f636 der Befehl:

      • docker commit -m "added Node.js" -a "sammy" d9b100f2f636 sammy/ubuntu-nodejs

      Wenn Sie ein Bild commit (übertragen), wird das neue Bild lokal auf Ihrem Computer gespeichert. Später erfahren Sie in diesem Tutorial, wie Sie ein Bild in ein Docker-Verzeichnis wie Docker Hub verschieben können, damit andere darauf zugreifen können.

      Wenn Sie die Docker-Bilder erneut auflisten, wird das neue Bild angezeigt, ebenso wie das alte, von dem es abgeleitet wurde:

      Sie werden eine ähnliche Meldung sehen:

      Output

      REPOSITORY TAG IMAGE ID CREATED SIZE sammy/ubuntu-nodejs latest 7c1f35226ca6 7 seconds ago 179MB ubuntu latest 113a43faa138 4 weeks ago 81.2MB hello-world latest e38bc07ac18e 2 months ago 1.85kB

      In diesem Beispiel ist ubuntu-nodejs das neue Bild, das aus dem bestehenden ubuntu -Bild von Docker Hub abgeleitet wurde. Die Größendifferenz spiegelt die vorgenommenen Änderungen wider. Und in diesem Beispiel war die Änderung, dass NodeJS installiert wurde. Wenn Sie also das nächste Mal einen Container mit Ubuntu mit vorinstalliertem NodeJS ausführen müssen, können Sie einfach das neue Bild verwenden.

      Sie können auch Bilder aus einer Dockerfile erstellen, mit der Sie die Softwareinstallation in einem neuen Bild automatisieren können. Das liegt jedoch außerhalb des Rahmens dieses Tutorials.

      Teilen wir nun das neue Bild mit anderen, damit sie daraus Container erstellen können.

      Schritt 8 — Verschieben von Docker-Bildern in ein Docker-Repository

      Der nächste logische Schritt nach der Erstellung eines neuen Bildes aus einem bestehenden Bild besteht darin, es mit einigen Ihrer Freunde, der ganzen Welt auf Docker Hub oder einem anderen Docker-Verzeichnis, auf das Sie Zugriff haben, zu teilen. Um ein Bild auf Docker Hub oder einem anderen Docker-Verzeichnis zu übertragen, ist ein Konto erforderlich.

      Dieser Abschnitt zeigt Ihnen, wie Sie ein Docker-Bild auf den Docker Hub übertragen können. Um zu lernen, wie Sie Ihr eigenes privates Docker-Verzeichnis erstellen, gehen Sie auf Wie Sie ein privates Docker-Verzeichnis unter Ubuntu 14.04 einrichten.

      Um Ihr Bild zu optimieren, melden Sie sich zunächst bei Docker Hub an.

      • docker login -u docker-registry-username

      Sie werden aufgefordert, sich mit Ihrem Docker Hub-Passwort zu authentifizieren. Die Authentifizierung sollte erfolgreich sein, wenn Sie das richtige Passwort angegeben haben.

      Hinweis: Wenn sich Ihr Docker-Registrierungsbenutzername von dem lokalen Benutzernamen unterscheidet, den Sie zum Erstellen des Bildes verwendet haben, müssen Sie Ihr Bild mit Ihrem Registrierungsbenutzernamen versehen. Für das im letzten Schritt angegebene Beispiel würden Sie Folgendes eingeben:

      • docker tag sammy/ubuntu-nodejs docker-registry-username/ubuntu-nodejs

      Dann können Sie Ihr eigenes Bild mit dem Befehl Übertragen verwenden:

      • docker push docker-registry-username/docker-image-name

      Um das ubuntu-nodejs-Bild in das sammy Repository zu schieben, wäre der Befehl:

      • docker push sammy/ubuntu-nodejs

      Der Prozess kann einige Zeit in Anspruch nehmen, während er die Bilder hochlädt, aber wenn er abgeschlossen ist, erscheint folgende Meldung:

      Output

      The push refers to a repository [docker.io/sammy/ubuntu-nodejs] e3fbbfb44187: Pushed 5f70bf18a086: Pushed a3b5c80a4eba: Pushed 7f18b442972b: Pushed 3ce512daaf78: Pushed 7aae4540b42d: Pushed ...

      Nachdem Sie ein Bild in ein Verzeichnis verschoben haben, sollte es im Dashboard Ihres Kontos aufgelistet werden, wie es in der Abbildung unten angezeigt wird.

      Neue Docker-Bildliste auf dem Docker Hub

      Wenn ein Übertragungsversuch zu einem solchen Fehler führt, haben Sie sich wahrscheinlich nicht angemeldet:

      Output

      The push refers to a repository [docker.io/sammy/ubuntu-nodejs] e3fbbfb44187: Preparing 5f70bf18a086: Preparing a3b5c80a4eba: Preparing 7f18b442972b: Preparing 3ce512daaf78: Preparing 7aae4540b42d: Waiting unauthorized: authentication required

      Melden Sie sich mit dem docker login an und wiederholen Sie den Übertragungsversuch. Überprüfen Sie dann, ob es auf Ihrer Docker Hub Repository-Seite vorhanden ist.

      Sie können nun mit docker pull sammy/ubuntu-nodejs das Bild auf eine neue Maschine ziehen und damit einen neuen Container ausführen.

      Fazit

      In diesem Tutorial haben Sie Docker installiert, mit Bildern und Containern gearbeitet und ein modifiziertes Bild in den Docker Hub verschoben. Nachdem Sie nun die Grundlagen kennen, erkunden Sie die anderen Docker-Tutorials in der DigitalOcean Community.



      Source link

      So installieren Sie MySQL auf Ubuntu 18.04


      Eine Vorgängerversion dieses Tutorials wurde von Hazel Virdó verfasst

      Einführung

      MySQL ist ein quelloffenes Datenbankmanagementsystem, das häufig als Teil des beliebten LAMP-Stacks (Linux, Apache, MySQL, PHP/Python/Perl) installiert wird. Zur Verwaltung seiner Daten verwendet es eine relationale Datenbank und SQL (Strukturierte Abfragesprache).

      Die Kurzversion der Installation ist einfach: Aktualisieren Sie Ihren Paketindex, installieren Sie das mysql-server-Paket und führen Sie dann das mitgelieferte Sicherheitsskript aus.

      • sudo apt update
      • sudo apt install mysql-server
      • sudo mysql_secure_installation

      Dieses Tutorial erklärt, wie Sie die MySQL-Version 5.7 auf einem Ubuntu 18.04-Server installieren. Wenn Sie jedoch eine bestehende MySQL-Installation auf Version 5.7 aktualisieren möchten, können Sie stattdessen diesen MySQL 5.7-Updateleitfaden lesen.

      Voraussetzungen

      Um diesem Tutorial folgen zu können, benötigen Sie Folgendes:

      • Einen Ubuntu 18.04-Server, der gemäß diesem Installationshandbuch eingerichtet wurde, einschließlich eines Nicht-Root-Benutzers mit sudo-Rechten und einer Firewall.

      Schritt 1 – MySQL installieren

      In Ubuntu 18.04 ist standardmäßig nur die neueste Version von MySQL im APT-Paket-Repository enthalten. Zum Zeitpunkt der Erstellung ist das MySQL 5.7.

      Aktualisieren Sie zur Installation den Paketindex auf Ihrem Server mit apt:

      Installieren Sie dann das Standardpaket:

      • sudo apt install mysql-server

      Dadurch wird MySQL installiert, aber Sie werden nicht aufgefordert, ein Passwort festzulegen oder andere Konfigurationsänderungen vorzunehmen. Da Ihre MySQL-Installation dadurch unsicher wird, werden wir uns zunächst damit befassen.

      Schritt 2 — MySQL konfigurieren

      Bei Neuinstallationen sollten Sie das mitgelieferte Sicherheitsskript ausführen. Dies ändert einige der weniger sicheren Standardoptionen für Dinge wie Remote-Root-Logins und Musterbenutzer. Bei älteren MySQL-Versionen mussten Sie das Datenverzeichnis auch manuell initialisieren, aber das erfolgt jetzt automatisch.

      Führen Sie das Sicherheitsskript aus:

      • sudo mysql_secure_installation

      Dies führt Sie durch eine Reihe von Eingabeaufforderungen, in denen Sie einige Änderungen an den Sicherheitsoptionen Ihrer MySQL-Installation vornehmen können. Die erste Eingabeaufforderung fragt, ob Sie das validierte Passwort-Plugin einrichten möchten, mit dem Sie die Stärke Ihres MySQL-Passworts testen können. Unabhängig von Ihrer Wahl wird die nächste Eingabeaufforderung darin bestehen, ein Passwort für den MySQL-Root-Benutzer festzulegen. Geben Sie ein sicheres Passwort Ihrer Wahl ein und bestätigen Sie es anschließend.

      Von dort aus können Sie Y und dann ENTER drücken, um die Standardwerte für alle folgenden Fragen zu übernehmen. Dadurch werden einige anonyme Benutzer und die Testdatenbank entfernt, Remote-Root-Logins deaktiviert und diese neuen Regeln geladen, so dass MySQL die von Ihnen vorgenommenen Änderungen sofort berücksichtigt.

      Um das MySQL-Datenverzeichnis zu initialisieren, verwenden Sie mysql_install_db für Versionen vor 5.7.6 und mysqld --initialize für 5.7.6 und später. Wenn Sie jedoch MySQL aus der Debian-Distribution installiert haben, wie in Schritt 1 beschrieben, wurde das Datenverzeichnis automatisch initialisiert; Sie müssen nichts tun. Wenn Sie versuchen, den Befehl trotzdem auszuführen, wird folgender Fehler angezeigt:

      Output

      mysqld: Can't create directory '/var/lib/mysql/' (Errcode: 17 - File exists)
      . . .
      2018-04-23T13:48:00.572066Z 0 [ERROR] Aborting
      

      Beachten Sie, dass, obwohl Sie ein Passwort für den MySQL-Root-Benutzer festgelegt haben, dieser nicht konfiguriert ist, um sich bei der Verbindung mit der MySQL-Shell mit einem Passwort zu authentifizieren. Bei Bedarf können Sie diese Einstellung anpassen, indem Sie Schritt 3 folgen.

      Schritt 3 — (optional) Einstellen der Benutzerauthentifizierung und der Berechtigungen

      In Ubuntu-Systemen mit MySQL 5.7 (und neueren Versionen) ist der MySQL-Root-Benutzer so eingestellt, dass er sich standardmäßig mit dem auth_socket-Plugin und nicht mit einem Passwort authentifiziert. Dies ermöglicht in vielen Fällen eine höhere Sicherheit und Benutzerfreundlichkeit, kann aber auch die Sache erschweren, wenn Sie einem externen Programm (z.B. phpMyAdmin) den Zugriff auf den Benutzer ermöglichen müssen.

      Um ein Passwort für die Verbindung zu MySQL als root zu verwenden, müssen Sie die Authentifizierungsmethode von auth_socket auf mysql_native_password umstellen. Öffnen Sie dazu die MySQL-Eingabeaufforderung Ihres Terminals:

      Als nächstes überprüfen Sie mit folgendem Befehl, welche Authentifizierungsmethode jedes Ihrer MySQL-Benutzerkonten verwendet:

      • SELECT user,authentication_string,plugin,host FROM mysql.user;

      Output

      +------------------+-------------------------------------------+-----------------------+-----------+ | user | authentication_string | plugin | host | +------------------+-------------------------------------------+-----------------------+-----------+ | root | | auth_socket | localhost | | mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost | | mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost | | debian-sys-maint | *CC744277A401A7D25BE1CA89AFF17BF607F876FF | mysql_native_password | localhost | +------------------+-------------------------------------------+-----------------------+-----------+ 4 rows in set (0.00 sec)

      In diesem Beispiel sehen Sie, dass der Root-Benutzer sich tatsächlich mit dem Plugin auth_socket authentifiziert. Um das Root-Konto für die Authentifizierung mit einem Passwort zu konfigurieren, führen Sie den folgenden Befehl ALTER USER aus. Achten Sie darauf, password in ein starkes Passwort Ihrer Wahl zu ändern, und beachten Sie, dass dieser Befehl das Root-Passwort ändert, das Sie in Schritt 2 festgelegt haben:

      • ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

      Führen Sie dann FLUSH PRIVILEGES aus, wodurch der Server angewiesen wird, die Berechtigungstabellen neu zu laden und die neuen Änderungen umzusetzen:

      Überprüfen Sie die von jedem Ihrer Benutzer verwendeten Authentifizierungsmethoden erneut, um sicherzustellen, dass root sich nicht mehr mit dem auth_socket-Plugin authentifiziert:

      • SELECT user,authentication_string,plugin,host FROM mysql.user;

      Output

      +------------------+-------------------------------------------+-----------------------+-----------+ | user | authentication_string | plugin | host | +------------------+-------------------------------------------+-----------------------+-----------+ | root | *3636DACC8616D997782ADD0839F92C1571D6D78F | mysql_native_password | localhost | | mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost | | mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost | | debian-sys-maint | *CC744277A401A7D25BE1CA89AFF17BF607F876FF | mysql_native_password | localhost | +------------------+-------------------------------------------+-----------------------+-----------+ 4 rows in set (0.00 sec)

      Sie können in diesem Beispiel sehen, dass sich der MySQL-Benutzer root nun mit einem Passwort authentifiziert. Sobald Sie dies auf Ihrem eigenen Server bestätigt haben, können Sie die MySQL-Shell verlassen:

      Alternativ dazu finden einige vielleicht, dass es besser zu ihrem Workflow passt, sich mit einem bestimmten Benutzer mit MySQL zu verbinden. Um einen solchen Benutzer anzulegen, öffnen Sie die MySQL-Shell erneut:

      Hinweis: Wenn Sie die Passwortauthentifizierung für root aktiviert haben, wie in den vorigen Abschnitten beschrieben, müssen Sie einen anderen Befehl verwenden, um auf die MySQL-Shell zuzugreifen. Im Folgenden wird Ihr MySQL-Client mit regulären Benutzerrechten ausgeführt, und Sie erhalten nur durch Authentifizierung Administratorrechte innerhalb der Datenbank:

      Erstellen Sie von dort aus einen neuen Benutzer und geben ihm ein sicheres Passwort:

      • CREATE USER 'sammy'@'localhost' IDENTIFIED BY 'password';

      Gewähren Sie Ihrem neuen Benutzer dann die entsprechenden Berechtigungen. Beispielsweise können Sie mit diesem Befehl die Benutzerrechte für alle Tabellen innerhalb der Datenbank sowie die Berechtigung zum Hinzufügen, Ändern und Entfernen von Benutzerrechten erteilen:

      • GRANT ALL PRIVILEGES ON *.* TO 'sammy'@'localhost' WITH GRANT OPTION;

      Beachten Sie, dass Sie an dieser Stelle den Befehl FLUSH PRIVILEGES nicht erneut ausführen müssen. Dieser Befehl wird nur benötigt, wenn Sie die Berechtigungstabellen mit Anweisungen wie INSERT, UPDATE oder DELETE ändern. Da Sie einen neuen Benutzer angelegt haben und keinen bestehenden ändern, ist FLUSH PRIVILEGES hier nicht erforderlich.

      Danach verlassen Sie die MySQL-Shell:

      Abschließend testen wir die MySQL-Installation.

      Schritt 4 — MySQL testen

      Unabhängig davon, wie Sie es installiert haben, sollte MySQL automatisch gestartet sein. Um dies zu testen, überprüfen Sie den Status.

      • systemctl status mysql.service

      Sie werden folgende Meldung sehen:

      Output

      ● mysql.service - MySQL Community Server
         Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: en
         Active: active (running) since Wed 2018-04-23 21:21:25 UTC; 30min ago
       Main PID: 3754 (mysqld)
          Tasks: 28
         Memory: 142.3M
            CPU: 1.994s
         CGroup: /system.slice/mysql.service
                 └─3754 /usr/sbin/mysqld
      

      Wenn MySQL nicht ausgeführt wird, können Sie es mit sudo systemctl start mysql starten.

      Für eine zusätzliche Überprüfung können Sie versuchen, sich mit der Datenbank zu verbinden, indem Sie das Tool mysqladmin verwenden, ein Client, mit dem Sie administrative Befehle ausführen können. Dieser Befehl besagt beispielsweise, sich als root (-u root) mit MySQL zu verbinden, ein Passwort (-p) einzugeben und die Version zurückzugeben.

      • sudo mysqladmin -p -u root version

      Sie sollten folgende Meldung sehen:

      Output

      mysqladmin  Ver 8.42 Distrib 5.7.21, for Linux on x86_64
      Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
      
      Oracle is a registered trademark of Oracle Corporation and/or its
      affiliates. Other names may be trademarks of their respective
      owners.
      
      Server version      5.7.21-1ubuntu1
      Protocol version    10
      Connection      Localhost via UNIX socket
      UNIX socket     /var/run/mysqld/mysqld.sock
      Uptime:         30 min 54 sec
      
      Threads: 1  Questions: 12  Slow queries: 0  Opens: 115  Flush tables: 1  Open tables: 34  Queries per second avg: 0.006
      

      Das bedeutet, dass MySQL ausgeführt wird.

      Fazit

      Sie haben nun einen MySQL-Basissetup auf Ihrem Server installiert. Hier sind einige Beispiele für die nächsten Schritte, die Sie unternehmen können:



      Source link

      So installieren Sie Nginx auf Ubuntu 18.04


      Einführung

      Nginx ist einer der beliebtesten Webserver der Welt und verantwortlich für das Hosting einiger der größten und verkehrsreichsten Webseiten im Internet. Er ist in den meisten Fällen ressourcenfreundlicher als Apache und kann als Webserver oder Umkehrproxy eingesetzt werden.

      In diesem Leitfaden wird erläutert, wie Sie Nginx auf Ihrem Ubuntu 18.04-Server installieren.

      Voraussetzungen

      Bevor Sie mit diesem Leitfaden beginnen, sollten Sie einen regulären, nicht root-fähigen Benutzer mit sudo-Rechten auf Ihrem Server konfigurieren. Sie können lernen, wie Sie ein reguläres Benutzerkonto konfigurieren, indem Sie unserem Installationshandbuch für Ubuntu 18.04 folgen.

      Wenn Sie über ein Konto verfügen, melden Sie sich als Nicht-Root-Benutzer an, um zu beginnen.

      Schritt 1 – Nginx installieren

      Da Nginx in den Standard-Repositories von Ubuntu verfügbar ist, kann es über das apt -Paketsystem aus diesen Repositories installiert werden.

      Dies ist unsere erste Interaktion mit dem apt -Paketsystem in dieser Sitzung, daher werden wir unseren lokalen Paketindex aktualisieren, so dass wir Zugriff auf die neuesten Paketlisten haben. Anschließend können wir nginx installieren:

      • sudo apt update
      • sudo apt install nginx

      Nachdem Sie die Vorgehensweise akzeptiert haben, installiert apt Nginx und alle erforderlichen Anhänge auf Ihrem Server.

      Schritt 2 – Firewall anpassen

      Um Nginx zu testen, muss die Firewall-Software angepasst werden, um den Zugriff auf den Dienst zu ermöglichen. Nginx registriert sich bei der Installation als Dienst mit ufw, wodurch ein unkomplizierter Zugriff auf Nginx möglich ist.

      Die Anwendungskonfigurationen auflisten, mit denen ufw vertraut ist, indem Sie eingeben:

      Sie sollten eine Auflistung der Anwendungsprofile erhalten:

      Output

      Available applications: Nginx Full Nginx HTTP Nginx HTTPS OpenSSH

      Wie Sie sehen können, gibt es für Nginx drei Profile:

      • Nginx Vollständig: Dieses Profil öffnet sowohl Port 80 (normaler, unverschlüsselter Webverkehr) als auch Port 443 (TLS/SSL-verschlüsselter Datenverkehr)
      • Nginx HTTP: Dieses Profil öffnet nur Port 80 (normaler, unverschlüsselter Webverkehr)
      • Nginx HTTPS: Dieses Profil öffnet nur Port 443 (TLS/SSL-verschlüsselter Datenverkehr)

      Es wird empfohlen, das restriktivste Profil zu aktivieren, das den von Ihnen konfigurierten Datenverkehr noch zulässt. Da wir in diesem Handbuch noch kein SSL für unseren Server konfiguriert haben, müssen wir nur den Datenverkehr auf Port 80 zulassen.

      Aktivieren Sie dies durch folgende Eingabe:

      • sudo ufw allow 'Nginx HTTP'

      Um die Änderung zu überprüfen, geben Sie Folgendes ein:

      Sie sollten sehen, dass der HTTP-Verkehr in der angezeigten Ausgabe erlaubt ist:

      Output

      Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere Nginx HTTP ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) Nginx HTTP (v6) ALLOW Anywhere (v6)

      Schritt 3 – Überprüfen Ihres Webservers

      Am Ende des Installationsprozesses startet Ubuntu 18.04 Nginx. Der Webserver sollte bereits in Betrieb sein.

      Mit dem systemd init-System können wir überprüfen, ob der Dienst ausgeführt wird, indem wir Folgendes eingeben:

      Output

      ● nginx.service - A high performance web server and a reverse proxy server Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled) Active: active (running) since Fri 2018-04-20 16:08:19 UTC; 3 days ago Docs: man:nginx(8) Main PID: 2369 (nginx) Tasks: 2 (limit: 1153) CGroup: /system.slice/nginx.service ├─2369 nginx: master process /usr/sbin/nginx -g daemon on; master_process on; └─2380 nginx: worker process

      Wie Sie oben sehen können, scheint der Dienst erfolgreich gestartet zu sein. Der beste Weg, dies zu testen, ist jedoch, eine Seite bei Nginx anzufordern.

      Durch die Navigation zur IP-Adresse Ihres Servers können Sie auf die standardmäßige Nginx-Landseite zugreifen, um zu bestätigen, dass die Software ordnungsgemäß ausgeführt wird. Wenn Sie die IP-Adresse Ihres Servers nicht kennen, können Sie sie auf verschiedene Arten erhalten.

      Versuchen Sie, dies an der Eingabeaufforderung Ihres Servers einzugeben:

      • ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's//.*$//'

      Sie erhalten ein paar Zeilen zurück. Sie können diese jeweils in Ihrem Webbrowser ausprobieren, um zu sehen, ob sie funktionieren.

      Eine Alternative ist die Eingabe, die Ihnen Ihre öffentliche IP-Adresse aus der Sicht eines anderen Standorts im Internet geben sollte:

      Wenn Sie die IP-Adresse Ihres Servers haben, geben Sie diese in die Adressleiste Ihres Browsers ein:

      http://your_server_ip
      

      Sie sollten die standardmäßige Anmeldeseite von Nginx sehen:

       Nginx-Standardseite

      Diese Seite ist in Nginx enthalten, um Ihnen zu zeigen, dass der Server ordnungsgemäß arbeitet.

      Schritt 4 – Verwaltung des Nginx-Prozesses

      Nun, da Sie Ihren Webserver in Betrieb haben, lassen Sie uns einige grundlegende Verwaltungsbefehle durchgehen.

      Um Ihren Webserver zu stoppen, geben Sie Folgendes ein:

      • sudo systemctl stop nginx

      Um den Webserver zu starten, wenn er gestoppt wird, geben Sie Folgendes ein:

      • sudo systemctl start nginx

      Um den Dienst zu stoppen und dann erneut zu starten, geben Sie Folgendes ein:

      • sudo systemctl restart nginx

      Wenn Sie lediglich Konfigurationsänderungen vornehmen, kann Nginx oft neu laden, ohne die Verbindungen zu verlieren. Geben Sie dazu Folgendes ein:

      • sudo systemctl reload nginx

      Standardmäßig ist Nginx so konfiguriert, dass es automatisch startet, wenn der Server bootet. Wenn Sie dies nicht wünschen, können Sie dieses Verhalten durch folgende Eingabe deaktivieren:

      • sudo systemctl disable nginx

      Um den Dienst beim Booten wieder zu aktivieren, können Sie Folgendes eingeben:

      • sudo systemctl enable nginx

      Schritt 5 – Einrichten von Serverblöcken (empfohlen)

      Bei Verwendung des Nginx-Webservers könnenServerblöcke (ähnlich wie virtuelle Hosts im Apache) verwendet werden, um Konfigurationsdetails zu kapseln und mehr als eine Domäne von einem einzigen Server aus zu hosten. Wir werden eine Domäne namens example.comeinrichten, aber Sie sollten diese durch Ihren eigenen ** Domänennamen ersetzen**. Weitere Informationen zum Einrichten eines Domänennamens mit DigitalOcean finden Sie in unserer Einführung in DigitalOcean DNS.

      Auf Ubuntu 18.04 hat Nginx einen Serverblock aktiviert, der standardmäßig so konfiguriert ist, dass er Dokumente aus einem Verzeichnis unter /var/wwww/html bedient. Dies funktioniert zwar gut für einen einzelnen Standort, kann aber bei mehreren Standorten unpraktisch werden. Anstatt /var/www/html zu ändern, erstellen wir eine Verzeichnisstruktur in /var/www für unsere example.com-Seite, indem wir /var/www/html als Standardverzeichnis beibehalten, das zu bedienen ist, wenn eine Kundenanfrage mit keiner anderen Seite übereinstimmt.

      Erstellen Sie das Verzeichnis example.com wie folgt und verwenden Sie -p um alle notwendigen übergeordneten Verzeichnisse zu erstellen:

      • sudo mkdir -p /var/www/example.com/html

      Als nächstes weisen Sie dem Verzeichnis mit der Umgebungsvariablen $USER das Besitzerrecht zu:

      • sudo chown -R $USER:$USER /var/www/example.com/html

      Die Berechtigungen Ihrer Web-Roots sollten korrekt sein, wenn Sie Ihren umask -Wert nicht geändert haben, aber Sie können dies überprüfen, indem Sie Folgendes eingeben:

      • sudo chmod -R 755 /var/www/example.com

      Als nächstes erstellen Sie ein Muster einer index.html -Seite mit nano oder Ihrem bevorzugten Editor:

      • nano /var/www/example.com/html/index.html

      Fügen Sie darin folgende Beispiel-HTML hinzu:

      /var/www/example.com/html/index.html

      <html>
          <head>
              <title>Welcome to Example.com!</title>
          </head>
          <body>
              <h1>Success!  The example.com server block is working!</h1>
          </body>
      </html>
      

      Speichern und schließen Sie die Datei nach Abschluss des Vorgangs.

      Damit Nginx diese Inhalte bereitstellen kann, ist es notwendig, einen Serverblock mit den richtigen Anweisungen zu erstellen. Anstatt die Standardkonfigurationsdatei direkt zu ändern, machen wir eine neue unter /etc/nginx/sites-available/example.com:

      • sudo nano /etc/nginx/sites-available/example.com

      Fügen Sie den folgenden Konfigurationsblock ein, der dem Standard ähnlich ist, aber für unser neues Verzeichnis und unseren neuen Domänennamen aktualisiert wurde:

      /etc/nginx/sites-available/example.com

      server {
              listen 80;
              listen [::]:80;
      
              root /var/www/example.com/html;
              index index.html index.htm index.nginx-debian.html;
      
              server_name example.com www.example.com;
      
              location / {
                      try_files $uri $uri/ =404;
              }
      }
      

      Beachten Sie, dass wir die Root-Konfiguration in unserem neuen Verzeichnis und den server_name in unserem Domänennamen aktualisiert haben.

      Anschließend aktivieren wir die Datei, indem wir einen Link zu dem sites-enabled-Verzeichnis erstellen, aus dem Nginx beim Start liest:

      • sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/

      Zwei Serverblöcke sind nun aktiviert und konfiguriert, um auf Anfragen basierend auf ihren listen- und server_name-Anweisungen zu reagieren (Sie können hier mehr darüber erfahren, wie Nginx diese Anweisungen verarbeitet):

      • example.com: Beantwortet Anfragen für
        example.comundwww.example.com`.
      • default: Beantwortet alle Anfragen auf Port 80, die nicht mit den anderen beiden Blöcken übereinstimmen.

      Um ein mögliches Hash-Bucket-Speicherproblem zu vermeiden, das durch das Hinzufügen zusätzlicher Servernamen entstehen kann, ist es notwendig, einen Einzelwert in der Datei /etc/nginx/nginx.conf anzupassen. Die Datei öffnen:

      • sudo nano /etc/nginx/nginx.conf

      Finden Sie den Befehl server_names_hash_bucket_size und entfernen Sie das Symbol #, um die Zeile zu entkommentieren:

      /etc/nginx/nginx.conf

      ...
      http {
          ...
          server_names_hash_bucket_size 64;
          ...
      }
      ...
      

      Prüfen Sie anschließend, ob in Ihren Nginx-Dateien keine Syntaxfehler vorhanden sind:

      Speichern und schließen Sie die Datei nach Abschluss des Vorgangs.

      Wenn es keine Probleme gibt, starten Sie Nginx neu, um Ihre Änderungen zu aktivieren:

      • sudo systemctl restart nginx

      Nginx sollte nun Ihren Domänennamen bereitstellen. Dies können Sie testen, indem Sie zu http://example.com navigieren, wo Sie so etwas sehen sollten:

      Nginx erster Serverblock

      Schritt 6 – Vertrautmachen mit wichtigen Nginx-Dateien und -Verzeichnissen

      Da Sie nun wissen, wie Sie den Nginx-Dienst selbst verwalten, sollten Sie sich einige Minuten Zeit nehmen, um sich mit einigen wichtigen Verzeichnissen und Dateien vertraut zu machen.

      Inhalt

      • /var/www/html: Der eigentliche Webinhalt, der standardmäßig nur aus der Standard-Nginx-Seite besteht, die Sie zuvor gesehen haben, wird aus dem Verzeichnis /var/wwww/html bereitgestellt. Dies kann durch Anpassen der Nginx-Konfigurationsdateien geändert werden.

      Serverkonfiguration

      • /etc/nginx: Das Nginx-Konfigurationsverzeichnis. Alle Nginx-Konfigurationsdateien befinden sich hier.
      • /etc/nginx/nginx.conf: Die Hauptkonfigurationsdatei von Nginx. Dies kann modifiziert werden, um Änderungen an der globalen Nginx-Konfiguration vorzunehmen.
      • /etc/nginx/sites-available/: Das Verzeichnis, in dem die Serverblöcke pro Standort gespeichert werden können. Nginx verwendet die Konfigurationsdateien in diesem Verzeichnis nur dann, wenn sie mit dem sites-enabled-Verzeichnis verknüpft sind. In der Regel wird die gesamte Konfiguration des Serverblocks in diesem Verzeichnis durchgeführt und dann durch Verknüpfung mit dem anderen Verzeichnis aktiviert.
      • /etc/nginx/sites-enabled/: Das Verzeichnis, in dem die aktivierten Serverblöcke pro Standort gespeichert sind. In der Regel werden diese durch die Verknüpfung mit Konfigurationsdateien erstellt, die sich in dem Verzeichnis sites-available befinden.
      • /etc/nginx/snippets: Dieses Verzeichnis enthält Konfigurationsfragmente, die an anderer Stelle in der Nginx-Konfiguration eingefügt werden können. Potenziell wiederholbare Konfigurationssegmente sind gute Kandidaten für das Repaktorieren in Einzelteile.

      Serverprotokolle

      • /var/log/nginx/access.log: Jede Anfrage an Ihren Webserver wird in dieser Protokolldatei aufgezeichnet, sofern Nginx nicht anders konfiguriert ist.
      • /var/log/nginx/error.log: Alle Nginx-Fehler werden in diesem Protokoll festgehalten.

      Fazit

      Da Ihr Webserver nun installiert ist, haben Sie viele Optionen für die Art der zu erstellenden Inhalte und die Technologien, die Sie verwenden möchten, um ein reichhaltigeres Erlebnis zu schaffen.

      Wenn Sie einen vollständigeren Applikationsstapel erstellen möchten, lesen Sie diesen Artikel, wie Sie einen LEMP-Stapel unter Ubuntu 18.04 konfigurieren können.



      Source link