Detailliertes Tutorial zur Installation des PHP-FPM-Dienstes/der PHP-FPM-Erweiterung/-Konfiguration in Docker

Detailliertes Tutorial zur Installation des PHP-FPM-Dienstes/der PHP-FPM-Erweiterung/-Konfiguration in Docker

Als ich php56 mit brew auf mac installierte, stieß ich auf verschiedene Fehler, die selbst google nicht herausfinden konnte, da openssl Version 1.1 Das war zu viel Aufwand. Jetzt verwende ich docker , um einen php56-fpm Servicecontainer zu erstellen und nginx direkt auf dem Hostcomputer zu installieren.

PHP DockerHub-Startseite

Erstellen eines Containers

# Erstellen Sie einen Container docker run -d \
--name php56-fpm \
-p 9056:9000 \
-v /home/wwwroot:/var/www/html
--privileged=true
php:5.6-fpm

Beachten:

/var/www/html ist das Arbeitsverzeichnis php docker -Image.

-v /home/wwwroot:/var/www/html wird verwendet, um das Site-Verzeichnis des Hosts im Container bereitzustellen. Beispielsweise ist /home/wwwroot/siteA im Container als /var/www/html/siteA zugänglich.

Wenn nignx php Anfrage weiterleitet, leitet es den ausgeführten Skriptnamen SCRIPT_NAME und den Skriptdateinamen SCRIPT_FILENAME an fpm weiter, und anschließend liest fpm das Skript zur Ausführung.

Bei Verwendung des fpm Containers müssen Sie darauf achten, ob der von nginx weitergeleitete SCRIPT_FILENAME ein gültiger Site-Pfad im fpm Container ist. Wenn root von nginx nicht direkt der Site- root des fpm Containers zugeordnet werden kann, müssen wir sie im php location als Site root fpm -Containers neu definieren. Auf diese Weise kann fpm das Skript korrekt lesen.

Das bedeutet, dass /home/wwwroot/siteA/public/index.php auf dem Hostcomputer in /var/www/html/siteA/public/index.php konvertiert und an fpm Container gesendet werden muss. Andernfalls wird der Fehler „ File not found gemeldet.

Achten Sie daher bei der Konfiguration nginx server auf die folgende Volume-Pfadkonvertierung:

Server {
 hören Sie 8056;
 ....
 # Das Stammverzeichnis der Site des Hosts root /home/wwwroot/siteA/public;
 
 Standort ~* (^[/]*.php)[/|$] {
 # Stammverzeichnis der Site im Container /var/www/html/siteA/public;
 Proxy-Passwort: 127.0.0.1:9056;
 fastcgi.conf einschließen;
 }
}

Im Allgemeinen verwendet jedoch jeder docker nginx + docker php-fpm , und beide Container ordnen das Site-Verzeichnis einheitlich zu, sodass dieses Problem nicht auftritt. nginx wird hier direkt auf dem Hostcomputer installiert, was dazu führt, dass das Stammverzeichnis der Site neu definiert werden muss, wenn nginx php Anfragen weiterleitet.

Anmeldecontainer

# Überprüfen Sie, ob der Container Docker PS ausführt

# Beim Container anmelden docker exec -it php56-fpm /bin/bash

Das Docker-Image von PHP basiert auf Ubuntu. Wir können apt-get verwenden, um die erforderlichen Tools zu installieren, z. B. vim/vi lrzsz net-tools usw.

# Bevor Sie apt-get verwenden, um einige Tools zu installieren, müssen Sie die Quelle aktualisieren. # Andernfalls apt-get E: Paket konnte nicht gefunden werden
apt-get-Aktualisierung
apt-get installieren vim

Installieren Sie die php/pecl-Erweiterung

PHP-Erweiterung installieren

Das heißt, die offizielle PHP-Erweiterung, wie beispielsweise shomp, die mitgeliefert wird, aber standardmäßig nicht aktiviert ist.

# Überprüfen Sie die integrierten Erweiterungen cd /usr/local/php/ext && ls -l
# Installieren Sie die Erweiterung dcoker-php-ext-install shmop

Installieren Sie die pecl-Erweiterung

Pecl ist im Container installiert, sodass Sie es direkt mit pecl installieren können. Achten Sie auf die erweiterte Unterstützung für die PHP-Version.

Der Hauptzweck von docker-php-ext-enable besteht darin, die entsprechende Konfigurationsdatei für die Erweiterung in /usr/local/etc/php/conf.d/docker-php-ext-{extName}.ini zu generieren, um PHP das Laden der Erweiterung zu erleichtern.

# igbinary php5.6 höchste Version ist 2.0.8
pecl installiere igbinary-2.0.8
docker-php-ext-igbinary aktivieren

# Die höchste Version von phpredis php5.6 ist 4.3.0
pecl installiere redis-4.3.0
Docker-PHP-Ext-Redis aktivieren

# Die höchste Version von swoole php5.6 ist 2.0.11
pcel installiere swoole-2.0.11
Docker-PHP-Ext-Swoole aktivieren

php/php-fpm-Konfiguration

/usr/local/etc ist das Konfigurationsverzeichnis des PHP-Containers, das die Konfigurationsdateien von PHP und PHP-FPM enthält. Die Konfigurationsverzeichnisstruktur ist wie folgt:

