【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が表示されれば成功です。