NginxでPHP7(PHP-FPM)を動作させる [CentOS]
この記事は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からコメントの緑色になっていますが、全て必要です。
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環境を設定する方法