search
LoginSignup
24
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

posted at

updated at

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

概要

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

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
24
Help us understand the problem. What are the problem?