Umweltanforderungen:
Projektplanung: Container-Netzwerksegment: 172.16.10.0/24 NGINX: 172.16.10.10 MySQL: 172.16.10.20 PHP: 172.16.10.20 Stammverzeichnis der Website:/www Nginx-Konfigurationsdatei: /conf MySQL-Persistenzverzeichnis: /var/lib/mysql Bereiten Sie die Dienstkonfigurationsdatei im Voraus vor: nginx docker run -itd --name test nginx #Führen Sie den Testcontainer docker cp test:/etc/nginx /conf aus #kopieren Sie die Hauptkonfigurationsdatei ls /conf/ conf.d koi-win nginx.conf win-utf fastcgi_params mime.types scgi_params koi-utf-Module uwsgi_params Docker CP-Test: /usr/share/nginx/html /www #Website-Verzeichnis kopieren ls /www/ 50x.html Hauptseite </strong> MySQL [root@node1 ~]# docker rm -f test prüfen [root@node1 ~]# docker run -itd --name test -e MYSQL_ROOT_PASSWORD=pwd123 mysql:5.7 6b8d73ecd541d454f121302963a85d53131286d3118a968525a24ad2315b047b [root@node1 ~]# docker exec -it test sh # mysql -uroot -ppwd123 -h127.0.0.1 .......... mysql> Datenbanktest erstellen; Abfrage OK, 1 Zeile betroffen (0,00 Sek.) mysql> Datenbanken anzeigen; +--------------------+ | Datenbank | +--------------------+ | Informationsschema | |mysql | | Leistungsschema | |System| | Prüfung | +--------------------+ 5 Zeilen im Satz (0,00 Sek.) mysql> beenden Tschüss # Ausfahrt [root@node1 ~]# docker cp test:/var/lib/mysql /var/lib/mysql </strong> 1. Konfigurieren Sie die virtuelle lnmp-Netzwerkkarte, Netzwerksegment 172.16.10.0/24, Gateway 172.16.10.254 Docker-Netzwerk erstellen -d Bridge --Subnetz 172.16.10.0/24 --Gateway 172.16.10.254 lnmp </strong> 2. Erstellen Sie einen Nginx-Container, um den Zugriff zu testen #Erstellen Sie ein MySQL-Mount-Datenverzeichnis, einen Entwicklungsport und geben Sie die IP an [root@node1 ~]# docker run -itd --name mysql -p 3306:3306 -v /var/lib/mysql:/var/lib/mysql --network lnmp --ip 172.16.10.20 mysql:5.7 448227483a9c3141c2155d2c7b027aec263bfcfe4ebc49371b6817c17565ff81 #Überprüfen Sie den Ausführungsstatus [root@node1 ~]# docker ps CONTAINER ID BILD BEFEHL ERSTELLT STATUS PORTS NAMEN 448227483a9c mysql:5.7 "docker-entrypoint.s..." vor 10 Sekunden. 9 Sekunden aktiv. 0.0.0.0:3306->3306/tcp, 33060/tcp mysql 4d1e99a06972 nginx:latest "/docker-entrypoint.…" vor 3 Minuten Vor 3 Minuten 0.0.0.0:80->80/tcp nginx 6b8d73ecd541 mysql:5.7 "docker-entrypoint.s..." vor 9 Minuten Up 9 Minuten 3306/tcp, 33060/tcp test #Testanmeldung [root@node1 ~]# yum -y install mariadb [root@node1 ~]# mysql -uroot -ppwd123 -h127.0.0.1 Willkommen beim MariaDB-Monitor. Befehle enden mit ; oder \g. Ihre MySQL-Verbindungs-ID ist 2 Serverversion: 5.7.33 MySQL Community Server (GPL) Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab und andere. Geben Sie „help;“ oder „\h“ ein, um Hilfe zu erhalten. Geben Sie „\c“ ein, um die aktuelle Eingabeanweisung zu löschen. MySQL [(keine)]> Tschüß </strong> 3. Führen Sie den MySQL-Container aus [root@node1 www]# docker run -itd --name php-fpm -p 9000:9000 -v /www:/usr/share/nginx/html --network lnmp --ip 172.16.10.30 php:7.2-fpm ae09213d7c8c84299b1522ca474fccf7f26e27973cd02563891c37d51799b766 [root@node1 www]# docker ps CONTAINER ID BILD BEFEHL ERSTELLT STATUS PORTS NAMEN ae09213d7c8c php:7.2-fpm "docker-php-entrypoi…" vor 7 Sekunden Up 6 Sekunden 0.0.0.0:9000->9000/tcp php-fpm 4. Erstellen Sie einen PHP-FPM-Container [root@node1 ~]# vim /conf/conf.d/default.conf </strong> 5. Verbindung zwischen nginx und PHP 5.1. Statische Testschnittstelle für Nginx hinzufügen <strong>[root@node1 ~]# echo Hallo LNMP! > /www/index.html [root@node1 ~]# cat /www/index.html Hallo LNMP! [root@node1 ~]# curl 192.168.1.1 Hallo LNMP! </strong> 5.2. PHP-Testseite hinzufügen [root@node1 ~]# cd /www [root@node1 www]# vim test.php [root@node1 www]# cat test.php <?php phpinfo(); ?> [root@node1 www]# Docker startet nginx neu nginx [root@node1 www]# pwd /www [root@node1 www]# ls 50x.html index.html test.php </strong> Der Zugriff auf die beiden oben genannten Schnittstellen weist darauf hin, dass bei der Verbindung zwischen Nginx und PHP kein Problem vorliegt. Der nächste Schritt ist die Verbindung zwischen PHP und MySQL. Hier verwenden wir ein phpMyAdmin-Datenbankverwaltungstool. 6. Testen Sie die Koordination zwischen PHP-Container und MySQL-Container, Tool phpMyadmin [root@node1 www]# pwd /www [root@node1 www]# entpacken Sie phpMyAdmin-4.9.0.1-all-languages.zip [root@node1 www]# mv phpMyAdmin-4.9.0.1-alle-Sprachen phpMyAdmin [root@node1 www]# rm -rf phpMyAdmin 6.1. Nginx-Konfigurationsdatei aktualisieren [root@node1 www]# cd /conf/conf.d/ [root@node1 conf.d]# vim default.conf Der Inhalt ist wie folgt: Standort /phpmyadmin { root /usr/share/nginx/html; index.php index.html index.htm; } Standort ~ /phpmyadmin/(?<after_ali>(.*)\.(php|php5)?$) { root /usr/share/nginx/html; fastcgi_pass 172.16.10.30:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $Dokumentstammsatz$fastcgi_script_name; fastcgi_params einschließen; } Testzugang: Tatsächlich liegt dies hauptsächlich daran, dass das PHP-Image keine Verbindung zu MySQL unterstützt, sodass wir ein neues schreiben müssen. 7. Lösen Sie das Problem, dass PHP nicht mit MySQL verknüpft ist [root@node1 /]# cd /Datei/ [root@node1-Datei]# ls Docker-Datei [root@node1-Datei]# cat Dockerfile VON php:7.2-fpm Führen Sie apt-get update && apt-get install -y \ aus. libfreetype6-dev \ libjpeg62-turbo-dev \ libpng-dev \ && docker-php-ext-install -j$(nproc) iconv \ && docker-php-ext-configure gd --with-freetypedir=/usr/include/ --with-jpeg-dir=/usr/include/ \ && docker-php-ext-install -j$(nproc) gd \ && docker-php-ext-install mysqli pdo pdo_mysql [root@node1-Datei]# docker build -t php_mysql . #PHP-Container löschen [root@node1 /]# docker rm php-fpm -f php-fpm #Führen Sie den phpmysql-Container aus [root@node1 /]# docker run -itd --name phpfpm -p 9000:9000 -v /www:/usr/share/nginx/html --network lnmp --ip 172.16.10.30 phpmysql:latest c4e943880fd51f947cba64ba0006abd26a923439a3e39a0350ca2561b42b8026 [root@node1 /]# docker ps CONTAINER ID BILD BEFEHL ERSTELLT STATUS PORTS NAMEN c4e943880fd5 phpmysql:latest "docker-php-entrypoi…" vor 14 Sekunden Vor 13 Sekunden aktiv 0.0.0.0:9000->9000/tcp phpfpm 7.1. Die phpmysql-Konfiguration verweist auf die MySQL-Adresse [root@node1 www]# cd /www/phpmyadmin/ [root@node1 phpmyadmin]# mv config.sample.inc.php config.inc.php [root@node1 phpmyadmin]# vim config.inc.php [root@node1 phpmyadmin]# docker restart phpfpm phppfpm 8. Zugangstest 9. Schmiede das Eisen, solange es heiß ist und veröffentliche ein dz-Forum Linkadresse des dz-Forums: http://down.chinaz.com/soft/41403.htm #Hochladen [root@node1 /]# ls bin Discuz_X3.4_SC_UTF8_20210119.zip #Wechseln Sie in das Webverzeichnis /www mv upload/ /www/dz chmod 777 /www/dz<br># Stellen Sie sicher, dass die Datenbank eine dz-Bibliothek hat.<br># Autorisieren Sie einen Administrator der dz-Bibliothek.<br># Beachten Sie, dass die Installations-IP die Datenbank-IP ist, und machen Sie keinen Fehler.<br> Dies ist das Ende dieses Artikels zum Bereitstellen der LNMP-Architektur in Docker. Weitere Informationen zum Bereitstellen der LNMP-Architektur in Docker 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:
|
<<: CSS erzielt den „Bottom Absorption“-Effekt im Footer
>>: Node.js gibt je nach Anforderungspfad unterschiedliche Daten zurück.
DOCTYPE-DEKLARATION: Oben auf jeder Seite, die Sie...
In diesem Artikel erfahren Sie, wie Sie mithilfe ...
Verwenden Sie die Ereignisdelegierung, um die Mes...
1. Einleitung Docker verfügt über ein Orchestrier...
Werfen wir einen Blick auf ufw (Uncomplicated Fir...
1. Melden Sie sich bei MySQL an und verwenden Sie...
Inhaltsverzeichnis Vorwort 1. Binärer Baum 1.1. D...
Anweisungen zur MySQL-Installation MySQL ist ein ...
In den letzten Tagen habe ich gelernt, wie man Sp...
Wie unten dargestellt: Der Testbefehl stellt fest...
Inhaltsverzeichnis Hintergrund 1. Was ist DNS-Pre...
Verwenden Sie den Befehl wget, um das gesamte Unt...
Inhaltsverzeichnis Mehrere bedingte Anweisungen M...
Beim Verknüpfen zweier Tabellen konnte kein Fremd...
Code und Beispiele direkt posten #Schreiben Sie K...