・準備
・phpfpmのインストール
・NGiNXの設定
・php-fpmの設定
・起動
準備
・以下の記事を参考にさせていただいた都合上、uWSGIとnginxの設定はこの記事のとおりであるという前提になってしまいますが、 ご了承ください。
php-fpmのインストール
まず、以下の二つのコマンドで
リポジトリをインストールします
sudo apt install software-properties-common
sudo add-apt-repository ppa:ondrej / php
php-fpmをインストールします
$ sudo apt install php7.4-fpm
追加モジュールインストールします。
$ sudo apt install php7.4-common php7.4-mysql php7.4-xml php7.4-xmlrpc php7.4-curl php7.4-gd php7.4-imagick php7.4-cli php7.4-dev php7.4-imap php7.4-mbstring php7.4-opcache php7.4-soap php7.4-zip php7.4-intl -y
最後に確認します
:~$php-fpm7.4 -v
PHP 7.4.3 (cli) (built: Mar 14 2020 23:16:22) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
with Zend OPcache v7.4.3, Copyright (c), by Zend Technologies
上のようになるか確認してください
NGiNXの設定
phpの処理が必要なリクエストが来た時に、nginxはそのリクエストをphpのAPサーバに送る必要があります。
そのために、nginxにphpのAPサーバのアドレスを伝えておきます。
/etc/nginx/nginx.conf
を見ると
GNU nano 4.8 nginx.conf
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log notice;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
最後の
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
はnginxが参照するファイルの保存場所を表しています
/etc/nginx/sites-enabled/
に移動し、
defaultとは別のconfファイルに以下を追加します
location ~ \.php$ {
root /usr/share/nginx/html;
fastcgi_pass 192.168.11.8:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
つまり
GNU nano 4.8 python_Django_practice_nginx.conf
upstream django {
server unix:///home/shymky/Desktop/server/srv/python_Django_practice/python_Django_practice.sock;
# server 127.0.0.1:8001;
}
server {
listen 8000;
server_name 192.168.11.8;
charset utf-8;
client_max_body_size 75M;
location /media {
alias /path/to/your/mysite/media;
}
location /static {
alias /home/shymky/Desktop/server/srv/python_Django_practice/staticfiles;
}
location / {
uwsgi_pass django;
include /home/shymky/Desktop/server/srv/python_Django_practice/uwsgi_params;
}
##これを追加
location ~ \.php$ {
root /usr/share/nginx/html;
fastcgi_pass 192.168.11.8:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
・root
はphpファイルのある場所
・fastcgi_pass
はphpのAPサーバのアドレス
・$document_rootはrootと同じ
$document_root=/usr/share/nginx/html)
・$fastcgi_script_nameのパラメータは、urlのドメインの後ろ
例えばhttp://192.168.11.8:8000/bord/index.phpというリクエストの場合
$fastcgi_script_nameは/bord/index.php
php-fpmの設定
www.confを変更します。パスは
/etc/php-fpm.d/www.conf
/etc/php/7.4/fpm/pool.d/www.conf
のいずれかだと思います
中身はこんな感じです
userとgroupを
Apacheからnginxに変更します。
そして、listen=/run/php/php7.4-fpm.sock
をコメントアウト(先頭に「;」をつける)し
下にlisten=(fastcgi_passと同じ)
を追加します
fastcgi_passは先ほど/etc/nginx/sites-enabled/〇〇〇.confに追加したアドレスと同じです。
ちなみに、listen=/run/php/php7.4-fpm.sock
はソケット通信の際に必要になります。
ソケット通信をする場合には/etc/nginx/sites-enabled/〇〇〇.conf
のfastcgi_passのところを、unix:/run/php/php7.4-fpm.sock;
として、www.conf内のlisten=/run/php/php7.4-fpm.sockのコメントアウトを解除してください。
今回はhttp通信で行います。
起動
sudo /etc/init.d/nginx restart
sudo systemctl start php7.4-fpm
として、phpのページが表示できれば成功です。