Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Melaksanakan strategi sandaran dan pemulihan untuk aplikasi PHP menggunakan Docker Compose, Nginx dan MariaDB

Melaksanakan strategi sandaran dan pemulihan untuk aplikasi PHP menggunakan Docker Compose, Nginx dan MariaDB

王林
王林asal
2023-10-12 09:52:421030semak imbas
<p><img src="https://img.php.cn/upload/article/000/465/014/169707557237628.jpg" alt="使用Docker Compose、Nginx和MariaDB实现PHP应用程序的备份和恢复策略"></p> <p>Melaksanakan strategi sandaran dan pemulihan untuk aplikasi PHP menggunakan Docker Compose, Nginx dan MariaDB</p> <p>Pengenalan: <br>Dalam pembangunan perisian moden, strategi sandaran dan pemulihan adalah bahagian yang penting. Apabila mereka bentuk strategi sandaran dan pemulihan untuk aplikasi PHP, kami boleh menggunakan gabungan Docker Compose, Nginx dan MariaDB untuk mencapai penyelesaian yang boleh dipercayai dan fleksibel. Artikel ini akan menyediakan langkah terperinci dan contoh kod untuk membantu pembaca bermula dengan cepat. </p> <p>1. Buat fail Docker Compose</p> <ol><li>Mula-mula, kita perlu mencipta fail bernama <code>docker-compose.yml</code> dan tentukan perkhidmatan kami di dalamnya. Berikut ialah struktur asas fail sampel: <code>docker-compose.yml</code>的文件,并在其中定义我们的服务。以下是一个示例文件的基本结构:</li></ol><pre class='brush:yaml;toolbar:false;'>version: '3' services: app: build: context: ./app dockerfile: Dockerfile volumes: - ./app:/var/www/html depends_on: - db restart: always db: image: mariadb ports: - 3306:3306 restart: always web: image: nginx ports: - 80:80 volumes: - ./nginx:/etc/nginx/conf.d depends_on: - app restart: always</pre><ol start="2"> <li>在上述示例中,我们定义了三个服务:<code>app</code>、<code>db</code>和<code>web</code>。其中,<code>app</code>服务是PHP应用程序的容器,<code>db</code>服务是MariaDB数据库的容器,<code>web</code>服务是Nginx服务器的容器。</li> <li>我们还使用了<code>volumes</code>属性来实现数据卷的挂载。在示例中,我们将<code>./app</code>目录挂载到了<code>app</code>服务的<code>/var/www/html</code>目录,以便持久化存储应用程序的数据。</li> </ol> <p>二、Nginx的备份策略</p> <ol><li>在<code>docker-compose.yml</code>文件中,我们定义了一个名为<code>web</code>的Nginx服务。为了实现备份策略,我们将使用Nginx的<code>ngx_http_upstream_module</code>模块来配置负载平衡和反向代理。以下是一个基本的Nginx配置示例:</li></ol><pre class='brush:nginx;toolbar:false;'>http { upstream backend { server app:80; } server { listen 80; server_name localhost; location / { proxy_pass http://backend; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } } }</pre><ol start="2"> <li>在上述示例中,我们使用了<code>upstream</code>指令来定义了一个名为<code>backend</code>的后端服务,并将<code>app</code>服务的地址和端口作为其参数。接下来,我们在<code>server</code>块中使用了<code>proxy_pass</code>指令来设置反向代理,将请求转发给<code>backend</code>服务。</li> <li>配置完成后,我们可以使用<code>docker-compose up</code>命令来启动所有服务。此时,Nginx将会监听在主机的80端口,并将请求转发给<code>app</code>服务。</li> </ol> <p>三、MariaDB的备份和恢复策略</p> <ol><li>在<code>docker-compose.yml</code>文件中,我们定义了一个名为<code>db</code>的MariaDB服务。为了实现备份和恢复策略,我们将使用MariaDB的<code>mysqldump</code>工具来实现数据库的备份和恢复。以下是一个基本的备份脚本示例:</li></ol><pre class='brush:bash;toolbar:false;'>#!/bin/bash backup_path="/path/to/backup" date=$(date +%Y%m%d%H%M%S) db_container=$(docker ps --filter "name=db" --format "{{.ID}}") docker exec -it $db_container mysqldump -u root -p<password> --all-databases > $backup_path/db_backup_$date.sql</pre><ol start="2"> <li>在上述示例中,我们使用了<code>mysqldump</code>命令来导出数据库的备份,并将其保存到指定的备份路径下。我们还使用了<code>date</code>命令来生成一个时间戳,以便每次备份都有唯一的文件名。最后,我们通过<code>docker exec</code>命令在<code>db</code>容器中执行备份命令。</li> <li>要恢复数据库,我们可以使用以下命令:</li> </ol><pre class='brush:bash;toolbar:false;'>docker exec -i $db_container mysql -u root -p<password> < $backup_path/db_backup_$date.sql</pre><ol start="4"> <li>在上述命令中,我们使用了<code>mysql</code>命令来执行从备份文件中恢复数据库。通过<code><</code>符号,我们将备份文件的内容导入到了<code>mysql</code> </li>rrreee<ol start="2"></ol>Dalam contoh di atas, kami menentukan tiga perkhidmatan: <code>app</code>, <code>db</code> dan <code>web</code>. Antaranya, perkhidmatan <code>app</code> ialah bekas aplikasi PHP, perkhidmatan <code>db</code> ialah bekas pangkalan data MariaDB dan perkhidmatan <code>web</code> ialah bekas pelayan Nginx. <p><br>Kami juga menggunakan atribut <code>volume</code> untuk melekapkan volum data. Dalam contoh, kami melekapkan direktori <code>./app</code> ke direktori <code>/var/www/html</code> perkhidmatan <code>app</code> untuk penyimpanan berterusan bagi data program. </p>🎜🎜2. Strategi sandaran Nginx🎜🎜🎜Dalam fail <code>docker-compose.yml</code>, kami mentakrifkan perkhidmatan Nginx bernama <code>web</code>. Untuk melaksanakan strategi sandaran, kami akan menggunakan modul <code>ngx_http_upstream_module</code> Nginx untuk mengkonfigurasi pengimbangan beban dan proksi terbalik. Berikut ialah contoh konfigurasi asas Nginx: 🎜🎜rrreee<ol start="2">🎜Dalam contoh di atas, kami menggunakan arahan <code>upstream</code> untuk mentakrifkan fail yang dipanggil <code>backend code >'s backend service, dan mengambil alamat dan port perkhidmatan <code>app</code> sebagai parameternya. Seterusnya, kami menggunakan arahan <code>proxy_pass</code> dalam blok <code>server</code> untuk menyediakan proksi terbalik dan memajukan permintaan ke perkhidmatan <code>backend</code>. 🎜🎜Selepas konfigurasi selesai, kita boleh menggunakan perintah <code>docker-compose up</code> untuk memulakan semua perkhidmatan. Pada masa ini, Nginx akan mendengar pada port 80 hos dan memajukan permintaan ke perkhidmatan <code>app</code>. 🎜🎜🎜3. Strategi sandaran dan pemulihan MariaDB🎜🎜🎜Dalam fail <code>docker-compose.yml</code>, kami mentakrifkan perkhidmatan MariaDB bernama <code>db</code>. Untuk melaksanakan strategi sandaran dan pemulihan, kami akan menggunakan alat <code>mysqldump</code> MariaDB untuk melaksanakan sandaran dan pemulihan pangkalan data. Berikut ialah contoh skrip sandaran asas: 🎜🎜rrreee<ol start="2">🎜Dalam contoh di atas, kami menggunakan perintah <code>mysqldump</code> untuk mengeksport sandaran pangkalan data dan menyimpannya ke ditentukan di bawah laluan sandaran. Kami juga menggunakan perintah <code>date</code> untuk menjana cap masa supaya setiap sandaran mempunyai nama fail yang unik. Akhir sekali, kami melaksanakan perintah sandaran dalam bekas <code>db</code> melalui perintah <code>docker exec</code>. 🎜🎜Untuk memulihkan pangkalan data, kita boleh menggunakan arahan berikut: 🎜🎜rrreee<ol start="4">🎜Dalam arahan di atas, kami telah menggunakan perintah <code>mysql</code> untuk melaksanakan pemulihan pangkalan data daripada fail sandaran. Melalui simbol <code><</code>, kami mengimport kandungan fail sandaran ke dalam perintah <code>mysql</code>. 🎜🎜🎜Kesimpulan: 🎜Artikel ini menerangkan cara menggunakan Docker Compose, Nginx dan MariaDB untuk melaksanakan strategi sandaran dan pemulihan untuk aplikasi PHP. Kami menunjukkan pengimbangan beban Nginx dan konfigurasi proksi terbalik serta skrip sandaran dan pemulihan MariaDB dengan kod sampel. Melalui langkah-langkah ini, pembaca seharusnya dapat bermula dengan cepat dan menerapkannya pada aplikasi PHP mereka sendiri dalam projek sebenar. Semoga artikel ini dapat memberi manfaat kepada pembaca. 🎜</ol> </ol></code> </ol> </ol>

Atas ialah kandungan terperinci Melaksanakan strategi sandaran dan pemulihan untuk aplikasi PHP menggunakan Docker Compose, Nginx dan MariaDB. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn