>  기사  >  백엔드 개발  >  Docker Compose, Nginx 및 MariaDB를 사용하여 PHP 애플리케이션 모니터링 및 로그 관리

Docker Compose, Nginx 및 MariaDB를 사용하여 PHP 애플리케이션 모니터링 및 로그 관리

WBOY
WBOY원래의
2023-10-12 11:51:12634검색

使用Docker Compose、Nginx和MariaDB实现PHP应用程序的监控和日志管理

Docker Compose, Nginx 및 MariaDB를 사용하여 PHP 애플리케이션의 모니터링 및 로그 관리 구현

웹 애플리케이션을 개발하고 운영할 때 모니터링 및 로그 관리는 매우 중요한 부분입니다. Docker Compose, Nginx 및 MariaDB를 사용하여 완전한 모니터링 및 로그 관리 솔루션을 구현할 수 있습니다.

먼저 PHP 애플리케이션을 준비하고 Docker 이미지로 작성해야 합니다. 이 PHP 애플리케이션은 간단한 정적 페이지일 수도 있고 PHP 코드가 포함된 동적 애플리케이션일 수도 있습니다. 어느 것이든 상관없이 Docker 이미지로 패키징해야 합니다.

다음으로 애플리케이션의 전체 환경을 정의하기 위해 Docker Compose 파일을 작성해야 합니다. 이 파일에서는 Nginx, PHP 및 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

위 구성에서는 web, php, db의 세 가지 서비스를 정의했습니다. 웹 서비스는 Nginx 이미지를 사용하고 호스트의 포트 80을 컨테이너의 포트 80에 바인딩합니다. 또한 Nginx 구성 파일 nginx.conf의 마운트 경로와 로그 파일 디렉터리 로그를 지정했습니다.

php 서비스는 자체 패키지된 PHP 이미지를 사용하고 호스트의 php 디렉토리를 컨테이너의 /var/www/html 디렉토리에 마운트하므로 PHP 애플리케이션이 이 디렉토리의 파일에 액세스할 수 있습니다.

db 서비스는 MariaDB 미러를 사용하고 ROOT 사용자 비밀번호를 설정합니다. 또한 데이터베이스 데이터의 영구 저장을 위해 데이터 디렉터리를 마운트했습니다.

다음으로 Nginx의 가상 호스트 및 로그 관리를 구성하기 위해 Nginx 구성 파일 nginx.conf를 준비해야 합니다. 다음은 간단한 예입니다.

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;
    }
}

위 구성 파일은 포트 80에서 수신 대기하는 localhost라는 가상 호스트를 정의합니다. 액세스 로그와 오류 로그를 각각 /var/log/nginx 디렉터리에 구성했습니다.

다음으로 로그를 구문 분석하고 저장하는 스크립트를 작성해야 합니다. 이 기능을 달성하기 위해 PHP를 사용하여 간단한 스크립트를 작성할 수 있습니다. 예는 다음과 같습니다.

<?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);
}
?>

위 스크립트에서는 간단한 루프를 사용하여 로그 파일을 한 줄씩 읽고 구문 분석된 로그 데이터를 데이터베이스에 저장합니다. 구체적인 구문 분석 및 저장 논리는 실제 상황에 따라 작성되어야 합니다.

마지막으로 로그 구문 분석 및 저장 작업을 정기적으로 수행하려면 이 스크립트를 PHP 애플리케이션에 추가해야 합니다. crontab을 사용하여 예약된 실행을 구현할 수 있습니다. 예는 다음과 같습니다.

# 每分钟执行一次日志解析脚本
* * * * * php /var/www/html/log_parser.php

위 구성을 crontab에 추가하여 매분 log_parser.php 스크립트를 실행합니다.

요약하면 Docker Compose, Nginx 및 MariaDB를 사용하여 PHP 애플리케이션의 모니터링 및 로그 관리를 쉽게 구현할 수 있습니다. Nginx의 가상 호스트 및 로그 관리를 구성하면 특정 디렉터리에 액세스 로그와 오류 로그를 저장할 수 있습니다. 그런 다음 로그를 구문 분석하는 스크립트를 작성하고 이를 PHP 애플리케이션에 추가하면 이 로그 데이터를 정기적으로 구문 분석하고 저장할 수 있습니다. 이렇게 하면 애플리케이션을 쉽게 모니터링하고 문제를 해결할 수 있습니다.

위 내용은 Docker Compose, Nginx 및 MariaDB를 사용하여 PHP 애플리케이션 모니터링 및 로그 관리의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.