概要
EC2でAmazonLinuxのインスタンスを新規作成した状態から、/var/www/html
以下に置いたindex.php
を表示させるまでの流れです。
今回、OSはAmazon Linux 2016.09
を使っていますが、それ以前のバージョンだとPHP7
がリポジトリにないため手順が異なるようです。
構成
- Amazon Linux - 2016.09.0(リリースノート)
- nginx - 1.10.1
- PHP - 7.0
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を処理できるように設定します。
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の設定を変更
・・・
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
<?php
phpinfo();
?>
インスタンスのドメインにアクセスしたところ、
正しくphpinfoが表示されました!