Edited at

AWS EC2 Amazon Linux 2016.09 + nginx + PHP7.0でサーバー構築

More than 1 year has passed since last update.


概要

EC2でAmazonLinuxのインスタンスを新規作成した状態から、/var/www/html以下に置いたindex.phpを表示させるまでの流れです。

今回、OSはAmazon Linux 2016.09を使っていますが、それ以前のバージョンだとPHP7がリポジトリにないため手順が異なるようです。


構成


yumをアップデート

SSHログイン後、セキュリティ警告が出ていて、yum updateを促されたのでupdateしておきます。

$ sudo yum update


PHP7をインストール

今までは、外部リポジトリから取得する必要があったようですが、

Amazon Linux 2016.09 からリポジトリに追加されたようで、簡単です。

$ sudo yum install php70


PHPの必要ライブラリを追加

MySQL、マルチバイト文字対応、XML、mcrypt、php-fpm(後述)を追加します。

必要に応じて追加してください。最低限、php-fpmさえあればindex.phpは表示できると思います。

$ sudo yum install php70-mysqlnd php70-mbstring php70-mcrypt php70-pdo php70-xml php70-fpm


nginxのインストール

$ sudo yum install nginx


nginxの設定を変更

ルートを/var/www/htmlに指定し、phpを処理できるように設定します。


/etc/nginx/nginx.conf

        root         /var/www/html;

location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}


php-fpmの設定を変更


/etc/php-fpm.d/www.conf

・・・

user = nginx
group = nginx

・・・


突然出てきたphp-fpmってなんだ?と思い、調べてみました。

参考

Qiita - nginx と PHP-FPM の仕組みをちゃんと理解しながら PHP の実行環境を構築する

ApacheではApache自身に組み込まれたPHPモジュールがPHPを実行するのに対して、nginxはphp-fpmにPHPを実行してもらっている。Apacheでは毎回プロセスを生成するため遅いが、nginx + php-fpmでは初回に生成したプロセスを再利用するため高速に実行できる。という解釈をしました。


php-fpmとnginxをスタート

$ sudo service start

$ sudo service php-fpm start

(サービスがなければ、/etc/inf.d/内のサービス名を確認)


動作確認

ルートにindex.phpファイルを作成して、お決まりのphpinfo()を表示させます。

$ sudo vi /var/www/html/index.php


/var/www/html/index.php

<?php

phpinfo();
?>

インスタンスのドメインにアクセスしたところ、

正しくphpinfoが表示されました!