← Tutti gli articoliDocker e server

Docker e server

Creare un ambiente LEMP di prova su Debian 13

Matteo Galacci ·

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 mariadb

Il 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/null

Crea /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.log

Questo 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.

Fonti e approfondimenti