【第6回】Web・DBサーバー構築(LEMPスタック):AppStreamを活用したプロの環境構築術

こんにちは、リナックス先生です。全8回の連載もいよいよ第6回、後半戦の山場を迎えました。第5回までで、OSの基礎、セキュリティ、パッケージ管理、サービス管理、そしてネットワーク制御を網羅しました。いわば「頑丈な土台」が完成した状態です。

第6回のテーマは、その土台の上で動かす「アプリケーション基盤」の構築、すなわちLEMPスタック(Linux, Nginx, MariaDB, PHP)の構築です。AlmaLinux 10が提供する最新のパッケージ群を、いかにして安全かつ効率的に組み合わせ、1つのWebシステムとして昇華させるか。AppStreamという強力な仕組みをフル活用した、プロの構築手順を伝授します。

コウ君

先生!ついにWebサーバー作りですね。以前、別のOSでApacheを入れたことがあるんですけど、今は「Nginx(エンジンエックス)」が主流なんですか?あと、PHPをDBに繋ぐ設定でいつもエラーが出て心折れちゃうんです……。

リナックス先生

いい視点ね、コウ君。軽量・高速なNginxは現代のWeb開発では欠かせない存在よ。LEMPスタックは、サービスが分かれている分、各プロセス(NginxとPHP-FPMなど)がどうやって「会話(ソケット通信)」しているかを理解するのが肝心なの。今日はエラーで立ち往生しないよう、一つ一つの繋ぎ込みを丁寧に解説するわよ!

【全8回】AlmaLinux 10 徹底攻略:次世代サーバー構築・運用講座

  • 第1回:AlmaLinux 10 爆速構築編
  • 第2回:初期設定と次世代セキュリティ編
  • 第3回:DNFとパッケージ管理の深淵編
  • 第4回:systemdと現代的なサービス管理編
  • 第5回:ネットワーク制御とnftables編
  • ▶ 第6回:Web・DBサーバー構築(LEMPスタック)編(今ここ!)
  • 第7回:パフォーマンス分析とリソース監視編
  • 第8回:自動化とバックアップの極意編

1. LEMPスタックの構成とAlmaLinux 10での利点

LEMPとは、OSのLinux、WebサーバーのNginx(エンジンエックス=E)、データベースのMariaDB(またはMySQL)、プログラミング言語のPHP(またはPython, Perl)を組み合わせた技術スタックです。

AlmaLinux 10でこれらを構築する最大の利点は、AppStreamによって「安定性と最新性」を両立できることです。例えば、OS自体の寿命は長く保ちつつ、PHPだけを最新の8.3や8.4(リリース状況による)へ切り替えるといった柔軟な運用が可能になります。また、第3回で紹介したDNF 5のおかげで、これら膨大な依存関係を持つスタックのインストールも一瞬で完了します。


2. Nginxのインストールと仮想ホスト設定の急所

まずはフロントエンドとなるNginxを導入します。Apacheと異なり、Nginxは「リバースプロキシ」としても動作するため、非常に高い同時接続処理能力を誇ります。

2-1. インストールと起動

# Nginxのインストール
sudo dnf install -y nginx

# 起動と自動起動設定
sudo systemctl enable --now nginx

# 第5回で学んだfirewalldで通信を許可
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload

2-2. 構造的な設定ファイルの管理

プロの現場では /etc/nginx/nginx.conf を直接汚すことはしません。サイトごとの設定(仮想ホスト)を conf.d ディレクトリに切り出します。

# テストサイト用の設定作成
sudo vi /etc/nginx/conf.d/test-site.conf

【設定内容】(省略せずに記述)

