# Ubuntu वर LEMP stack

Source: https://ravindrabagale.com/mr/cyber/part-04/ch09-php-lamp-and-lemp-step-by-step/9-6-lemp-on-ubuntu.html
Language: mr (Marathi with English technical terms)

Ubuntu मध्ये Nginx, MySQL आणि PHP-FPM वापरू. Port conflict टाळून खालील package/services तयार करा:

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

Default site मध्ये PHP handler

हा पर्याय वापरत असाल तर active default site च्या index line मध्ये index.php जोडा आणि PHP location द्या:

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

/run/php/php-fpm.sock तुमच्या system वर अस्तित्वात आहे का आधी तपासा. Generic symlink नसल्यास actual versioned socket वापरा. FPM service चालू असली पाहिजे.

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"

phpinfo page ही तात्पुरती test file आहे; तपासल्यानंतर delete करा.

वेगळा phpapp server block

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

ls /run/php/ actual socket नाव दाखवतो; php8.3-fpm.sock/php8.1-fpm.sock ही source examples आहेत, तुमच्या version ची हमी नाही. Block default_server आहे; त्यामुळे जुन्या default/mysite enable links काढले आहेत. हा single-site lab step आहे—इतर live sites disable करू नका.

snippets/fastcgi-php.conf मधले rules त्या package च्या file मध्ये वाचा. Test/reload नंतर योग्य root मध्ये PHP file असल्याची खात्री करा.

Lab

Ubuntu LEMP phpapp चालवा. फक्त disposable lab मध्ये actual version च्या FPM service ला थोडा वेळ stop करा, 502 आणि Nginx error log पाहा, मग लगेच start करून page पुन्हा चालतो का तपासा.

रवींद्र बागले यांची tip

जुन्या tutorial मधला socket path copy केल्यास 502 येऊ शकतो. ls /run/php/ आणि FPM pool config पाहून path/permissions जुळवा.
