【AWS】EC2のAmazon Linux 2にnginx・php-fpmでPHP実行環境構築
※本ページのリンクにはプロモーションが含まれています。
こんにちは、Ryohei(@ityryohei)です!
最初に
本記事の目的
パブリックDNSにアクセスしてphpinfo()を表示する(PHPを実行する)までとなります。
前提条件
- パブリックDNSが設定済みであること
- Amazon Linux 2の既存ユーザー(ec2-user)でSSH接続ができる状態であること
インストールするトピック
- nginx(1.12.2)
- php(7.2.11)
- php-fpm
作業環境
- OS:Amazon Linux2
- AMI ID:amzn2-ami-hvm-2.0.20181114-x86_64-gp2 (ami-0a2de1c3b415889d2)
SSHログイン後にやっておくこと
yumのパッケージ更新
$ sudo yum update
タイムゾーン確認・変更
# タイムゾーン確認 $ timedatectl status Local time: Wed 2019-01-09 07:29:04 UTC Universal time: Wed 2019-01-09 07:29:04 UTC RTC time: Wed 2019-01-09 07:29:04 Time zone: n/a (UTC, +0000) NTP enabled: yes NTP synchronized: no RTC in local TZ: no DST active: n/a # タイムゾーンを日本時間に設定 $ sudo timedatectl set-timezone Asia/Tokyo # 変更後のタイムゾーン確認 $ timedatectl status Local time: Wed 2019-01-09 16:29:36 JST Universal time: Wed 2019-01-09 07:29:36 UTC RTC time: Wed 2019-01-09 07:29:35 Time zone: Asia/Tokyo (JST, +0900) NTP enabled: yes NTP synchronized: no RTC in local TZ: no DST active: n/a
ロケール確認・変更
# ロケール確認 $ localectl status System Locale: LANG=en VC Keymap: n/a X11 Layout: n/a # ロケール変更 $ sudo localectl set-locale LANG=ja_JP.UTF-8 # 変更後のロケール確認 $ localectl status System Locale: LANG=ja_JP.UTF-8 VC Keymap: n/a X11 Layout: n/a
Extras Libraryでnginxとphpのトピックを確認
nginx1.12とphp7.2にトピックが一覧にあることを確認します。
$ amazon-linux-extras list
0 ansible2 available [ =2.4.2 =2.4.6 ]
2 httpd_modules available [ =1.0 ]
3 memcached1.5 available [ =1.5.1 ]
4 nginx1.12 available [ =1.12.2 ]
5 postgresql9.6 available [ =9.6.6 =9.6.8 ]
6 postgresql10 available [ =10 ]
8 redis4.0 available [ =4.0.5 =4.0.10 ]
9 R3.4 available [ =3.4.3 ]
10 rust1 available \
[ =1.22.1 =1.26.0 =1.26.1 =1.27.2 =1.31.0 ]
11 vim available [ =8.0 ]
13 ruby2.4 available [ =2.4.2 =2.4.4 ]
15 php7.2 available \
[ =7.2.0 =7.2.4 =7.2.5 =7.2.8 =7.2.11 ]
16 php7.1 available [ =7.1.22 ]
17 lamp-mariadb10.2-php7.2 available \
[ =10.2.10_7.2.0 =10.2.10_7.2.4 =10.2.10_7.2.5
=10.2.10_7.2.8 =10.2.10_7.2.11 ]
18 libreoffice available [ =5.0.6.2_15 =5.3.6.1 ]
19 gimp available [ =2.8.22 ]
20 docker available \
[ =17.12.1 =18.03.1 =18.06.1 ]
21 mate-desktop1.x available [ =1.19.0 =1.20.0 ]
22 GraphicsMagick1.3 available [ =1.3.29 ]
23 tomcat8.5 available [ =8.5.31 =8.5.32 ]
24 epel available [ =7.11 ]
25 testing available [ =1.0 ]
26 ecs available [ =stable ]
27 corretto8 available [ =1.8.0_192 ]
28 firecracker available [ =0.11 ]
29 golang1.11 available [ =1.11.3 ]
上記の出力結果で見ると、4行目にnginxが、15行目にphpがあるかと思います。
続いて、nginxとphpをインストールしていきます。
nginxインストール・起動設定
nginx(1.12.2)インストール
$ amazon-linux-extras info nginx1.12 nginx1.12 recommends nginx # yum install nginx $ sudo amazon-linux-extras install nginx1.12 $ nginx -v nginx version: nginx/1.12.2
nginxをスタートして、自動起動を設定する
#起動 $ sudo systemctl start nginx.service #自動起動 $ sudo systemctl enable nginx.service #自動起動確認 $ sudo systemctl is-enabled nginx.service enabled #状態確認 $ sudo systemctl status nginx.service Active: active (running)
パブリックDNSにアクセスしてNginxのデフォルトページが表示されればnginxのインストール成功です。
php・php-fpmインストール・設定
$ amazon-linux-extras info php7.2 php7.2 recommends php-cli # yum install php-cli php7.2 recommends php-pdo # yum install php-pdo php7.2 recommends php-fpm # yum install php-fpm php7.2 recommends php-json # yum install php-json php7.2 recommends php-mysqlnd # yum install php-mysqlnd $ sudo amazon-linux-extras install php7.2 $ php -v PHP 7.2.11 (cli) (built: Oct 24 2018 17:51:11) ( NTS ) Copyright (c) 1997-2018 The PHP Group Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies $ php-fpm -v PHP 7.2.11 (fpm-fcgi) (built: Oct 24 2018 17:55:29) Copyright (c) 1997-2018 The PHP Group Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
php-fpm設定
下記にあるファイルを編集します。
/etc/php-fpm.d/www.conf
userとgroupの値をnginxに変更します。
user = apache group = apache ↓ user = nginx group = nginx
php-fpmとnginxを再起動
$ sudo systemctl restart php-fpm.service $ sudo systemctl restart nginx.service
phpの実行確認
nginxのドキュメントルートに確認ファイルを作成
下記の場所に「info.php」というファイルを作成します。
/usr/share/nginx/html/info.php
下記はファイルに記述するphpコードになります。
<?php phpinfo(); ?>
パブリックDNSにアクセスして表示を確認します。
https://パブリックDNS/info.php
phpinfoが表示されれば成功です。