Gunakan Docker Compose, Nginx dan MariaDB untuk melaksanakan pemantauan dan pengurusan log aplikasi PHP
Pemantauan dan pengurusan log adalah bahagian yang sangat penting semasa membangunkan dan mengendalikan aplikasi web. Menggunakan Docker Compose, Nginx dan MariaDB, kami boleh melaksanakan penyelesaian pemantauan dan pengurusan log yang lengkap.
Pertama, kita perlu menyediakan aplikasi PHP dan menulisnya sebagai imej Docker. Aplikasi PHP ini boleh menjadi halaman statik mudah atau aplikasi dinamik yang mengandungi kod PHP. Tidak kira yang mana satu, kita perlu membungkusnya ke dalam imej Docker.
Seterusnya, kita perlu menulis fail Docker Compose untuk menentukan keseluruhan persekitaran aplikasi kita. Dalam fail ini, kita perlu menentukan tiga perkhidmatan: Nginx, PHP dan MariaDB.
version: '3' services: web: image: nginx:latest ports: - 80:80 volumes: - ./nginx.conf:/etc/nginx/conf.d/default.conf - ./logs:/var/log/nginx php: image: your_php_image:latest volumes: - ./php:/var/www/html links: - db db: image: mariadb:latest environment: - MYSQL_ROOT_PASSWORD=your_password volumes: - ./data:/var/lib/mariadb
Dalam konfigurasi di atas, kami menentukan tiga perkhidmatan: web, php dan db. Perkhidmatan web menggunakan imej Nginx dan mengikat port 80 hos ke port 80 dalam bekas. Kami juga menentukan laluan pemasangan fail konfigurasi Nginx nginx.conf dan log direktori fail log.
Perkhidmatan php menggunakan imej PHP pakej kami sendiri, dan memasang direktori php dalam hos ke direktori /var/www/html dalam bekas, supaya aplikasi PHP kami boleh mengakses fail dalam direktori ini.
Perkhidmatan db menggunakan cermin MariaDB dan menetapkan kata laluan pengguna ROOT. Kami juga memasang direktori data untuk penyimpanan data pangkalan data yang berterusan.
Seterusnya, kami perlu menyediakan fail konfigurasi Nginx nginx.conf untuk mengkonfigurasi hos maya dan pengurusan log Nginx. Berikut ialah contoh mudah:
server { listen 80; server_name localhost; access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; location / { root /var/www/html; index index.html index.php; } location ~ .php$ { fastcgi_pass php:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /var/www/html/$fastcgi_script_name; include fastcgi_params; } }
Fail konfigurasi di atas mentakrifkan hos maya bernama localhost, yang mendengar pada port 80. Kami mengkonfigurasi log akses dan log ralat ke direktori /var/log/nginx masing-masing.
Seterusnya, kita perlu menulis skrip untuk menghuraikan dan menyimpan log. Kita boleh menulis skrip mudah menggunakan PHP untuk mencapai fungsi ini. Berikut ialah contoh:
<?php function save_log($log_file, $log_data) { // 解析日志数据 // 存储到数据库中 } $log_file = '/var/log/nginx/access.log'; $handle = fopen($log_file, "r"); if ($handle) { while (($line = fgets($handle)) !== false) { // 解析日志行,获取需要存储的数据 $log_data = parse_log($line); // 存储日志数据 save_log($log_file, $log_data); } fclose($handle); } ?>
Dalam skrip di atas, kami menggunakan gelung mudah untuk membaca fail log baris demi baris dan menyimpan data log yang dihuraikan ke dalam pangkalan data. Logik penghuraian dan penyimpanan khusus perlu ditulis mengikut situasi sebenar.
Akhir sekali, kami perlu menambahkan skrip ini pada aplikasi PHP kami untuk melaksanakan penghuraian log dan operasi penyimpanan dengan kerap. Kita boleh menggunakan crontab untuk melaksanakan pelaksanaan berjadual. Berikut ialah contoh:
# 每分钟执行一次日志解析脚本 * * * * * php /var/www/html/log_parser.php
Tambahkan konfigurasi di atas pada crontab untuk melaksanakan skrip log_parser.php setiap minit.
Ringkasnya, menggunakan Docker Compose, Nginx dan MariaDB, kami boleh melaksanakan pemantauan dan pengurusan log aplikasi PHP dengan mudah. Dengan mengkonfigurasi hos maya dan pengurusan log Nginx, kami boleh menyimpan log akses dan log ralat dalam direktori tertentu. Kemudian, dengan menulis skrip yang menghuraikan log dan menambahkannya pada aplikasi PHP, kami boleh menghuraikan dan menyimpan data log ini secara tetap. Dengan cara ini, kami boleh memantau dan menyelesaikan masalah aplikasi dengan mudah.
Atas ialah kandungan terperinci Pemantauan dan pengurusan log aplikasi PHP menggunakan Docker Compose, Nginx dan MariaDB. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!