[2024年版]AWSのEC2にPHP+Nginx+phpMyAdminの環境を構築する
はじめに
本記事では、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/html
に phpMyAdmin
ディレクトリを作成し、その中にファイルを展開します。
$ 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