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

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

Oct 12, 2023 am 11:51 AM
nginx mariadb 감시 장치 로그 관리 docker compose

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

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

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

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

다음으로 애플리케이션의 전체 환경을 정의하기 위해 Docker Compose 파일을 작성해야 합니다. 이 파일에서는 Nginx, PHP 및 MariaDB의 세 가지 서비스를 정의해야 합니다.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

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를 준비해야 합니다. 다음은 간단한 예입니다.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

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를 사용하여 간단한 스크립트를 작성할 수 있습니다. 예는 다음과 같습니다.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

<?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을 사용하여 예약된 실행을 구현할 수 있습니다. 예는 다음과 같습니다.

1

2

# 每分钟执行一次日志解析脚本

* * * * * 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으로 문의하세요.

뜨거운 기사 태그

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Tomcat 서버에 대한 외부 네트워크 액세스를 허용하는 방법 Tomcat 서버에 대한 외부 네트워크 액세스를 허용하는 방법 Apr 21, 2024 am 07:22 AM

Tomcat 서버에 대한 외부 네트워크 액세스를 허용하는 방법

nginx 시작 및 중지 명령은 무엇입니까? nginx 시작 및 중지 명령은 무엇입니까? Apr 02, 2024 pm 08:45 PM

nginx 시작 및 중지 명령은 무엇입니까?

thinkphp를 실행하는 방법 thinkphp를 실행하는 방법 Apr 09, 2024 pm 05:39 PM

thinkphp를 실행하는 방법

nginx에 오신 것을 환영합니다! 어떻게 해결하나요? nginx에 오신 것을 환영합니다! 어떻게 해결하나요? Apr 17, 2024 am 05:12 AM

nginx에 오신 것을 환영합니다! 어떻게 해결하나요?

phpmyadmin을 등록하는 방법 phpmyadmin을 등록하는 방법 Apr 07, 2024 pm 02:45 PM

phpmyadmin을 등록하는 방법

nodejs 프로젝트를 서버에 배포하는 방법 nodejs 프로젝트를 서버에 배포하는 방법 Apr 21, 2024 am 04:40 AM

nodejs 프로젝트를 서버에 배포하는 방법

웹사이트에 접속할 때 nginx 문제를 해결하는 방법 웹사이트에 접속할 때 nginx 문제를 해결하는 방법 Apr 02, 2024 pm 08:39 PM

웹사이트에 접속할 때 nginx 문제를 해결하는 방법

도커 컨테이너 간 통신 방법 도커 컨테이너 간 통신 방법 Apr 07, 2024 pm 06:24 PM

도커 컨테이너 간 통신 방법

See all articles