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
On Ubuntu, the PHP socket name changes with the version (php8.1-fpm.sock, php8.3-fpm.sock). If you use an old name copied from the internet, you get a 502. Check the exact name with ls /run/php/ and write that in the config.
Ravindra Bagale's Tip – मराठी
Ubuntu वर PHP socket चं नाव version प्रमाणे बदलतं (php8.1-fpm.sock, php8.3-fpm.sock). Internet वरून copy केलेलं जुनं नाव वापरलं तर 502 येतो. ls /run/php/ ने नेमकं नाव बघा आणि तेच config मध्ये लिहा.
Ravindra Bagale's Tip – हिंदी
Ubuntu पर PHP socket का नाम version के हिसाब से बदलता है (php8.1-fpm.sock, php8.3-fpm.sock). Internet से copy किया पुराना नाम इस्तेमाल किया तो 502 आता है. ls /run/php/ से सही नाम देखो और वही config में लिखो.
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.