Einführung in DNMP DNMP (Docker + Nginx + MySQL + PHP7/5 + Redis) ist ein voll funktionsfähiges LNMP-Ein-Klick-Installationsprogramm . Es unterstützt umfangreiche Dienste, leistungsstarke Funktionen, ist einfach zu verwenden und mit mehreren Plattformen kompatibel. Es handelt sich um einen vollständigen Satz von PHP-Umgebungen für Docker-Entwicklungs- und Produktionsumgebungen, die für mehrere Terminals geeignet sind. Funktionen des DNMP-Projekts:
1. Beheben Sie das Problem, dass keine Verbindung zu MySQL hergestellt werden kann. 2. Konfigurieren Sie den virtuellen NGINX-Domänennamen. 3. Installieren Sie PHP-Erweiterungen.
MySQL-Verbindungsproblem beheben Da dnmp während der Installation den lokalen Port 3305 dem Port 3306 des MySQL-Containers zuordnet, müssen wir beim Verbinden eine Verbindung zu Port 3305 herstellen. Unter dem www-Verzeichnis des Beispielcodes befindet sich ein localhost-Verzeichnis. Wir finden einen Codeabschnitt zum Testen von MySQL wie folgt: // MySQL-Dienstfunktion getMysqlVersion() erkennen { wenn (Erweiterung geladen ('PDO_MYSQL')) { versuchen { $dbh = neues PDO('mysql:host=192.168.2.103;dbname=mysql', 'root', '123456'); $sth = $dbh->query('VERSION() als Version auswählen'); $info = $sth->fetch(); } Fang (PDOException $e) { gibt $e->getMessage() zurück; } return $info['version']; } anders { return 'PDO_MYSQL-Erweiterung ist nicht installiert ×'; } } Wir müssen den Code lediglich wie folgt ändern: // MySQL-Dienstfunktion getMysqlVersion() erkennen { wenn (Erweiterung geladen ('PDO_MYSQL')) { versuchen { $dbh = neues PDO('mysql:host=192.168.2.103;port=3305;dbname=mysql', 'root', '123456'); $sth = $dbh->query('VERSION() als Version auswählen'); $info = $sth->fetch(); } Fang (PDOException $e) { gibt $e->getMessage() zurück; } return $info['version']; } anders { returniere 'PDO_MYSQL-Erweiterung ist nicht installiert ×'; } }
Konfigurieren Sie den NGINX-Domänennamen Vor der Konfiguration müssen wir einige Dinge klären. Der Speicherort unseres Quellcodeverzeichnisses, der NGINX-Konfigurationsdatei und der NGINX-Protokolldatei. 1. Wir können dem Screenshot entnehmen, dass sich im Verzeichnis conf.d zwei Konfigurationsdateien befinden. Diese beiden sind die Domänennamendateien, die ich vorab konfiguriert habe. Diese Datei wird über den NGINX-Container der lokalen Festplatte zugeordnet. Daher kann es über den Hostcomputer angezeigt werden. 2. Die Protokolldatei enthält die Fehler-, Zugriffs- und anderen zugehörigen Protokolldateien von NGINX, die auch dem Host im NGINX-Container zugeordnet sind. 3. Das „www“ hier ist der Pfad zum Programmquellcode. Alle unsere Programmquellcodes können hier abgelegt werden.
Schritt 1: Gehen Sie zu unserem WWW-Verzeichnis und installieren Sie eine Anwendung. Es wird empfohlen, für die Installation Compser zu verwenden. Informationen zur Verwendung von Composer finden Sie auch in der Dokumentation zur einfachen Konfiguration. ert@ertiaodeMac-mini ~/develop/env/dnmp/www Master ● Komponist Projekt erstellen topthink/think=5.1.35 tp5 Erstellen eines „topthink/think=5.1.35“-Projekts unter „./tp5“ Installation von topthink/think (v5.1.35) - Installation von topthink/think (v5.1.35): Laden aus dem Cache Projekt in /app/tp5 erstellt Laden von Composer-Repositorys mit Paketinformationen Aktualisieren von Abhängigkeiten (einschließlich require-dev) Paketoperationen: 2 Installationen, 0 Updates, 0 Entfernungen - Topthink/think-installer installieren (v2.0.0): Aus dem Cache laden - Topthink/Framework installieren (v5.1.39): Laden aus dem Cache Sperrdatei schreiben Generieren von Autoload-Dateien ert@ertiaodeMac-mini ~/develop/env/dnmp/www master ● ll gesamt 0 drwxr-xr-x 3 ert Mitarbeiter 96B 9 6 22:02 localhost drwxr-xr-x 19 ert Mitarbeiter 608B 9 8 22:26 tp5 Auf diese Weise wird lokal ein tp5-Framework eingerichtet. Schritt 2: Rufen Sie den NGINX-Container auf, zeigen Sie die Container-ID des Docker-Containers über Docker PS an und rufen Sie den Container mit dem Befehl Docker Exec auf. ert@ertiaodeMac-mini ~/develop/env/dnmp/www master ● docker ps CONTAINER ID BILD BEFEHL ERSTELLT STATUS PORTS NAMEN 0f5f9cd08aa2 dnmp_php "docker-php-entrypoi…" vor 27 Stunden Up Ungefähr eine Stunde 9000/tcp, 9501/tcp php 8bc44fc8c578 dnmp_nginx "/docker-entrypoint.…" vor 27 Stunden Aktiv seit 26 Stunden 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp nginx f02ad53bf14d mysql:5.7.28 "docker-entrypoint.s..." vor 27 Stunden Aktiv seit 26 Stunden 33060/tcp, 0.0.0.0:3305->3306/tcp mysql5 ert@ertiaodeMac-mini ~/develop/env/dnmp/www master ● docker exec -it 8bc44fc8c578 /bin/sh /www#ls lokaler Host tp5 Geben Sie den Pfad der NGINX-Konfigurationsdatei ein / # cd /etc/nginx/ /etc/nginx # ls -la insgesamt 60 drwxr-xr-x 1 root root 4096 8. Sep. 20:23 . drwxr-xr-x 1 root root 4096 7. Sep. 19:34 .. drwxr-xr-x 5 root root 160 8. September 20:05 conf.d -rw-r--r-- 1 root root 429 6. September 22:02 fastcgi-php.conf -rw-r--r-- 1 root root 1077 8. Juli 00:14 fastcgi.conf -rw-r--r-- 1 root root 1062 6. September 22:02 fastcgi_params -rw-r--r-- 1 root root 2837 8. Juli 00:14 koi-utf -rw-r--r-- 1 Wurzel Wurzel 2223 Jul 8 00:14 koi-win -rw-r--r-- 1 root root 5231 8. Juli 00:14 mime.types lrwxrwxrwx 1 root root 22. Juli 11 04:27 Module -> /usr/lib/nginx/modules -rw-r--r-- 1 root root 760 6. September 22:02 nginx.conf drwxr-xr-x 2 root root 4096 8. Sep 20:23 neu schreiben -rw-r--r-- 1 root root 636 8. Juli 00:14 scgi_params -rw-r--r-- 1 root root 664 8. Juli 00:14 uwsgi_params -rw-r--r-- 1 root root 3610 8. Juli 00:14 win-utf
Erstellen Sie eine Domänenkonfigurationsdatei. /etc/nginx # cd conf.d/ && touch tp5.conf /etc/nginx/conf.d # ls -la insgesamt 16 drwxr-xr-x 5 root root 160 8. Sep. 20:05 . drwxr-xr-x 1 root root 4096 8. Sep. 20:23 .. -rw-r--r-- 1 root root 48 6. September 22:02 .gitignore -rw-r--r-- 1 root root 2254 6. September 22:02 localhost.conf -rw-r--r-- 1 root root 505 8. September 20:29 tp5.conf Konfigurieren Sie die Datei tp5.conf. Kopieren Sie den folgenden Inhalt: Server { hören Sie 80; Servername tp5.com; Wurzel /www/tp5/public; Indexierung index.php; #NGINX-Protokolldatei. Wenn es sich um einen anderen Domänennamen handelt, ersetzen Sie einfach den Dateinamen durch nginx.tp5.com.xx.log. Zugriffsprotokoll /var/log/nginx/nginx.tp5.com.access.log; Fehlerprotokoll /var/log/nginx/nginx.tp5.com.error.log; Die URL-Rewrite-Datei von #Thinkphp5 vermeidet wiederholtes Schreiben und legt sie in einer separaten Datei ab. Andere Thinkphp-Projekte können in Zukunft direkt importiert werden. rewrite/thinkphp.conf einschließen; Standort ~ \.php$ { # Hier ist php der Name des PHP-Containers, der in die tatsächliche IP geändert werden kann. Dies wird nicht empfohlen, da sich die IP ändern wird. fastcgi_pass php:9000; fastcgi-php.conf einschließen; fastcgi_param SCRIPT_FILENAME $Dokumentstammsatz$fastcgi_script_name; fastcgi_params einschließen; } } Testen Sie die Domänennamenkonfiguration und starten Sie den NGINX-Dienst neu. /etc/nginx/conf.d # nginx -t und nginx -s neu laden nginx: die Syntax der Konfigurationsdatei /etc/nginx/nginx.conf ist in Ordnung nginx: Test der Konfigurationsdatei /etc/nginx/nginx.conf ist erfolgreich /etc/nginx/conf.d # Fügen Sie den Domänennamen zur Hostdatei des Hostcomputers hinzu. Zugangstest Installation der PHP-Erweiterung Beim Erstellen einer Docker-Umgebung wird die Redis-Erweiterung von PHP nicht standardmäßig installiert. Hier nehmen wir die Redis-Erweiterung als Beispiel. Da einige Erweiterungen integriert sind (Informationen zu bestimmten Erweiterungen finden Sie in der oben genannten Verwendungsdokumentation), können Sie diese direkt mit dem Befehl installieren. PHP-Erweiterungen installieren Redis Testen von Erweiterungen /www # php --ri redis Redis Redis-Unterstützung => aktiviert Redis-Version => 5.3.1 ...... Zusammenfassen Dies ist das Ende dieses Artikels über die Verwendung von Docker zum Erstellen einer vollständigen Entwicklungsumgebung. Weitere Informationen zur Verwendung von Docker zum Erstellen einer vollständigen Entwicklungsumgebung finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen! Das könnte Sie auch interessieren:
|
<<: Dieser Artikel hilft Ihnen, den Lebenszyklus in Vue zu verstehen
>>: Eine kurze Analyse von MySQL-Sperren und -Transaktionen
Inhaltsverzeichnis veranschaulichen 1. Aktivieren...
Inhaltsverzeichnis Transaktionsisolationsebene Be...
Vorwort Ein Klassenkamerad untersucht die Streami...
Docker installieren Sie müssen Docker installiere...
Zusammenfassung: HBase verfügt über zahlreiche Be...
Heute habe ich diese Eingabeaufforderung gefunden...
Ich glaube, dass jeder MySQL aus verschiedenen Gr...
Vorwort In der Praxis kann es zu folgendem Proble...
Hier sind einige gängige MySQL-Befehle für Sie: -...
Vorwort Semikolons sind in JavaScript optional un...
HTML-Tags haben spezielle Tags zur Handhabung des ...
Vorwort Wenn CSS die Grundfertigkeit der Front-En...
Inhaltsverzeichnis JavaScript-Prototypenkette Obj...
Inhaltsverzeichnis Überblick 1. So animieren Sie ...
Algorithmus zum Ersetzen von Seiten: Das Wesentli...