Questa guida prepara un piccolo ambiente LEMP di prova su una VM Debian 13 pulita: Nginx, PHP 8.4-FPM e MariaDB. Servono sudo e accesso al terminale della VM. Il sito ascolterà solo su localhost:8080; la configurazione pubblica con dominio e HTTPS è un passaggio distinto.
1. Installa i pacchetti
sudo apt update
sudo apt install nginx php-fpm php-mysql mariadb-server curl
sudo systemctl enable --now nginx php8.4-fpm mariadbIl numero 8.4 si riferisce ai pacchetti di Debian 13. Non usare questi percorsi alla cieca su un’altra release.
2. Crea una pagina PHP
sudo install -d -m 755 /var/www/lemp-demo/public
printf '%s\n' '<?php echo "PHP funziona";' | sudo tee /var/www/lemp-demo/public/index.php >/dev/nullCrea /etc/nginx/sites-available/lemp-demo con questo contenuto:
server {
listen 127.0.0.1:8080;
server_name localhost;
root /var/www/lemp-demo/public;
index index.php;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.4-fpm.sock;
}
}sudo ln -s /etc/nginx/sites-available/lemp-demo /etc/nginx/sites-enabled/lemp-demo
sudo nginx -t && sudo systemctl reload nginx
curl --fail http://127.0.0.1:8080/Devi leggere “PHP funziona”, non il codice sorgente. Se il link esiste già, non ricrearlo. Un 502 richiede di controllare FPM e il percorso del socket.
3. Prepara un database di prova
Apri sudo mariadb ed esegui queste istruzioni, sostituendo la password:
CREATE DATABASE lemp_demo CHARACTER SET utf8mb4;
CREATE USER 'lemp_demo'@'localhost' IDENTIFIED BY 'SOSTITUIRE_CON_PASSWORD_UNICA';
GRANT SELECT, INSERT, UPDATE, DELETE ON lemp_demo.* TO 'lemp_demo'@'localhost';Dal terminale verifica l’accesso:
mariadb -u lemp_demo -p lemp_demo -e 'SELECT 1;'
php -m | grep -E 'PDO|pdo_mysql'Il client deve restituire 1 e PHP deve elencare pdo_mysql. Le credenziali dell’applicazione andranno fuori dal document root. Non concedere scrittura all’intera directory del sito per far funzionare PHP.
Se qualcosa non parte
sudo journalctl -u php8.4-fpm -n 30 --no-pager
sudo tail -n 30 /var/log/nginx/error.logQuesto esempio sostituisce la ricetta Buster/PHP 7.1. Prima di esporre un’applicazione reale servono virtual host dedicato, HTTPS, configurazione del framework e backup verificati.