ติดตั้ง PHP ให้ Nginx ด้วย PHP-FPM บน Ubuntu 18.04

  1. Installing PHP
  2. Configure Nginx for PHP
  3. Creating a PHP File to Test Configuration

1.Installing PHP

$ sudo apt update
$ sudo apt install php-fpm php-mysql
$ php --version
PHP 7.2.24-0ubuntu0.18.04.2 (cli) (built: Jan 13 2020 18:39:59) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
    with Zend OPcache v7.2.24-0ubuntu0.18.04.2, Copyright (c) 1999-2018, by Zend Technologies
$ ls /var/run/php/
php7.2-fpm.pid  php7.2-fpm.sock

ชื่อไฟล์ php7.2-fpm.sock นี้จะเอาไปใส่เป็นค่า config ในไฟล์ /etc/nginx/sites-available/example.com

$ sudo systemctl status php7.2-fpm
● php7.2-fpm.service - The PHP 7.2 FastCGI Process Manager
   Loaded: loaded (/lib/systemd/system/php7.2-fpm.service; enabled; vendor preset: enabled)
   Active: active (running) since Thu 2020-02-06 16:09:16 +07; 2min 25s ago
     Docs: man:php-fpm7.2(8)
 Main PID: 9117 (php-fpm7.2)
   Status: "Processes active: 0, idle: 2, Requests: 0, slow: 0, Traffic: 0req/sec"
    Tasks: 3 (limit: 4915)
   CGroup: /system.slice/php7.2-fpm.service
           ├─9117 php-fpm: master process (/etc/php/7.2/fpm/php-fpm.conf)
           ├─9118 php-fpm: pool www
           └─9119 php-fpm: pool www

2.Configure Nginx for PHP

$ sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/example.com
$ sudo nano /etc/nginx/sites-available/example.com
server {
        listen 80;
        root /var/www/html;
        index index.php index.html index.htm index.nginx-debian.html;
        server_name example.com;

        location / {
                try_files $uri $uri/ =404;
        }

        location ~ \.php$ {
                include snippets/fastcgi-php.conf;
                fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
        }

        location ~ /\.ht {
                deny all;
        }
}
$ sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/

ยกเลิก default

$ sudo unlink /etc/nginx/sites-enabled/default 
$ sudo systemctl reload nginx
$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

3.Creating a PHP File to Test Configuration

$ sudo nano /var/www/html/info.php 
<?php
phpinfo();
http://your_server_domain_or_IP/info.php