Heim  >  Artikel  >  Backend-Entwicklung  >  Das goldene Rezept von Docker Compose, Nginx und MariaDB: Hochverfügbare PHP-Anwendungsarchitektur

Das goldene Rezept von Docker Compose, Nginx und MariaDB: Hochverfügbare PHP-Anwendungsarchitektur

PHPz
PHPzOriginal
2023-10-12 09:25:58867Durchsuche

Docker Compose、Nginx和MariaDB的黄金配方:高可用PHP应用程序架构

Das goldene Rezept von Docker Compose, Nginx und MariaDB: Hochverfügbare PHP-Anwendungsarchitektur

[Einführung]
Im heutigen Internetzeitalter ist Hochverfügbarkeit für jede Website und Anwendung von entscheidender Bedeutung. Um dieses Ziel zu erreichen, müssen wir eine stabile, skalierbare und leistungsstarke Architektur aufbauen. In diesem Artikel wird erläutert, wie Sie mit Docker Compose, Nginx und MariaDB eine hochverfügbare PHP-Anwendungsarchitektur erstellen und spezifische Codebeispiele bereitstellen.

[Teil Eins: Architekturübersicht]
Unser Ziel ist es, eine hochverfügbare Architektur aufzubauen, in der PHP-Anwendungen in mehreren Instanzen ausgeführt und durch Lastausgleich verteilt werden. Darüber hinaus werden wir MariaDB als unsere Datenbankschicht und Nginx als Reverse-Proxy-Server verwenden.

[Teil 2: Docker Compose]
Wir werden Docker Compose verwenden, um unseren gesamten Anwendungsstapel zu definieren und zu verwalten. Es ermöglicht uns, alle Container mithilfe einer einfachen YAML-Datei zu definieren und zu konfigurieren. Das Folgende ist eine Beispiel-Docker-Compose-Datei, die einen PHP-Anwendungscontainer, einen Nginx-Container und einen MariaDB-Container enthält:

version: '3'
services:
  app:
    build:
      context: .
      dockerfile: Dockerfile
    ports:
      - 8000:80
    environment:
      - DB_HOST=mariadb
  nginx:
    image: nginx:latest
    ports:
      - 80:80
    volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf:ro
  mariadb:
    image: mariadb:latest
    environment:
      - MYSQL_ROOT_PASSWORD=secret

[Teil 3: Nginx-Konfiguration]
Nginx fungiert als Reverse-Proxy-Server, der an mehrere PHP-Anwendungsinstanzen verteilt werden kann . Um dies zu erreichen, müssen wir die Konfigurationsdatei von Nginx ändern. Hier ist ein vereinfachtes Beispiel einer Nginx-Konfigurationsdatei:

worker_processes  1;
events {
    worker_connections  1024;
}
http {
    upstream php {
        server app1:80;
        server app2:80;
        # 可以根据需要修改添加更多的PHP应用实例
    }
    server {
        listen 80;
        location / {
            proxy_pass http://php;
        }
    }
}

[Teil 4: PHP-Anwendung]
Unsere PHP-Anwendung ist ein einfaches Beispiel, das das Slim-Framework zur Verarbeitung von HTTP-Anfragen verwendet. Hier ist ein Beispiel für eine index.php-Datei:

<?php
require __DIR__ . '/vendor/autoload.php';

$app = new SlimApp();

$app->get('/', function ($request, $response) {
    $response->getBody()->write("Hello, world!");
    return $response;
});

$app->run();

[Teil 5: Start und Verwaltung]
Um unseren Anwendungsstapel zu starten, führen Sie einfach den folgenden Befehl aus:

docker-compose up -d

Dadurch werden alle Container gestartet und miteinander verbunden. Wenn Sie über mehrere Instanzen Ihrer PHP-Anwendung verfügen, erstellt Docker Compose für jede Instanz einen neuen Container.

Um Ihre Anwendung zu skalieren, führen Sie einfach den folgenden Befehl aus:

docker-compose scale app=3

Dadurch werden zusätzlich zur vorhandenen Anwendungsinstanz zwei weitere Instanzen gestartet.

[Fazit]
Durch die Kombination von Docker Compose, Nginx und MariaDB können wir eine hochverfügbare, skalierbare und leistungsstarke PHP-Anwendungsarchitektur erstellen. Dieses goldene Rezept verbessert nicht nur die Anwendungszuverlässigkeit, sondern vereinfacht auch die Bereitstellung und Verwaltung. Ich hoffe, dass Sie die spezifischen Codebeispiele in diesem Artikel hilfreich finden. Möge Ihre Bewerbung erfolgreich sein!

Das obige ist der detaillierte Inhalt vonDas goldene Rezept von Docker Compose, Nginx und MariaDB: Hochverfügbare PHP-Anwendungsarchitektur. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn