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

Zusammenfassung der MySQL-Entwicklungsstandards und -Nutzungskenntnisse

1. Namenskonventionen 1. Datenbanknamen, Tabellen...

Anweisungen zur Verwendung von JSON-Operationsfunktionen in Mysql5.7

Vorwort JSON ist ein leichtes Datenaustauschforma...

Centos7-Installation des FFmpeg-Audio-/Video-Tools – einfaches Dokument

ffmpeg ist ein sehr leistungsfähiges Tool zur Aud...

JavaScript zum Erreichen aller oder umgekehrter Auswahlfunktionen

In diesem Artikel wird der spezifische JavaScript...

Praktische TypeScript-Tipps, die Sie vielleicht nicht kennen

Inhaltsverzeichnis Vorwort Funktionsüberladung Zu...

Probleme bei der Ausführungsreihenfolge von AND und OR in SQL-Anweisungen

Frage Beim Schreiben von Datenbank-SQL ist mir ge...

Eine ausführliche Zusammenfassung der Überlegungen zu MySQL-Zeiteinstellungen

Existiert die Zeit wirklich? Manche Menschen glau...

So installieren Sie Django in einer virtuellen Umgebung unter Ubuntu

Führen Sie die folgenden Vorgänge im Ubuntu-Befeh...

Vue.js verarbeitet Icon-Symbole über Komponenten

Icon-Icon-Verarbeitungslösung Das Ziel dieses Dat...

Zusammenfassung des Front-End-Wissens im Gokudō-Spiel

Hintergrund Zu Beginn meines Japanisch-Lernens fi...

N Möglichkeiten, Elemente mit CSS zu zentrieren

Inhaltsverzeichnis Vorwort Zentrieren von Inline-...