AC-5

某SEの雑記帳

nginxでPHPを使えるようにする(CentOS7)

      2015/12/14

CentOS7にnginxをインストールを行ったので、PHPを使えるようにします。

ドキュメントルートの作成

CentOS7をミニマムでインストールした状態で、Apacheもインストールしていない為、おなじみの/var/wwwディレクトリがありません。
nginxのデフォルトでは、/usr/share/nginx/htmlになっているのですが、
今回は、/var/www/htmlというディレクトリを作成し、そこをドキュメントルートとします。

[root@test]# mkdir -p /var/www/html←ディレクトリを作成※-pオプションで再帰的にwwwとhtml両方のディレクトリが作成される

php-fpmをインストール

[root@test]# yum list | grep php-fpm←php-fpmがあるか確認
php-fpm.x86_64                          5.4.16-36.el7_1                updates←ありました
[root@test]# yum -y install php-fpm←yumでインストール

php-fpmの設定ファイル変更

/etc/php-fpm.d/www.confのapacheと記載してある箇所をnginxに変更します。

[root@test]# cd /etc/php-fpm.d/←ディレクトリ移動
[root@test php-fpm.d]# cp www.conf www.conf_default←設定ファイルのバックアップ作成
[root@test php-fpm.d]# vi www.conf←設定ファイル編集
; RPM: apache Choosed to be able to access some dir as httpd
user = nginx←nginxに変更
; RPM: Keep a group allowed to write in log dir.
group = nginx←nginxに変更

また、www.confを見ると、php_value[session.save_path] = /var/lib/php/sessionとセッションの保存先が定義されていますが、
該当のディレクトリがありませんので作成します。

[root@test]# mkdir /var/lib/php/session←sessionディレクトリ作成
[root@test]# chown nginx:nginx /var/lib/php/session←所有者変更

php.iniの編集

[root@test]# cp /etc/php.ini /etc/php.ini_default←設定ファイルのバックアップ作成
[root@test]# vi /etc/php.ini←php.iniの編集
default_charset = "UTF-8"←デフォルトの文字コードの設定※行頭のコメントアウト;を外す
date.timezone = "Asia/Tokyo"←タイムゾーンの設定※行頭のコメントアウト;を外して、"Asia/Tokyo"と記述
mbstring.language = Japanese←デフォルト言語の設定※行頭のコメントアウト;を外す

nginxの設定変更

ドキュメントルートの設定と、PHPを実行できるように修正します。

[root@test]# cd /etc/nginx/conf.d/←ディレクトリ移動
[root@test conf.d]# cp default.conf default.conf_default←設定ファイルのバックアップ作成
[root@test conf.d]# vi default.conf←設定ファイル編集
    location / {
        root   /var/www/html;←ドキュメントルートに
        index  index.php index.html index.htm;←index.phpを追加
    }
~~~~~~~~
    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    location ~ \.php$ {←以下コメントアウトを外す
        root           /var/www/html;←ドキュメントルートに変更
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /var/www/html$fastcgi_script_name;←$fastcgi~以前をドキュメントルートに変更
        include        fastcgi_params;
    }

php-fpmの起動

php-fpmを起動します。今回はCentOS7なので、systemctl を利用します。

[root@test]# systemctl start php-fpm←php-fpmの起動
[root@test]# systemctl enable php-fpm←php-fpmの自動起動設定

nginxの再起動

nginx設定ファイルのdefault.confを変更したので、nginxも再起動します。

[root@test]# systemctl restart nginx←nginxの再起動

テストファイルの作成と確認

設定が完了したので、index.phpファイルを作成します。

[root@test]# echo "" > /var/www/html/index.php←index.phpの作成

ブラウザでアクセスしてみます。

WS000018
PHPが表示されました。

nginxでドキュメントルートを変更したら403 forbiddenが表示される時

SELinuxが無効になっているか確認してみてください。

[root@test]# getenforce←SELinux状況確認
Enforcing←有効になっている
[root@test]# setenforce 0←無効にする
[root@test]# getenforce←再度状況確認
Permissive←無効になっている

この設定でSELinuxを無効にする事はできましたが、一時的な設定なので再起動すると元の設定に戻ってしまいます。
恒久的に無効にするには設定ファイルを変更する必要があります。

[root@test]# vi /etc/selinux/config←SELinux設定ファイル編集
#SELINUX=enforcing←SELinux有効をコメントアウト
SELINUX=disabled←SELinux無効を追記

これで再起動すると設定が適用されます。

 - Linux