root@aa739592b579:/usr/local# Baum usw./ 
usw/
|-- pear.conf
|-- php # PHP-Konfigurationsverzeichnis| |-- conf.d # erweiterte PHP-Konfiguration| | |-- docker-php-ext-shmop.ini
| |-- php.ini # cp von php.ini-Entwicklung/Produktion
| |-- php.ini-Entwicklung
| |-- php.ini-Produktion
|-- php-fpm.conf # Die Konfiguration von php-fpm führt hauptsächlich php-fpm.d ein
|-- php-fpm.conf.default # Die php-fpm-Konfiguration ist dieselbe wie php-fpm.d/www.conf |-- php-fpm.d # Erweiterte Konfiguration von php-fpm |-- docker.conf
 |-- www.conf # php-fpm-Konfigurationsmodus Max/Min-Kinder sind alle hier |-- zz-docker.conf

Sie können das Konfigurationsverzeichnis des Hosts dem /usr/local/etc des Containers zuordnen, achten Sie jedoch darauf, dass das Konfigurationsverzeichnis auf dem Host mit dem vorhandenen Verzeichnis im Container übereinstimmt, oder bearbeiten Sie die Konfigurationsdatei direkt im Container. Gemäß dem Docker-Konzept sollten wir eine Konfigurationsdatei auf dem Hostcomputer verwalten und sie dem Konfigurationsverzeichnis des Containers zuordnen, um die Wiederverwendbarkeit des Docker-Containers voll auszuschöpfen.

Ordnen Sie die PHP-Konfigurationsdatei des Hosts dem Container zu.

-v /opt/docker/conf/php/php.ini:/usr/local/etc/php/php.ini
-v /opt/docker/conf/php/php-fpm.ini:/usr/local/etc/php-fpm.d/www/conf

Häufig gestellte Fragen

1. Datei nicht gefunden
Das von nginx angegebene Site-Stammverzeichnis kann nicht direkt dem FPM-Container zugeordnet werden. Geben Sie das Site-Stammverzeichnis des FPM-Containers unter „Speicherort“ erneut an.
2. apt-get E: Paket kann nicht gefunden werden
Führen Sie apt-get update aus, um die Quelle zu aktualisieren.
3. Containerbezogene Konventionen Arbeitsverzeichnis: /var/www/html Es wird empfohlen, das Site-Verzeichnis des Hosts diesem Verzeichnis zuzuordnen Konfigurationsverzeichnis: /usr/local/etc Achten Sie auf die Konfigurationsverzeichnisstruktur
PHP-Erweiterungsverzeichnis: /usr/local/php/ext Sie können das integrierte Erweiterungspaket von PHP anzeigen. Es ist bequemer, es mit docker-php-ext-install zu installieren

Dies ist das Ende dieses Artikels über die Installation des PHP-FPM-Dienstes/der PHP-FPM-Erweiterung/-Konfiguration mit Docker. Weitere Informationen zur Installation von PHP-FPM mit 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 konfigurieren Sie die PHP-Entwicklungsumgebung über Docker auf dem Mac
  • Docker-Installation von PHP und Bereitstellungsbeispiel mit Nginx
  • Erläuterung der Schritte zur Installation der PHP-Erweiterung in Docker
  • So verwenden Sie Docker zum Erstellen einer einheitlichen OpenLDAP+phpLDAPadmin-Benutzerauthentifizierung
  • Detaillierte Erläuterung des Tutorials zum Erstellen einer PHP-Umgebung für Docker
  • Dockers flexible Implementierung zum Aufbau einer PHP-Umgebung
  • So stellen Sie LNMP und phpMyAdmin in Docker bereit
  • PHP verwendet Docker, um Workerman-Fallerklärung auszuführen

<<:  JS realisiert den Front-End-Paging-Effekt

>>:  JS realisiert den automatischen Wiedergabeeffekt von Bildern

Artikel empfehlen

Detaillierte Erklärung der Sperrstruktur in MySQL

Mysql unterstützt 3 Arten von Sperrstrukturen Spe...

Manuelle Implementierung der Instanceof-Methode in JavaScript

1. Verwendung von instanceof Mit instanceof wird ...

So importieren Sie eine JS-Konfigurationsdatei auf den Vue-Server

Inhaltsverzeichnis Hintergrund erreichen Ergänzun...

Über die Kontrolle und Verschönerung von Eingabedateien

Beim Hochladen auf einigen Websites wird nach dem...

Detaillierte Analyse des langsamen Abfrageproblems beim Senden von MySQL-Daten

Anhand eines Beispiels habe ich Ihnen die Lösung ...

Detaillierte Erläuterung der Einführung in die JavaScript-Funktion

Inhaltsverzeichnis Funktionseinführung Funktion E...

Linux wird geladen, vmlinux wird debuggt

Laden von Kernelsymbolen mit gdb arm-eabi-gdb out...

Die einfachste Formularimplementierung des Flexbox-Layouts

Flexibles Layout (Flexbox) erfreut sich zunehmend...

Lösung zum Vergessen des Administratorkennworts der MySQL-Datenbank

1. Geben Sie den Befehl mysqld --skip-grant-table...

Das WeChat-Applet realisiert eine Links-Rechts-Verknüpfung

In diesem Artikel wird der spezifische Code für d...