sudo service php5-fpm restartsudo service nginx restart
Your default web root is located at /usr/share/nginx/www (per the config file). (See root /usr/share/nginx/www;
(Note: For Ubuntu 12.10 or newer, you will need to replace the fastcgi_pass 127.0.0.1:9000; line with this to make it work: fastcgi_pass unix:/var/run/php5-fpm.sock;)
The papashou's answer is correct on old Ubuntu 12.04. Since Ubuntu 12.10, the configuration is a bit different. Here is what I did:
Install
sudo apt-get install nginx php5-fpm
Enable PHP
Uncomment the following lines in configuration file /etc/nginx/sites-available/default
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
# NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
# # With php5-cgi alone:
# fastcgi_pass 127.0.0.1:9000;
# With php5-fpm:
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
Start (or restart)
sudo service php5-fpm restart
sudo service nginx restart
Test nginx
Opening this link http://localhost should display "Welcome to nginx!"
Note the fpm version, or check php -v. 7.3.11-0ubuntu0.19.10.3 (cli) in my case.
sudo nano /etc/nginx/sites-available/default
Set the correct root folder.
Add index.php to the index directive.
Uncomment the location handler for php, but leave the "php-cgi" line commented if you use php-fpm. Also ensure the correct fpm version lest you get "502 Bad Gateway" on localhost: fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
sudo service nginx restart
That works on:
$ nginx -v
nginx version: nginx/1.16.1 (Ubuntu)
$ uname -a
Linux cees-XPS-13-9380 4.15.0-1067-oem #77-Ubuntu SMP Mon Jan 20 09:23:07 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
The following method will get you started fast on Ubuntu 12.04:
Install the dependences:
sudo apt-get install php5-common php5-cli php5-fpm
Install nginx:
sudo apt-get install nginx
Start nginx:
sudo service nginx start
Test that it's working (should see "Welcome to nginx!")
sudo service nginx stop
In your nginx site configuration (/etc/nginx/sites-available/default), modify the line in the server {} section
index index.html index.htm
toindex index.php index.html index.htm
.Uncomment the lines in the server {} section starting with
listen
for ipv4 / ipv6 both.Scroll down to where it says
location ~ \.php {
and uncomment lines so it looks like this:sudo service php5-fpm restart
sudo service nginx restart
Your default web root is located at /usr/share/nginx/www (per the config file). (See
root /usr/share/nginx/www;
(Note: For Ubuntu 12.10 or newer, you will need to replace the
fastcgi_pass 127.0.0.1:9000;
line with this to make it work:fastcgi_pass unix:/var/run/php5-fpm.sock;
)EDIT: As pointed out by Matt Browne you may be interested by this more recent post:
How To Install Linux, Nginx, MySQL, PHP (LEMP stack) in Ubuntu 16.04
The papashou's answer is correct on old Ubuntu 12.04. Since Ubuntu 12.10, the configuration is a bit different. Here is what I did:
Install
Enable PHP
Uncomment the following lines in configuration file
/etc/nginx/sites-available/default
Start (or restart)
Test
nginx
Opening this link
http://localhost
should display "Welcome to nginx!"Test
php
Create a php file:
The target path is the output of
e.g.
/usr/share/nginx/www
Write a
info.php
file with:or as one-liner
Opening
http://localhost/info.php
should display the PHP information page.Note the fpm version, or check
php -v
. 7.3.11-0ubuntu0.19.10.3 (cli) in my case.Set the correct
root
folder.Add
index.php
to theindex
directive.Uncomment the location handler for php, but leave the "php-cgi" line commented if you use php-fpm. Also ensure the correct fpm version lest you get "502 Bad Gateway" on localhost:
fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
That works on: