ホーム > カテゴリ > Ruby・Ruby on Rails >

NginxでPHP7(PHP-FPM)を動作させる [CentOS]

CentOSで各種サーバー構築(目次)

NginxはNginx/Unicorn/Ruby on Railsの本番環境構築をご参照下さい。

この記事はNginxでPHPとRailsを共存させる為に、Ruby・Ruby on Railsカテゴリにあります。(NginxでRuby on RailsとPHPを共存させる)

以下、一般ユーザーでログインして各コマンドを実行します。

1. PHP7.3のインストール

sudo yum install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

yum info php --enablerepo=remi-php73

sudo yum install --enablerepo=remi,remi-php73 php php-devel php-mbstring php-mysqlnd php-pdo php-gd

php -v

2. PHP-FPMのインストール

sudo yum --enablerepo=remi-php73 install php-fpm

3. PHP-FPMの設定ファイル(www.conf)の編集

sudo vi /etc/php-fpm.d/www.conf

// user、groupをapacheからユーザー名に変更する
user = ユーザー名
group = ユーザー名

// PHP-FPMの再起動
sudo systemctl restart php-fpm

4. Nginxの設定ファイル(nginx.conf)の編集

sudo vi /etc/nginx/nginx.conf

user ユーザー名;

worker_processes auto;

events {
    worker_connections  1024;
}

http {
    server_tokens off;
    
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    access_log  /var/log/nginx/access.log;
    error_log   /var/log/nginx/error.log;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    include /etc/nginx/conf.d/*.conf;
}

※/*.confからコメントの緑色になっていますが、全て必要です。

Nginxのバージョンが1.12より新しい場合は「/etc/nginx/conf.d/default.conf」が存在する場合があります。その場合は正常に動作しないので「sudo rm /etc/nginx/conf.d/default.conf」でdefault.confを削除して下さい。

5. myapp.confを作成する

sudo vi /etc/nginx/conf.d/myapp.conf

[myapp.conf]

server {
    listen       80;
    server_name  IPアドレス;
  
    client_max_body_size 100m;
    error_page   404              /404.html;
    error_page   500 502 503 504  /50x.html;   
    
    root /home/ユーザー名/html;   
    
    location / {   
        index index.php index.html index.htm;
    }
    
    location ~ \.php$ {
        # 存在しない場合は404へ
        try_files $uri /404.html;

        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME $document_root/$fastcgi_script_name;
        include        fastcgi_params;
    }
}

6. /home/ユーザー名/htmlにindex.phpを作成する

<?php

phpinfo();

?>

7. サイトの動作確認

nginxを再起動してからブラウザで確認する。

sudo systemctl restart nginx

8. HTTPヘッダの確認

HTTPヘッダを確認する。

curl --head  http://IPアドレス/

※PHPバージョンが表示されるので次章で非表示にする。

9. PHP.iniの編集

HTTPヘッダのPHPバージョンの非表示、タイムゾーンを設定する。

sudo vi /etc/php.ini

// PHPのバージョン
expose_php = Off
// タイムゾーン
date.timezone = "Asia/Tokyo"

// PHP-FPMの再起動
sudo systemctl restart php-fpm

10. PHP-FPMの自動起動

sudo systemctl enable php-fpm

注意事項1

www.confのuser、groupにnginxを指定するとブラウザで「File not found.」のエラーが表示される場合があります。Nginxのログを「sudo cat /var/log/nginx/error.log」で確認すると「FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream」と表示されます。

その場合は、user、groupにはユーザー名を指定すればOKです。

注意事項2

セッション系のエラー「session_start(): Failed to read session data」が出る場合は、コチラの記事の「2. /var/lib/php/sessionの権限の変更」をご確認ください。

参考サイト

VPSに CentOS7 + Nginx + php-fpm でPHP環境を設定する方法





関連記事



公開日:2019年09月15日 最終更新日:2020年06月14日
記事NO:02767