🗂

[2024年版]AWSのEC2にPHP+Nginx+phpMyAdminの環境を構築する

2024/09/26に公開

はじめに

本記事では、EC2上で Nginx と PHP、および phpMyAdmin をインストールし、MySQL データベースとの接続を行う手順を紹介します。実際にコマンドを実行しながら、各設定の意味や注意点も含めて解説します。


環境

  • OS: Amazon Linux 2023

yumのアップデート

はじめに、Linuxのパッケージ管理ツール yum を使って、システムのアップデートを行います。

$ sudo yum -y update

1. Nginxのインストール

Nginxをインストールします。

$ sudo yum -y install nginx

次に、Nginxのバージョンを確認します。

$ nginx -V
nginx version: nginx/1.24.0

Nginxを自動起動する設定を行い、インスタンス再起動時にNginxが自動で起動するようにします。

$ sudo systemctl start nginx.service
$ sudo systemctl enable nginx.service

2. PHPのインストール

Amazon Linuxでは amazon-linux-extras が利用できないため、yum を使用してPHPをインストールします。2024年9月現在では、PHP 8.3がインストールされます。

$ sudo yum install php php-fpm php-mysqli php-mbstring php-pear

PHPモジュールの説明

  • php-fpm
    NginxはPHPを直接処理できないため、php-fpm がNginxとPHPの橋渡しを行います。

  • php-mysqli
    MySQLデータベースとPHPを接続するためのモジュールです。

  • php-mbstring
    PHPで日本語などのマルチバイト文字を扱うためのモジュールです。

  • php-pear
    PHP用のライブラリやモジュールを管理するためのパッケージ管理システムです。

PHPのバージョンを確認します。

$ php -v 
PHP 8.3.10 (cli) (built: Jul 30 2024 13:44:37) (NTS gcc x86_64)
Copyright (c) The PHP Group
Zend Engine v4.3.10, Copyright (c) Zend Technologies
    with Zend OPcache v8.3.10, Copyright (c), by Zend Technologies

自動起動の設定も行います。

$ sudo systemctl start php-fpm.service
$ sudo systemctl enable php-fpm.service

PHPとNginxの紐付け

PHPとNginxを紐付けるために、www.conf という php-fpm の設定ファイルを編集します。

$ cd /etc/php-fpm.d/
$ sudo vi www.conf

以下の部分で、ユーザーとグループを apache から nginx に変更します。

; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
;       will be used.
- user = apache
+ user = nginx
- group = apache
+ group = nginx

変更後、php-fpm を再起動します。

$ sudo systemctl restart php-fpm.service

PHPの接続確認

PHPの接続確認を行います。phpinfo() を表示させるために、NginxのドキュメントルートにPHPファイルを作成します。

$ sudo su
$ echo '<?php phpinfo(); ?>' > /usr/share/nginx/html/index.php

ブラウザで パブリックDNS/index.php にアクセスし、phpinfo() が表示されれば接続確認完了です。


3. phpMyAdminのインストール

次に、phpMyAdminをインストールします。まず、/usr/share/nginx/htmlphpMyAdmin ディレクトリを作成し、その中にファイルを展開します。

$ cd /usr/share/nginx/html/
$ sudo mkdir phpMyAdmin
$ cd phpMyAdmin
$ sudo wget https://www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.tar.gz
$ sudo tar -xvzf phpMyAdmin-latest-all-languages.tar.gz --strip-components 1

ブラウザで パブリックDNS/phpMyAdmin にアクセスします。エラーが表示される場合があります。

パーミッションエラー修正

以下のようなエラーが出た場合:

Error during session start; please check your PHP and/or webserver log file and configure your PHP installation properly. Also ensure that cookies are enabled in your browser.
session_start(): open(SESSION_FILE, O_RDWR) failed: Permission denied (13)

/var/lib/php/session の権限が足りていないため、権限を修正します。

$ sudo chown nginx. /var/lib/php/session

phpMyAdminでDBの接続先情報を設定

次に、config.sample.inc.php を元に、DB接続情報を設定します。

$ cd /usr/share/nginx/html/phpMyAdmin
$ sudo cp -p config.sample.inc.php config.inc.php
$ sudo vi config.inc.php

DBのホストを自分のDBエンドポイントに修正します。

$cfg['Servers'][$i]['host'] = 'localhost';

最後に、ブラウザで再度 パブリックDNS/phpMyAdmin にアクセスし、ユーザー名とパスワードを入力してログインできれば完了です。


終わりに

今回の記事では、EC2上でNginxとPHP、さらにphpMyAdminを利用してデータベースを管理する環境構築の基本手順をまとめました。正直なところ、この記事を書くにあたり、ネット上にある多くの情報が古かったり、バージョンが異なっていたりと、たくさんの調査と試行錯誤を繰り返しました。最新の環境に対応した情報がなかなか見つからず、スムーズに進められないこともありましたが、少しずつ組み上げていくことで理解が深まりました。この記事が、同じように新しいバージョンに対応した情報を探している方々の助けになれば幸いです。

Discussion