ホーム > カテゴリ > 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


この記事を書いた人

💻 ITスキル・経験
サーバー構築からWebアプリケーション開発。IoTをはじめとする電子工作、ロボット、人工知能やスマホ/OSアプリまで分野問わず経験。

画像処理/音声処理/アニメーション、3Dゲーム、会計ソフト、PDF作成/編集、逆アセンブラ、EXE/DLLファイルの書き換えなどのアプリを公開。詳しくは自己紹介へ
プチモンテ代表、アーティスト名:プチモンテ
🎵 音楽制作
BGMは楽器(音源)さえあれば、何でも制作可能。歌モノは主にロック、バラード、ポップスを制作。歌詞は叙情詩、叙情的な楽曲が多い。楽曲制作は2023年12月中旬 ~

オリジナル曲を始めました✨

YouTubeで各楽曲を公開しています🌈
https://www.youtube.com/@petitmonte

【男性ボーカル】DA・KA・RA | 新たな明日が風と共に訪れる

【男性、女性ボーカル】時空を超越する先に | 時空と風の交響曲

【女性、男性ボーカル】絆 | 穏やかな心に奏でる旋律