Heim >Backend-Entwicklung >PHP-Tutorial >Disaster Recovery und Wiederherstellung von PHP-Anwendungen mit Docker Compose, Nginx und MariaDB
Disaster Recovery und Recovery für PHP-Anwendungen mit Docker Compose, Nginx und MariaDB
Disaster Recovery und Recovery ist ein wichtiges Thema und für jede Anwendung sehr kritisch. In modernen Cloud-Computing-Umgebungen kann die Notfallwiederherstellung und -wiederherstellung von Anwendungen mithilfe der Containerisierungstechnologie problemlos erreicht werden. In diesem Artikel wird die Verwendung von Docker Compose, Nginx und MariaDB zur Implementierung der Notfallwiederherstellung und Wiederherstellung von PHP-Anwendungen vorgestellt und spezifische Codebeispiele bereitgestellt.
Zuerst müssen wir eine Docker Compose-Datei definieren, die die verschiedenen Komponenten unserer Anwendung und die Beziehungen zwischen ihnen beschreibt. Hier ist ein einfaches Beispiel:
version: '3' services: web: build: . ports: - 80:80 depends_on: - db networks: - app-network db: image: mariadb:latest ports: - 3306:3306 environment: - MYSQL_ROOT_PASSWORD=secret volumes: - db-data:/var/lib/mysql networks: - app-network networks: app-network: volumes: db-data:
Die obige Docker Compose-Datei definiert zwei Dienste: Web und DB. Der Webdienst ist unsere PHP-Anwendung und wird über Nginx ausgeführt. Der DB-Dienst ist eine MariaDB-Datenbank, die zum Speichern der Anwendungsdaten verwendet wird.
Als nächstes müssen wir eine Nginx-Konfigurationsdatei schreiben, um Anfragen an unsere PHP-Anwendung weiterzuleiten. Das Folgende ist eine Beispielkonfigurationsdatei:
server { listen 80; server_name example.com; root /var/www/html; location ~ .php$ { fastcgi_pass web:9000; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } }
In der obigen Konfigurationsdatei verwenden wir die Direktive fastcgi_pass, um die Anfrage an den Docker-Dienst namens web weiterzuleiten, wobei die Portnummer 9000 ist.
Schließlich müssen wir eine PHP-Anwendung schreiben und sie zusammen mit dem obigen Code in ein Container-Image packen. Unten finden Sie ein einfaches PHP-Anwendungsbeispiel:
<?php $servername = "db"; $username = "root"; $password = "secret"; $dbname = "mydb"; // 创建连接 $conn = new mysqli($servername, $username, $password, $dbname); // 检查连接是否成功 if ($conn->connect_error) { die("连接失败: " . $conn->connect_error); } // 执行查询 $sql = "SELECT * FROM users"; $result = $conn->query($sql); // 输出结果 if ($result->num_rows > 0) { while($row = $result->fetch_assoc()) { echo "id: " . $row["id"]. " - Name: " . $row["name"]. "<br>"; } } else { echo "0 结果"; } // 关闭连接 $conn->close(); ?>
Die obige PHP-Anwendung ist ein einfaches Datenbankabfragebeispiel, das eine Verbindung zu einer MariaDB-Datenbank namens db herstellt und eine Abfrage ausführt. Die Abfrageergebnisse werden an den Browser ausgegeben.
Um Katastrophenvorsorge und Wiederherstellung zu erreichen, können wir Docker Compose-Befehle verwenden, um unsere Anwendungen zu starten und zu stoppen. Hier sind einige häufig verwendete Befehlsbeispiele:
# 启动应用程序 docker-compose up -d # 停止应用程序 docker-compose down
Mit diesen Befehlen können wir unsere Anwendungsinstanzen einfach erstellen und zerstören, um Katastrophenvorsorge- und Wiederherstellungsziele zu erreichen.
Zusammenfassung:
Mit Docker Compose, Nginx und MariaDB können wir Disaster Recovery und Wiederherstellung von PHP-Anwendungen problemlos implementieren. Mithilfe der Containerisierungstechnologie können wir Anwendungsinstanzen schnell bereitstellen und zerstören und Nginx als Reverse-Proxy verwenden, um einen Lastausgleich des Datenverkehrs zu erreichen. MariaDB bietet leistungsstarke Datenbankfunktionen zum Speichern und Verwalten von Anwendungsdaten. Die oben bereitgestellten Codebeispiele können den Lesern helfen, zu verstehen, wie diese Funktionen implementiert und ihre eigenen Anwendungen darauf basierend angepasst werden können.
Das obige ist der detaillierte Inhalt vonDisaster Recovery und Wiederherstellung von PHP-Anwendungen mit Docker Compose, Nginx und MariaDB. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!