0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

ubuntu NGiNX uwsgi php-fpm 連携

Posted at

・準備
・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を見ると

/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;
}

つまり

/etc/nginx/sites-enabled/(自分でつけた名前).conf

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
のいずれかだと思います
中身はこんな感じです
image.png

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のページが表示できれば成功です。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?