So stellen Sie die LNMP-Architektur im Docker bereit

So stellen Sie die LNMP-Architektur im Docker bereit

Umweltanforderungen:

IP Hostname
192.168.1.1 Knoten1

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:
  • So erstellen Sie schnell eine LNMP-Umgebung mit Docker (neueste Version)
  • Verwenden Sie Docker, um ein verteiltes lnmp-Image zu erstellen
  • So erstellen Sie eine lnmp-Umgebung im Docker
  • Verwenden Sie Docker, um eine integrierte Service-LNMP-Umgebung zu erstellen
  • Detaillierte Erläuterung zur Verwendung von Docker zum Erstellen einer LNMP-Umgebung
  • Beispiel für die Kompilierung von LNMP im Docker-Container

<<:  CSS erzielt den „Bottom Absorption“-Effekt im Footer

>>:  Node.js gibt je nach Anforderungspfad unterschiedliche Daten zurück.

Artikel empfehlen

DOCTYPE Dokumenttypdeklaration (unbedingt lesenswert für Webseiten-Liebhaber)

DOCTYPE-DEKLARATION: Oben auf jeder Seite, die Sie...

CSS verwendet radialen Farbverlauf zur Implementierung von Coupon-Stilen

In diesem Artikel erfahren Sie, wie Sie mithilfe ...

Detaillierte Erläuterung der Docker Swarm-Dienstorchestrierungsbefehle

1. Einleitung Docker verfügt über ein Orchestrier...

Einführung in die UFW-Firewall unter Linux

Werfen wir einen Blick auf ufw (Uncomplicated Fir...

So ändern Sie die Zeichensatzkodierung in MySQL 5.5/5.6 unter Linux auf UTF8

1. Melden Sie sich bei MySQL an und verwenden Sie...

MySQL Installations-Tutorial unter Windows mit Bildern und Text

Anweisungen zur MySQL-Installation MySQL ist ein ...

So führen Sie eine Spring Boot-Anwendung in Docker aus

In den letzten Tagen habe ich gelernt, wie man Sp...

So zeigen Sie den Status von Remote-Serverdateien in Linux an

Wie unten dargestellt: Der Testbefehl stellt fest...

So erstellen Sie eine Tabelle in MySQL und fügen Feldkommentare hinzu

Code und Beispiele direkt posten #Schreiben Sie K...