ホームページ  >  記事  >  バックエンド開発  >  Docker Compose、Nginx、MariaDB を使用した PHP アプリケーションの監視とログ管理

Docker Compose、Nginx、MariaDB を使用した PHP アプリケーションの監視とログ管理

WBOY
WBOYオリジナル
2023-10-12 11:51:12694ブラウズ

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

Docker Compose、Nginx、MariaDB を使用して PHP アプリケーションの監視とログ管理を実装する

Web アプリケーションを開発および運用する場合、監視とログ管理は非常に重要な重要な部分です。 Docker Compose、Nginx、MariaDB を使用すると、完全な監視およびログ管理ソリューションを実装できます。

まず、PHP アプリケーションを準備し、Docker イメージとして記述する必要があります。この PHP アプリケーションは、単純な静的ページ、または PHP コードを含む動的アプリケーションにすることができます。どちらであっても、Docker イメージにパッケージ化する必要があります。

次に、アプリケーションの環境全体を定義するために Docker Compose ファイルを作成する必要があります。このファイルでは、Nginx、PHP、MariaDB の 3 つのサービスを定義する必要があります。

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 の 3 つのサービスを定義しました。 Web サービスは Nginx イメージを使用し、ホストのポート 80 をコンテナ内のポート 80 にバインドします。また、Nginx 構成ファイル nginx.conf のマウント パスとログ ファイル ディレクトリ logs も指定しました。

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

上記のスクリプトでは、単純なループを使用してログ ファイルを 1 行ずつ読み取り、解析されたログ データをデータベースに保存します。特定の解析および保存ロジックは、実際の状況に応じて作成する必要があります。

最後に、ログ解析とストレージ操作を定期的に実行するために、このスクリプトを 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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。