server {
    listen       80;
    server_name  Your_IP_Address;
    root         /usr/share/nginx/html;
    index        index.php index.html index.htm;

    location / {
        try_files $uri $uri/ =404;
    }

    # PHP-FPMとの連携設定(後で重要になる!)
    location ~ \.php$ {
        fastcgi_pass   unix:/run/php-fpm/www.sock;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
}

3. PHP 8.xとPHP-FPM:Unixソケットによる高速連携

Nginx単体ではPHPを解釈できません。そこでPHP-FPM(FastCGI Process Manager)という独立したプロセスと通信させます。

3-1. PHP 8.xの導入

# 利用可能なPHPモジュールを確認
dnf module list php

# 最新のストリームを有効化(例:8.3)
sudo dnf module enable php:8.3 -y

# PHP-FPMとDB接続用の拡張をインストール
sudo dnf install -y php php-fpm php-mysqlnd php-gd php-json

3-2. PHP-FPMの設定:Unixソケットの最適化

デフォルトではTCP(127.0.0.1:9000)で通信する場合もありますが、同一サーバー内なら「Unixドメインソケット」の方がオーバーヘッドが少なく高速です。AlmaLinux 10のデフォルトはソケットですが、権限設定を必ず確認しましょう。

# 設定ファイルの編集
sudo vi /etc/php-fpm.d/www.conf

以下の箇所が nginx ユーザーで実行されるようになっていることを確認します。

PR

Linuxで快適PCライフ [ 日向俊二 ]

価格:3080円
(2026/7/17 19:10時点)
感想(0件)

user = nginx
group = nginx
listen = /run/php-fpm/www.sock
listen.owner = nginx
listen.group = nginx
listen.mode = 0660
# サービスの起動
sudo systemctl enable --now php-fpm
# 設定反映のためにNginxも再起動
sudo systemctl restart nginx

⚠️ トラブルシューティング / 注意点
PHP-FPMを起動しても 502 Bad Gateway が出る場合、大抵は /run/php-fpm/www.sock の所有者権限ミスです。Nginxがこのソケットファイルを読み書きできる権限(nginxユーザー)を持っているか、ls -l /run/php-fpm/www.sock で必ず確認しましょう。


4. MariaDBの堅牢化とデータベース接続テスト

最後に、データを保存するMariaDBをセットアップします。

4-1. インストールと初期セキュリティ設定

sudo dnf install -y mariadb-server
sudo systemctl enable --now mariadb

# 【必須】初期セキュリティセットアップ
sudo mariadb-secure-installation

※rootパスワードの設定、匿名ユーザーの削除、リモートrootログインの禁止など、すべて「Y」で答えるのがプロの基本です。

4-2. PHPからDBへの接続テスト

インフラエンジニアとして、構築したスタックが正しく連携できているか、1つのPHPスクリプトでテストします。

sudo vi /usr/share/nginx/html/test.php

【テストコード】

<?php
$dsn = 'mysql:host=localhost;dbname=mysql';
$user = 'root';
$password = 'あなたのパスワード';

try {
    $dbh = new PDO($dsn, $user, $password);
    echo "LEMPスタック完全稼働中! MariaDBへの接続に成功しました。";
} catch (PDOException $e) {
    echo "接続失敗: " . $e->getMessage();
}
?>

ブラウザで http://サーバーIP/test.php にアクセスし、成功メッセージが出れば完了です!

💡 プロのノウハウ:SELinuxとの戦い
もし 500 ErrorPermission Denied が出続け、パーミッションも正しい場合は SELinux が原因かもしれません。sudo setsebool -P httpd_can_network_connect_db 1 を実行することで、WebサーバーからDBへの通信をSELinuxが許可してくれるようになります。AlmaLinux 10を本番運用するなら、SELinuxを安易にOFFにするのではなく、適切に設定を「通す」のがプロの流儀です。


5. まとめと次回予告

第6回、本当にお疲れ様でした!ついに実用的なWebサーバー環境が完成しました。

  • Nginxconf.d による分割管理が運用の基本。
  • PHP-FPM とは Unixソケット を介して nginx ユーザー権限で連携させる。
  • AppStream を使えば、OSの安定性を損なわず最新のPHPを利用できる。
  • mariadb-secure-installation はインストール直後に必ず行う「儀式」。

さて、環境ができあがると次に気になるのは「どれくらいの負荷に耐えられるのか?」「今、リソースは足りているのか?」という点です。トラブルの兆候を事前に察知できなければ、プロとは言えません。

次回の第7回は、「パフォーマンス分析とリソース監視編」です。topやpsといった古典的なツールから、AlmaLinux 10で真価を発揮するeBPFベースの最新ツールまで、サーバーの「健康状態」を可視化する技を徹底解説します。お楽しみに!

▼ サーバー構築・開発を学ぶならVPSで ▼

エンジニア必須の環境
「おすすめVPS」

VPSランキングを見る

技術スキルを活かす
「ITエンジニア転職」

転職エージェントを見る

コメント