9. PHP, LAMP and LEMP Step by Step
9.6 LEMP on Ubuntu
sudo apt update
sudo apt install -y nginx mysql-server php-fpm php-mysql php-gd php-mbstring php-xml
sudo service nginx start
sudo service mysql start
sudo systemctl enable nginx mysql
sudo mysql_secure_installation
Then enable PHP in the Ubuntu default site — edit /etc/nginx/sites-available/default: add index.php to the index line and un-comment the PHP block so it reads:
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php-fpm.sock;
}
sudo nginx -t && sudo service nginx reload
echo "<?php phpinfo();" | sudo tee /var/www/html/info.php
curl -s http://localhost/info.php | grep -m1 "PHP Version"
A dedicated server block (/etc/nginx/sites-available/phpapp):
ls /run/php/ # note the socket name, e.g. php8.3-fpm.sock (24.04) or php8.1-fpm.sock (22.04)
sudo mkdir -p /var/www/phpapp
sudo tee /etc/nginx/sites-available/phpapp > /dev/null <<'EOF'
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
root /var/www/phpapp;
index index.php index.html;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php-fpm.sock;
}
}
EOF
sudo ln -sf /etc/nginx/sites-available/phpapp /etc/nginx/sites-enabled/phpapp
sudo rm -f /etc/nginx/sites-enabled/default /etc/nginx/sites-enabled/mysite
sudo nginx -t && sudo service nginx reload
/run/php/php-fpm.sock is a symlink to the versioned socket; if it does not exist on your system, replace it with the exact name shown by ls /run/php/.
Ravindra Bagale's Tip
Ubuntu var PHP socket che naav version pramane badalte (php8.1-fpm.sock, php8.3-fpm.sock). Internet varun copy kelela juna naav vaparla tar 502 yeto. ls /run/php/ ne exact naav bagha aani tech config madhe lihaa.
Lab
Build LEMP on Ubuntu with the phpapp server block. Stop php8.x-fpm and see the 502 error, read the Nginx error log, then start it again.