こんにちは、リナックス先生です。全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 ユーザーで実行されるようになっていることを確認します。
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 Error や Permission Denied が出続け、パーミッションも正しい場合は SELinux が原因かもしれません。sudo setsebool -P httpd_can_network_connect_db 1 を実行することで、WebサーバーからDBへの通信をSELinuxが許可してくれるようになります。AlmaLinux 10を本番運用するなら、SELinuxを安易にOFFにするのではなく、適切に設定を「通す」のがプロの流儀です。
5. まとめと次回予告
第6回、本当にお疲れ様でした!ついに実用的なWebサーバー環境が完成しました。
- Nginx は
conf.dによる分割管理が運用の基本。 - PHP-FPM とは Unixソケット を介して
nginxユーザー権限で連携させる。 - AppStream を使えば、OSの安定性を損なわず最新のPHPを利用できる。
- mariadb-secure-installation はインストール直後に必ず行う「儀式」。
さて、環境ができあがると次に気になるのは「どれくらいの負荷に耐えられるのか?」「今、リソースは足りているのか?」という点です。トラブルの兆候を事前に察知できなければ、プロとは言えません。
次回の第7回は、「パフォーマンス分析とリソース監視編」です。topやpsといった古典的なツールから、AlmaLinux 10で真価を発揮するeBPFベースの最新ツールまで、サーバーの「健康状態」を可視化する技を徹底解説します。お楽しみに!
▼ サーバー構築・開発を学ぶならVPSで ▼
エンジニア必須の環境
「おすすめVPS」
技術スキルを活かす
「ITエンジニア転職」

コメント