✅ この記事で理解できること
- WebサイトとWebサービスの違い
- ブラウザ → サーバー → DB の実行フロー
- Webサーバー、アプリケーションサーバー、DBサーバーの役割
- FastCGI・php-fpmとは何か?
✅ 用語の前提整理
用語 |
説明 |
Webサイト |
静的なHTML・画像・CSSなどをブラウザに表示(例:企業サイト) |
Webサービス(Webアプリケーション) |
ログイン・投稿・購入など、ユーザーの操作で動的に変化するサービス(例:ECサイト、SNS) |
API |
フロントエンドとバックエンドが通信するためのインターフェース(URL形式)。JSONを返すことが多い |
サーバー |
ソフトウェアやデータを処理・提供するコンピュータまたはプロセス |
✅ Webサイト vs Webサービスの処理フロー
🔷 A. Webサイト(静的HTML)の流れ
[1] ブラウザが https://example.com にアクセス
↓
[2] Webサーバー(Apache/Nginx)が HTML ファイルを返す
↓
[3] ブラウザが表示(HTML+CSS+画像)
- HTMLやCSS、画像ファイルは ファイルとして保存されている
- PHPやDBなどの動的処理は発生しない(静的)
🔷 B. Webサービス(動的アプリケーション)の流れ
[1] ブラウザでログインボタンを押す
↓
[2] JavaScript が API(例:/api/login)にリクエスト送信
↓
[3] Webサーバー(NginxやApache)がリクエストを受ける
↓
[4] Webサーバーが FastCGI 経由で php-fpm に処理を渡す
↓
[5] PHP(Laravelなど)がリクエストを処理
↓
[6] DBサーバーと通信し、ユーザー情報などを取得
↓
[7] PHPがJSONで結果を返す
↓
[8] Webサーバー → ブラウザへレスポンス返却
↓
[9] ブラウザがJavaScriptで画面を更新(Vue, Reactなど)
✅ 関わるサーバーの種類と役割
サーバーの種類 |
具体例 |
主な役割 |
Webサーバー |
Nginx, Apache |
HTTP通信の受付、ルーティング、静的ファイル提供 |
アプリケーションサーバー |
php-fpm, Node.js |
PHPなどのプログラムを実行 |
DBサーバー |
MySQL, PostgreSQL |
ユーザー情報・商品データなどを保存・提供 |
静的配信サーバー |
S3, Netlify, Vercel |
HTML/CSS/JS/画像などの配信(SPAなど) |
※上記でWebサーバーとアプリケーションサーバーとDBサーバーと分けられていますが、これは物理的にサーバーが別れているとは限りません。
分ける場合もありますが(AWSなどを使っていると別けて処理する場合が多い)、プロセスとして分離されている場合もあります。
✅ Laravel + Vue/Nuxt 構成の場合の流れ
[ ブラウザ ]
↓ HTML表示 or API通信
[ Webサーバー(Nginx) ]
↓ FastCGI(通信プロトコル)
[ PHP実行エンジン(php-fpm) ]
↓ PHPアプリ(Laravelなど)
↓ DBアクセス(MySQLなど)
↓ 結果をJSONで返す
✅ FastCGI / php-fpm とは?
-
FastCGI:Webサーバーとアプリケーション(PHPなど)を分離して通信するための仕組み(プロトコル)
-
php-fpm:PHPをFastCGIとして実行するプロセスマネージャ
- Webサーバー(Nginx等)とは別プロセスでPHPが実行されるため、パフォーマンスと安定性が高い
✅ なぜ「WebサーバーとPHP」を分離するのか?
課題(旧来のmod_php) |
解決策(FastCGI + php-fpm) |
ApacheがPHPも処理→高負荷で不安定 |
PHPを別プロセスに分離し、高速で安定 |
メンテやスケーリングが難しい |
PHPを自由にスケール、独立管理しやすい |
モダン構成と乖離 |
FastCGIは本番構成の標準的手法 |
✅ 結論まとめ
- Webサイト=HTML等の静的ファイルを返すだけ
- Webサービス=JavaScriptがAPIを叩き、PHP(Laravelなど)が動的に処理
- WebサーバーとPHPを分離することで、スケーラビリティと保守性が向上
- FastCGI + php-fpm構成は、Laravel開発や本番運用でのベストプラクティス
✅ おまけ:どのように使い分ける?
条件 |
推奨構成 |
静的Webサイト(コーポレートなど) |
HTML/CSS + Apache or Netlify |
API付きWebサービス(SPA, Laravel) |
Nginx + php-fpm(Laravel) + Vue/Nuxt(SPA) |
本番構成と揃えたい |
DockerやAWSでFastCGI構成にするのが◎ |
理解を深めることで、Docker構成、インフラ設計、Laravel×Vueの連携にも自信が持てるようになります!