0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

FastCGIとは何か?

Last updated at Posted at 2025-05-18

✅ 1. 背景:CGIとは何か?

まずは前提となる「CGI(Common Gateway Interface)」から整理します。

🔹 CGI(旧来の仕組み)

  • Webサーバーが .php.pl などの動的なスクリプトを実行するために、リクエストごとに外部プログラムを起動していた方式
  • 毎回「PHPを起動 → 実行 → 終了」を繰り返すため、非常に遅く、負荷が大きい

✅ 2. FastCGI とは?

▶ CGI の「高速版」

FastCGI は、Webサーバーがアプリケーション(PHPなど)にリクエストを高速に渡すための通信プロトコルです。


🔧 仕組み(ざっくり)

  • Webサーバー(NginxやApache)は、FastCGIプロトコルを使ってリクエストをPHP実行エンジンに渡す
  • PHP側には、php-fpm というプロセスマネージャが常駐していて、リクエストを待ち受けている
  • つまり:
    • 毎回PHPを起動するのではなく
    • 常駐しているPHPプロセスに繰り返しリクエストを送る

✅ 3. なぜFastCGIが重要なのか?

課題(CGI) 解決策(FastCGI)
毎回PHPを起動するため遅い PHPプロセスを常駐させておき、高速に処理
起動・終了にコストがかかる リクエストだけを渡して処理を続けられる
スケーラブルでない プロセス管理ができ、並列処理も可能
安定性に欠ける プロセスごとに監視・再起動などの制御が可能

✅ 4. FastCGI を使う構成例(Laravel)

[ ブラウザ ]
     ↓ HTTP
[ Webサーバー(Nginx) ]
     ↓ FastCGI(通信プロトコル)
[ PHP実行エンジン(php-fpm) ]
     ↓
[ Laravelアプリケーション ]
     ↓
[ DBサーバー(MySQLなど) ]

✅ 5. FastCGIで通信する方法(2パターン)

通信方法 説明
Unixソケット 同じマシン内で通信(例: /run/php/php8.2-fpm.sock
TCPソケット 異なるホスト間やDockerコンテナ間で通信(例: 127.0.0.1:9000

✅ 6. php-fpmとは?

  • 「FastCGI Process Manager」の略
  • PHPのリクエストを処理するFastCGI対応の実行エンジン
  • LaravelやWordPressなど、PHPアプリの実行に使用される
  • php.iniとは別に、php-fpm.confwww.conf により細かいプロセス制御が可能

✅ FastCGI vs mod_php

項目 FastCGI(php-fpm) mod_php(Apache)
処理方法 外部プロセスに渡す Apacheが直接実行
性能 高速・分離型 単純・柔軟性に欠ける
スケーラビリティ
本番適用 ◎(現在の主流) △(古い)

✅ FastCGIまとめ

観点 内容
目的 WebサーバーとPHPなどを分離・高速に連携するため
通信方式 FastCGIプロトコル(Unixソケット or TCP)
実行エンジン php-fpm(FastCGI対応)
使う理由 高速・安定・スケーラブルで本番運用に最適

✅ FastCGIを使った典型構成(Laravel開発やDockerでも)

  • Webサーバー:Nginx
  • アプリ実行:php-fpm(Laravelなど)
  • DB:MySQL/PostgreSQL
[Nginx] → FastCGI → [php-fpm] → Laravel
                              ↓
                           [MySQL]

✅ 補足:FastCGI以外の選択肢

選択肢 状況
mod_php Apacheで直接PHPを処理(古い構成)
Proxy Node.jsなどではHTTPプロキシでリクエストを転送

FastCGIは特にPHP界隈(Laravel, WordPressなど)で現在も主流の手法です。


✅ まとめ

  • FastCGIはPHPを高速かつ安定的に実行するための通信方式
  • Webサーバーとは分離されているが、プロセス間通信で高速処理が可能
  • 本番環境・Docker構築・モダン開発環境ではFastCGI + php-fpmがベストプラクティス
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?