LNMPスタック完全ガイド:Nginx・MySQL/MariaDB・PHP-FPMの導入と最適化
概要 — LNMPとは何か
LNMPは、Linux(L),Nginx(N),MySQL/MariaDB(M),PHP(P)で構成されるWebサーバースタックの総称です。従来のLAMP(Apache)と比べて、Nginxのイベント駆動型アーキテクチャにより高い同時接続処理能力を持ち、リバースプロキシやロードバランサとしても優れています。PHPは通常PHP-FPM(FastCGI Process Manager)で動作させ、MySQLの代わりに互換性の高いMariaDBを使うことも一般的です。
各コンポーネントの役割詳細
Linux:基盤OS。Ubuntu、Debian、CentOS、Rocky Linuxなどが採用されます。パッケージ管理(apt/yum/dnf)やsystemd、ネットワーク、カーネルパラメータが運用に影響します。
Nginx:リバースプロキシ/HTTPサーバ。イベント駆動で低メモリ・高スループットが特徴。静的配信、TLS終端、ロードバランス、FastCGIプロキシとして使用します。
MySQL / MariaDB:RDBMS。トランザクション処理にはInnoDBが標準。MariaDBはフォークで互換性・機能差があります。運用に応じてレプリケーションやクラスタ化を検討します。
PHP-FPM:PHPのFastCGI実装。プロセスマネージャによってワーカープロセスを管理し、NginxからFastCGI経由でリクエストを受けます。プール設定でプロセス数やユーザ、ソケット/TCPの指定を行います。
LNMPのリクエストフロー
クライアント→Nginx(TLS終端、静的配信、キャッシュ判定)→FastCGI(php-fpm)→アプリケーション(WordPress等)→DB(MySQL/MariaDB)。Nginxでキャッシュやgzip/Brotli圧縮、HTTPヘッダを制御し、バックエンド負荷を低減します。
導入の基本手順(高レベル)
OS選定(Ubuntu LTS/Debian/CentOS系)と初期セキュリティ設定(ファイアウォール、ユーザ管理)
Nginxインストール(公式リポジトリ推奨、mainline/stableを選択)
PHP-FPMインストール(PHP 8系を推奨)。必要な拡張(pdo_mysql, mbstring, opcache など)を追加
MySQLまたはMariaDBインストール。初期rootパスワード設定、bind-addressやリモート接続制限
Nginxでserver blockを作成し、php-fpmへfastcgi_passで接続。TLSはLet's Encryptで自動更新
よく使うNginx設定例(サンプル)
下記は基本的なserverブロックの例です(Unixソケット使用)。
server {
listen 80;
server_name example.com www.example.com;
root /var/www/example.com/public;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
location ~ /\.ht {
deny all;
}
}
PHP-FPMのポイント
プール設定(/etc/php/*/fpm/pool.d/*.conf)でpm = dynamic/static/ondemand を選択。動的なサイトは dynamic、メモリ節約が重要なら ondemand を検討します。
pm.max_children は利用可能メモリと1プロセス当たりメモリ量を基に計算。過小はスループット低下、過大はスワップによる性能劣化を招きます。
opcache 有効化はPHPアプリの性能向上に有効。opcache.memory_consumption や revalidate_freq を適切に設定します。
MySQL/MariaDBのチューニング要点
innodb_buffer_pool_size:専用DBサーバでは物理メモリの70〜80%を目安に設定(複合用途のサーバは調整)。
max_connections はアプリの同時DB接続数に合わせる。ただし高値にするとメモリ消費が増える。
Query CacheはMySQL 8で削除されているため、最新バージョンでは使わない。キャッシュはアプリレイヤ(Redis等)や運用設計で実現。
スロークエリログを有効化して遅いクエリを特定。explain でインデックス最適化を行う。
パフォーマンス最適化の実践技術
Nginx:worker_processes auto、worker_connections は適切に設定。sendfile、tcp_nopush、tcp_nodelay 有効化でIO効率改善。
圧縮:gzip あるいは Brotli を利用。Brotliは静的コンテンツに効果的。
キャッシュ:Nginxのfastcgi_cache や proxy_cache、あるいは外部にVarnish/Redisを導入。WordPress等はオブジェクトキャッシュを有効化。
TLS:Let's Encryptで自動更新し、HTTP/2を有効化。HTTP/3はNginxのビルドやバージョンによる対応状況を確認。
セキュリティ運用上の注意
OSとパッケージは定期的にアップデートし、サポート期間のあるバージョンを使用。
ファイアウォール(ufw、firewalld)で不要ポートを閉じる。SSHは鍵認証、rootログイン禁止。
MySQLはrootのリモート接続を無効化し、必要なアクセスにのみアカウントを発行。権限は最小権限の原則。
NginxではTLS設定を最新の暗号スイートやプロトコルに合わせ、古い弱い設定を無効化。OCSP stapling、HSTSの利用も検討。
SELinux/AppArmorのポリシーを確認。誤設定でphp-fpmやNginxからソケットやディレクトリへアクセスできなくなることがある。
可用性とスケーラビリティ
スケールアウト:フロントにロードバランサ(Nginx cluster、HAProxy、クラウドLB)、アプリ層を複数台にし、セッションはステートレス化 or Redisで共有。DBはレプリケーション(Master-Slave)やGaleraクラスタ、ProxySQLなどで読み取り分散やフェイルオーバーを実現します。バックアップとフェイルオーバーテストは必須です。
運用と監視
ログ監視:Nginxのaccess/error、php-fpmログ、MySQLのエラーログとスロークエリログを収集。
メトリクス収集:Prometheus + Grafana、Percona Monitoring and Management、Datadog等を利用し、レスポンス時間、CPU/メモリ、接続数、クエリ遅延を可視化。
定期的な負荷試験と障害シミュレーションでボトルネックを特定。
コンテナ化・クラウド化の考え方
DockerやKubernetesでLNMPを構築するケースが増えています。公式イメージ(nginx, php, mariadb/mysql)を利用すれば環境の再現性が高まりますが、ストレージ(永続ボリューム)、ネットワーク、秘密情報管理、リソース上限の設定に注意が必要です。クラウドではマネージドDB(RDS、Cloud SQL等)を利用して運用負荷を下げる選択肢も有効です。
トラブルシューティング・FAQ
502 Bad Gateway:php-fpmが落ちている、ソケットパスが間違っている、ファイル権限が原因であることが多い。systemctl status php*-fpm を確認。
504 Gateway Timeout:バックエンド処理が長時間かかっている。fastcgi_read_timeout を一時的に延長し、原因のクエリや処理を最適化。
高メモリ消費:php-fpm のpm設定や個々のPHPスクリプトのメモリリークを疑う。opcache設定や不必要な拡張の削除も有効。
導入チェックリスト
OSとパッケージのサポート期限を確認
php-fpm のプロセス数・メモリ計算
MySQLのinnodb_buffer_pool_size 設定
NginxでTLS、HTTP/2、gzip/Brotli、キャッシュ設定
バックアップスケジュールとリストア手順の検証
監視・アラート設定の導入
まとめ
LNMPは高性能・高効率なWebスタックの基本形であり、Nginxの非同期処理、PHP-FPMの柔軟なプロセスマネジメント、MySQL/MariaDBの堅牢なストレージが組み合わさることで、多様なWebアプリケーションに適応します。導入時はパラメータチューニング、セキュリティ対策、運用監視をセットで設計することが成功の鍵です。
参考文献
投稿者プロフィール
最新の投稿
建築・土木2025.12.25主幹ブレーカーのすべて:設計・選定・保守の実務ガイド(建築・土木向け)
建築・土木2025.12.25建設業で使う「実勢単価」とは──算出方法・注意点・実務での活用法を徹底解説
建築・土木2025.12.25実施設計図の全貌:作成手順・構成・現場での活用とチェックポイント
建築・土木2025.12.25実行予算の作り方と運用法|建築・土木プロのための完全ガイド

