ホームページ >バックエンド開発 >PHPチュートリアル >Nginx と Docker Compose を使用して PHP アプリケーションのデプロイメントを最適化する

Nginx と Docker Compose を使用して PHP アプリケーションのデプロイメントを最適化する

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

使用Nginx和Docker Compose优化PHP应用程序的部署

Nginx と Docker Compose を使用して PHP アプリケーションのデプロイメントを最適化する

はじめに:
インターネットと Web アプリケーションの開発に伴い、PHP は広く普及しました。さまざまな Web サイトやアプリケーションを構築するために広く使用されているプログラミング言語。ただし、従来の導入方法では、煩雑な環境構成、バージョンの競合、容量拡張の困難など、いくつかの課題に直面する可能性があります。この場合、Nginx と Docker Compose を使用すると、PHP アプリケーションのデプロイメントプロセスが大幅に簡素化され、開発者の生産性とアプリケーションの安定性が向上します。

1. Nginx の利点と基本構成

Nginx は、オープンソースの高性能 Web サーバーおよびリバース プロキシ サーバーです。従来の Apache サーバーと比較して、Nginx はメモリ消費量が少なく、同時処理能力が高く、パフォーマンスが優れています。 Nginx の利点は次のとおりです。

  1. 高パフォーマンス: Nginx は、非同期のノンブロッキング イベント駆動型アーキテクチャを採用しており、より低いハードウェア構成で同時に多数の同時接続を処理でき、より速い応答時間を提供します。
  2. リバース プロキシ: Nginx をリバース プロキシ サーバーとして使用すると、クライアントのリクエストを複数の内部アプリケーション サーバーに分散して、全体的な負荷分散とパフォーマンスを向上させることができます。
  3. 高い信頼性: Nginx には、安定した信頼性の高い動作モードと自動障害回復メカニズムがあり、アプリケーションの継続的な可用性を確保できます。

Nginx の基本構成を実行するときは、以下に示すように、単純な nginx.conf ファイルを作成し、それに応じて構成できます。

worker_processes  auto;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    server {
        listen       80;
        server_name  localhost;
        location / {
            root   /usr/share/nginx/html;
            index  index.php;
        }
        location ~ .php$ {
            root           /usr/share/nginx/html;
            fastcgi_pass   PHP_CONTAINER:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }
    }
}

上記の構成ファイルでは、構成ポート 80 をリッスンし、root を通じて Web サイトのルート ディレクトリを指定し、サーバー名は localhost です。リクエストが .php で終わる場合、リクエストは PHP_CONTAINER という名前の PHP コンテナに転送され、リクエストされたファイル名は処理のために PHP コンテナに渡されます。

2. Docker Compose の使用例と例

Docker Compose は、コンテナー化されたアプリケーションのデプロイメントを簡素化し、複数のコンテナーでアプリケーションを定義および管理できるツールです。 Docker Compose は、YAML ファイルを使用してコンテナ間の関係とパラメータを構成し、これらのコンテナを管理するための簡単なコマンドを提供します。以下は docker-compose.yml ファイルの例です:

version: '3'
services:
  web:
    build: .
    ports:
      - 80:80
    volumes:
      - .:/usr/share/nginx/html
    depends_on:
      - php

  php:
    build:
      context: .
      dockerfile: Dockerfile-php
    volumes:
      - .:/var/www/html

  db:
    image: mysql:5.7
    ports:
      - 3306:3306
    environment:
      MYSQL_ROOT_PASSWORD: password
      MYSQL_DATABASE: mydatabase

上の例では、web、php、db の 3 つのサービスを定義しました。 Web サービスは Dockerfile を使用して Nginx コンテナを構築し、ホストの現在のディレクトリをコンテナの /usr/share/nginx/html ディレクトリにマップし、コンテナのポート 80 をホストのポート 80 にマップします。 php サービスは Dockerfile-php を使用して PHP コンテナを構築し、ホストの現在のディレクトリをコンテナの /var/www/html ディレクトリにマップします。 db サービスは、mysql:5.7 イメージを使用して MySQL コンテナを構築し、コンテナの 3306 ポートをホストの 3306 ポートにマップします。

3. Nginx および PHP アプリケーションを Docker Compose に統合する

次に、Nginx および PHP コンテナーを構築するために、対応する Dockerfile を作成する必要があります。以下は Dockerfile の例です:

# 构建Nginx容器
FROM nginx:latest

# 将宿主机的配置文件复制到容器中
COPY nginx.conf /etc/nginx/conf.d/default.conf

# 定义容器启动时执行的命令
CMD ["nginx", "-g", "daemon off;"]

# 构建PHP容器
FROM php:7.4-fpm

# 安装PHP扩展和依赖库
RUN docker-php-ext-install pdo_mysql

# 定义容器启动时执行的命令
CMD ["php-fpm"]

上記の Dockerfile の例では、まず nginx:latest イメージを使用して Nginx コンテナを構築し、ホストの構成ファイルをコンテナにコピーしてから、php:7.4- を使用します。 fpm イメージは PHP コンテナを構築し、pdo_mysql 拡張機能とその他の依存ライブラリをインストールします。

4. Docker Compose を使用して PHP アプリケーションをデプロイする

上記の構成と定義を完了すると、Docker Compose を使用して PHP アプリケーションをデプロイできます。まず、アプリケーションのルート ディレクトリに docker-compose.yml ファイルを作成し、上記の例の内容をそのファイルにコピーします。次に、コマンド ラインで次のコマンドを実行して、コンテナーを構築して起動します。

docker-compose build
docker-compose up -d

これらのコマンドは、必要なイメージを構築し、コンテナーを起動します。 http://localhost にアクセスすると、デプロイされた PHP アプリケーションにアクセスできます。

概要:
Nginx と Docker Compose を使用して PHP アプリケーションのデプロイメントを最適化すると、デプロイメント プロセスが大幅に簡素化され、開発者の生産性とアプリケーションの安定性が向上します。 Nginx には、高性能 Web サーバーおよびリバース プロキシ サーバーとして多くの利点があり、コンテナ化されたアプリケーションのデプロイメント ツールとしての Docker Compose は、複数のコンテナをより簡単に管理できます。この方法で PHP アプリケーションをデプロイすると、開発プロセスがより効率的になり、アプリケーションの拡張と保守が容易になります。

以上がNginx と Docker Compose を使用して PHP アプリケーションのデプロイメントを最適化するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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