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が表示されました!

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.