【AWS】EC2のAmazon Linux 2にnginx・php-fpmでPHP実行環境構築

Image

最初に

本記事の目的

パブリック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にアクセスして表示を確認します。

http://パブリックDNS/info.php

phpinfoが表示されれば成功です。