


Die perfekte Kombination aus Docker Compose, Nginx und MariaDB: Best Practices für die Bereitstellung von PHP-Anwendungen
Die perfekte Kombination aus Docker Compose, Nginx und MariaDB: Best Practices für die Bereitstellung von PHP-Anwendungen
Einführung:
In der modernen Webanwendungsentwicklung ist der Einsatz von Containerisierungstechnologie zu einem Trend geworden. Die Containerisierungstechnologie kann eine Anwendung und ihre Abhängigkeiten in einen einzigen Container packen, sodass die Anwendung in jeder Umgebung ausgeführt werden kann, die die Containerisierungstechnologie unterstützt. Docker ist derzeit die beliebteste Containerisierungstechnologie, die die Bereitstellung, Verwaltung und Erweiterung von Anwendungen vereinfachen kann.
Für mit PHP entwickelte Webanwendungen können wir Docker Compose verwenden, um mehrere Container zu verwalten, einschließlich Nginx, PHP, Datenbank usw. In diesem Artikel wird erläutert, wie Sie Docker Compose, Nginx und MariaDB zum Bereitstellen und Verwalten einer PHP-Anwendung verwenden, und es werden spezifische Codebeispiele bereitgestellt.
-
Docker und Docker Compose installieren
Zuerst müssen wir Docker und Docker Compose auf dem Host-Computer installieren. Sie können die offizielle Docker-Website (https://www.docker.com/) zum Herunterladen und Installieren besuchen. Sobald die Installation abgeschlossen ist, können wir bestätigen, dass Docker korrekt installiert ist, indem wir den folgenden Befehl ausführen:docker --version docker-compose --version
Erstellen Sie eine Docker Compose-Datei.
Erstellen Sie eine Datei namens docker-compose.yml im Stammverzeichnis des Projekts, um die zu definieren Anwendungsdienste und entsprechende Konfigurationen. Hier ist ein Beispiel für eine einfache docker-compose.yml-Datei:version: '3' services: web: build: context: . dockerfile: Dockerfile ports: - 80:80 volumes: - ./src:/var/www/html depends_on: - db db: image: mariadb environment: MYSQL_ROOT_PASSWORD: 123456 MYSQL_DATABASE: mydb MYSQL_USER: user MYSQL_PASSWORD: password volumes: - db-data:/var/lib/mysql volumes: db-data:
Die obige docker-compose.yml-Datei definiert zwei Dienste, einen ist ein Webdienst zum Ausführen von Nginx und PHP und der andere ist ein Datenbankdienst zum Ausführen von MariaDB . Der Webdienst stellt Port 80 dem externen Host zur Verfügung und ordnet den Ordner src im Projektverzeichnis dem Verzeichnis /var/www/html im Container zu. Der DB-Dienst legt die Umgebungsvariablen und Datenvolumes von MariaDB für die dauerhafte Speicherung von Datenbankdaten fest.
Dockerfile erstellen
Um das für den Webdienst erforderliche benutzerdefinierte Image zu erstellen, müssen wir eine Datei mit dem Namen Dockerfile im Projektverzeichnis erstellen. Hier ist ein Beispiel für eine einfache Docker-Datei:FROM php:7.4-fpm RUN docker-php-ext-install pdo_mysql WORKDIR /var/www/html
Die obige Docker-Datei basiert auf dem offiziellen php:7.4-fpm-Image, hat die pdo_mysql-Erweiterung installiert und legt das Arbeitsverzeichnis auf /var/www/html fest.
Container starten
Führen Sie den folgenden Befehl im Stammverzeichnis des Projekts aus, um den Container zu starten:docker-compose up -d
Durch Ausführen des obigen Befehls startet Docker die Web- und Datenbankdienste entsprechend der Konfiguration im Docker-Compose .yml-Datei. Der Parameter -d gibt an, dass der Container im Hintergrundmodus ausgeführt wird.
Nginx konfigurieren
Damit Nginx Anfragen korrekt an die PHP-Anwendung im Webdienst weiterleiten kann, müssen wir der Nginx-Konfiguration die folgenden Konfigurationselemente hinzufügen:server { listen 80; server_name localhost; root /var/www/html; index index.php index.html; location / { try_files $uri $uri/ /index.php?$query_string; } location ~ .php$ { fastcgi_pass web:9000; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
Die obige Konfigurationsdatei leitet die Anfrage an das Web weiter service Führen Sie den PHP-FPM-Prozess aus und übergeben Sie PHP-bezogene Umgebungsvariablen an PHP-FPM.
PHP-Anwendung schreiben
Schreiben Sie PHP-Anwendungscode in den Ordner src im Projektverzeichnis. Hier nehmen wir ein einfaches Hello World-Programm als Beispiel:<?php echo "Hello World!";
- Zugriff auf die Anwendung
Sie können die laufende PHP-Anwendung im Browser anzeigen, indem Sie auf http://localhost zugreifen.
Zusammenfassung:
Durch die Verwendung einer Kombination aus Docker Compose, Nginx und MariaDB können wir PHP-Anwendungen einfach bereitstellen und verwalten. Docker Compose bietet eine einfache und leistungsstarke Möglichkeit, mehrere Container zu definieren und auszuführen, Nginx kann als Webserver eine große Anzahl gleichzeitiger Anforderungen verarbeiten und MariaDB bietet einen stabilen und zuverlässigen Datenbankdienst. Wir hoffen, dass die Leser durch die Einführung und Beispiele in diesem Artikel diese Technologien besser verstehen, anwenden und in tatsächlichen Projekten davon profitieren können.
Das obige ist der detaillierte Inhalt vonDie perfekte Kombination aus Docker Compose, Nginx und MariaDB: Best Practices für die Bereitstellung von PHP-Anwendungen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undress AI Tool
Ausziehbilder kostenlos

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

1. Die erste Wahl für die Kombination aus Laravel Mysql Vue/React in der PHP -Entwicklungsfrage und der Antwortgemeinschaft ist die erste Wahl für die Kombination aus Laravel Mysql Vue/React aufgrund ihrer Reife im Ökosystem und der hohen Entwicklungseffizienz; 2. Die hohe Leistung erfordert Abhängigkeit von Cache (REDIS), Datenbankoptimierung, CDN und asynchronen Warteschlangen; 3. Die Sicherheit muss mit Eingabefilterung, CSRF -Schutz, HTTPS, Kennwortverschlüsselung und Berechtigungssteuerung erfolgen. V.

Es gibt drei Hauptmethoden, um Umgebungsvariablen in PHP festzulegen: 1. Globale Konfiguration über php.ini; 2. durch einen Webserver (z. B. SetEnv von Apache oder FastCGI_Param von Nginx); 3. Verwenden Sie die Funktion Putenv () in PHP -Skripten. Unter ihnen eignet sich Php.ini für globale und selten ändernde Konfigurationen. Die Webserverkonfiguration eignet sich für Szenarien, die isoliert werden müssen, und Putenv () ist für temporäre Variablen geeignet. Die Persistenz -Richtlinien umfassen Konfigurationsdateien (z. B. Php.ini oder Webserverkonfiguration), .env -Dateien werden mit der DOTENV -Bibliothek und dynamische Injektion von Variablen in CI/CD -Prozessen geladen. Sicherheitsmanagement sensible Informationen sollten hart codiert werden, und es wird empfohlen.

Die Kernrolle von Homebrew bei der Konstruktion der Mac -Umgebung besteht darin, die Installation und Verwaltung der Software zu vereinfachen. 1. Homebrew verarbeitet automatisch Abhängigkeiten und verkapselt komplexe Kompilierungs- und Installationsprozesse in einfache Befehle. 2. Bietet ein einheitliches Softwarepaket -Ökosystem, um die Standardisierung des Software -Installationsorts und der Konfiguration zu gewährleisten. 3. Integriert Service -Management -Funktionen und kann Dienste leicht über Brewservices starten und stoppen. 4. Bequemes Software -Upgrade und -wartung und verbessert die Sicherheit und Funktionalität der Systeme.

Um PHP -Container zur Unterstützung der automatischen Konstruktion zu ermöglichen, liegt der Kern in der Konfiguration des Continuous Integration (CI) -Prozesses. 1. Verwenden Sie Dockerfile, um die PHP -Umgebung zu definieren, einschließlich grundlegender Bild-, Erweiterungsinstallations-, Abhängigkeitsmanagement- und Berechtigungseinstellungen. 2. Konfigurieren Sie CI/CD-Tools wie GitLabci und definieren Sie die Erstell-, Test- und Bereitstellungsstadien über die Datei .gitlab-ci.yml, um automatische Konstruktion, Test und Bereitstellung zu erreichen. 3.. Integrieren Sie Testframeworks wie Phpunit, um sicherzustellen, dass die Tests automatisch nach Codeänderungen ausgeführt werden. 4. Verwenden Sie automatisierte Bereitstellungsstrategien wie Kubernetes, um die Bereitstellungskonfiguration durch die Datei bereitzustellen. 5. Dockerfile optimieren und mehrstufige Konstruktionen übernehmen

Die Verwendung des richtigen PHP-Basisbildes und die Konfiguration einer sicheren, leistungsoptimierten Docker-Umgebung ist der Schlüssel zum Erreichen der Produktion. 1. Wählen Sie PHP: 8,3-FPM-Alpine als Grundbild, um die Angriffsfläche zu reduzieren und die Leistung zu verbessern. 2. Deaktivieren Sie gefährliche Funktionen über benutzerdefinierte Php.ini, deaktivieren Sie die Fehleranzeige und aktivieren Sie Opcache und JIT, um die Sicherheit und Leistung zu verbessern. 3.. Verwenden Sie Nginx als Reverse Proxy, um den Zugriff auf sensible Dateien einzuschränken und die PHP-Anforderungen korrekt an PHP-FPM weiterzuleiten. 4. Verwenden Sie mehrstufige Optimierungsbilder, um Entwicklungsabhängigkeiten zu entfernen, und richten Sie nicht Root-Benutzer auf, um Container auszuführen. 5. optionaler Aufsichtsbehörde zum Verwalten mehrerer Prozesse wie Cron; 6. Überprüfen

Der Aufbau einer unabhängigen Umgebung für PHP -Aufgabencontainer kann über Docker implementiert werden. Die spezifischen Schritte sind wie folgt: 1. Installieren Sie Docker und DockerComponpose als Grundlage; 2. Erstellen Sie ein unabhängiges Verzeichnis, um Dockerfile und Crontab -Dateien zu speichern. 3. Schreiben Sie Dockerfile, um die PHPCLI -Umgebung zu definieren und Cron und die erforderlichen Erweiterungen zu installieren. 4. Schreiben Sie eine Crontab -Datei, um Zeitaufgaben zu definieren. 5. Schreiben Sie ein Docker-compose.yml-Mount-Skriptverzeichnis und konfigurieren Sie Umgebungsvariablen. 6. Starten Sie den Container und überprüfen Sie das Protokoll. Im Vergleich zu Timing -Aufgaben in Webcontainern haben unabhängige Container die Vorteile der Ressourcenisolation, der reinen Umgebung, der starken Stabilität und einer einfachen Expansion. Gewährleistung der Protokollierung und Fehleraufnahme

Um das Problem der Inkonsistenz zwischen PHP -Umgebung und Produktion zu lösen, besteht der Kern darin, die Container- und Orchestrierungsfunktionen von Kubernetes zu verwenden, um die Umweltkonsistenz zu erreichen. Die spezifischen Schritte sind wie folgt: 1. Erstellen Sie ein einheitliches Docker -Bild, einschließlich aller PHP -Versionen, Erweiterungen, Abhängigkeiten und Webserverkonfigurationen, um sicherzustellen, dass dasselbe Bild in der Entwicklung und Produktion verwendet wird. 2. Verwenden Sie Kubernetes 'configMap und geheim, um nicht sensitive und empfindliche Konfigurationen zu verwalten und eine flexible Umstellung verschiedener Umgebungskonfigurationen durch Volumenmontage oder Umgebungsvariableninjektion zu erreichen. 3. Gewährleistung der Konsistenz des Anwendungsverhaltens durch Unified Kubernetes -Deployment -Definitionsdateien (z. B. Bereitstellung und Dienst) und in die Versionskontrolle einbeziehen; 4.

1. Die Mainstream-Frameworks des PHP-E-Commerce-Backends sind Laravel (Fast Development, Starke Ecology), Symfony (Unternehmensebene, stabile Struktur), YII (ausgezeichnete Leistung, geeignet für standardisierte Module); 2. Der Technologiestapel muss mit MySQL Redis-Cache, Rabbitmq/Kafka-Nachrichtenwarteschlange, Nginx PHP-FPM und Front-End-Trennung ausgestattet werden. 3.. Eine hohe Parallelitätsarchitektur sollte geschichtet und modular sein, Datenbank -Lesen und Schreiben von Trenn-/Verteilte Datenbank, beschleunigt mit Cache und CDN, asynchrone Verarbeitung von Aufgaben, Teilen von Lastausgleich und Sitzung, allmählich Microservice und eine Überwachung und einen Alarmsystem. 4. Zu den Mehrfachmonetisierungspfaden gehören Produktpreisdifferenz oder Plattformprovision, Standortwerbung, SaaS-Abonnement, maßgeschneiderte Entwicklung und Plug-in-Markt, API-Verbindung
