#環境
- macOS 10.12.6
- MacBook pro 2016
- VirtualBox 5.2.18
- CentOS 7.6-1810
#はじめに
nginx上でPHPの実行環境を作ってブラウザ確認までしようと思います。
nginxのインストールはこちらの記事をご覧ください↓
- CentOS 7にnginxをインストールしてブラウザ確認するまで
CentOS 7の環境構築はこちらの記事をご覧ください↓
- MacでVirtualBoxを使ってCentOS 7をインストールしてみた
- VirtualBoxのネットワーク設定をいじって安全で快適な開発ができるようにした
#nginxでPHPを動かすには
Apacheはインストールした時点でPHPの実行環境が整っています。
PHPはApache用に、同一プロセスで動くモジュール版というものが用意されていて、これがApacheのインストール時に一緒に入っているので、PHPのプログラムを動かすことができるのです。
それに比べて、nginxはインストールしただけではPHPのプログラムを動かせません。
なぜなら、nginx用のモジュール版は用意されていないからです。よってnginxでPHPを動かすには、CGI版のPHPを使わなくてはなりません。(ちなみに、ApacheにはCGI版もあるみたいです…!欲張りですね。)
CGI版のPHPを動かすには、PHP-CGI
というものにリクエストを送らなくてはならないのですが、nginxだけだとそれができません。。。(なんでできないのかは後ほど調べよ〜っと)
ではどうするか、そこで登場するのが、PHP-FPM
というプログラムです!
この、PHP-FPMがうまいこと、nginxからPHP-CGIへのリクエストをさばいてくれて、やっとPHPのプログラムが動いてくれるというわけです。
まあ、とにかくPHPをnginxで動かしたいならPHP-FPM入れなさいってことですね。
#PHPのインストール
yumでチャチャっとインストール。
// インストール
# yum -y install php
// 確認
# php --version
phpの用意はこれだけで十分です。
#PHP-FPMのインストールと設定
こちらもyumでインストール。
# yum -y install php-fpm
設定ファイルは、/etc/php-fpm.d/
配下の、www.conf
というファイルです。
# vi /etc/php-fpm.d/www.conf
設定内容は以下です。
- user = apache
- group = apache
+ user = nginx
+ group = nginx
#nginxでの設定
設定ファイルは、/etc/nginx/conf.d/
配下の、default.conf
というファイルです。
# vi /etc/nginx/conf.d/default.conf
# ...(省略)
location / {
root /usr/share/nginx/html;
index index.php; # index.phpを設定
}
# ...(省略)
# 以下の部分のコメントアウトを消す
location ~ \.php$ {
root /usr/share/nginx/html; # ドキュメントルートを設定
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; # デフォルトでは、「/scripts」となっているので、「ドキュメントルート($document_root)」に変更する
include fastcgi_params;
}
# ...(省略)
#表示するPHPファイルを用意
上記の設定で、ドキュメントルートを/usr/share/nginx/html
にしていますので、/usr/share/nginx/html
配下に、index.php
を作成しましょう。
# touch /usr/share/nginx/html/index.php
確認用なので、適当にechoしてみましょう。
<?php
echo('PHP動いたよ!');
?>
#ブラウザで確認
nginxとphp-fpmの設定を変えたので、両方とも再起動して設定を反映させます。
# systemstl restart nginx
# systemctl restart php-fpm
※CentOS 6 以下は、serviceコマンドを使ってください。
あとは、http://CentOSのIP:nginxで設定したポート番号/index.php
でアクセスして、ブラウザ確認できたら完了!