Salta al contenuto principale

Installare Apache, HTTPS e PHP-FPM in Debian 13

In questa guida installeremo Apache, PHP-FPM, Let's Encrypt SSL in Debian 13 Trixie. Applichiamo le prime ottimizzazioni e testiamo i risultati creando phpinfo.ini

Installiamo Apache2

Installiamo il web server Apache con HTTPS, il primo componente dello stack LAMP, che si occuperà di servire i contenuti.
Per ottimizzare le performance del web server, consigliamo di utilizzare PHP-FPM, mpm_event e http2
La maggior parte dei siti web, utilizza connessioni sicure, vedremo come generare un certificato HTTPS valido e gratuito con Let's Encrypt

Di default, è previsto il modulo multi processi, mpm_prefork, che permette di utilizzare mod_php e PHP 8.4, l'interprete interno
Questo approccio è sconsigliato sui siti molto visitati, oltre la maggiore lentezza, arrivati al numero di thread massimi, il web server, smette di rispondere fino alla liberazione di un thread che possa servire i contenuti

  1. Installiamo Apache2

    apt install apache2
  2. Disabilitiamo il modulo mpm_prefork

    a2dismod mpm_prefork
  3. Abilitiamo mpm_event e http2

    a2enmod mpm_event http2
  4. Riavviamo Apache2

    service apache2 restart

Installare PHP-FPM

Modifichiamo la configurazione del pool per ascoltare sulla porta predefinita 9000 di PHP-FPM. Se stai configurando un ambiente di produzione ad alto traffico, i nostri consulenti Linux Debian possono assisterti con il tuning avanzato delle prestazioni.

FPM è un vero e proprio demone, resta in ascolto per le richieste PHP, tramite una porta o un socket UNIX
Rappresenta la P del nostro LAMP

Installiamo FPM e FastCGI

apt install php-fpm libapache2-mod-fcgid

Editiamo la configurazione della pool per ascoltare sulla porta di default di PHP-FPM, la 9000

nano /etc/php/8.4/fpm/pool.d/www.conf
;listen = /run/php/php8.4-fpm.sock
listen = 9000

Abilitiamo i moduli

a2enmod actions proxy_fcgi alias headers

Riavviamo il processo di PHP FPM

service php8.4-fpm restart

Riavviamo Apache2

service apache2 restart

È ora possibile configurare per tutti i virtual host apache2 l'uso di FPM aggiungendo questo handler nella loro definizione:

<FilesMatch ".+\.ph(p[345]?|t|tml)$">
    SetHandler "proxy:fcgi://127.0.0.1:9000"
</FilesMatch>

Per testare l'esecuzione di PHP e avere informazioni su moduli e configurazione, possiamo creare un file phpinfo.php nella directory configurata nel nostro virtual host

<?php
  phpinfo();
  phpinfo(INFO_MODULES);
?>

Visitando l'indirizzo https://IP-WEB/phpinfo.php possiamo visualizzare le informazioni relative a PHP

Installiamo i moduli necessari, PHP-MySQL e alcuni dei più comuni

apt-get install php8.4-{mysql,curl,gd,intl,mcrypt,ps,pspell,snmp,sqlite,tidy,xmlrpc,xsl}

Possiamo anche scegliere di installare i moduli più comuni, come quelli di default in Plesk

apt-get install php8.4-{bcmath,enchant,ldap,mysql,curl,dba,enchant,gd,intl,ldap,mbstring,mcrypt,odbc,opcache,pgsql,sqlite3,pspell,soap,tidy,xml,xmlrpc,xsl,zip}

Let's Encrypt certificati SSL validi e gratuiti

Grazie all'eccellente Let's Encrypt, è possibile generare certificati SSL universalmente riconosciuti, sicuri e gratuiti. Automatizzare questo processo su server multipli è un'attività comune nei nostri progetti DevOps di consulenza professionale.

È necessario configurare il nome DNS del sito web che andremo a ospitare in modo da raggiungere l'IP del nostro server

Esempio configurazione DNS

Per configurare il DNS, è necessario accedere al pannello del nostro fornitore e registrare un nome di questo tipo

mydomain.ext                  A      1.1.1.1

Installiamo Let's Encrypt e generiamo i certificati SSL e TLS

apt-get install certbot python3-certbot-apache

Creiamo la configurazione di Apache2

certbot --apache

Testiamo il rinnovo dei certificati

certbot renew --dry-run

Controlliamo che sia presente il processo schedulato di Cron per il rinnovo

cat /etc/cron.d/certbot

Se non ci sono stati problemi nella risoluzione del nostro dominio, i nostri virtual host risponderanno in HTTPS, restituendoci il famoso "luchetto verde" sul browser

I Virtualhost apache2

Virtual host HTTP

Per configurare un virtual host http, possiamo utilizzare una definizione molto semplice, come questa listata
È disponibile nella directory /etc/apache2/sites-available vhost di default, da cui possiamo partire

<VirtualHost *:80>
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Virtual host HTTPS

I virtual host HTTPS, includono i path necessari per l'utilizzo di SSL e l'attivazione di PHP

<VirtualHost *:443>
    ServerAdmin [email protected]
    DocumentRoot "/var/www/data/online"
    ServerName mydomain.ext
    ServerAlias www.mydomain.ext
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
    Protocols h2 h2c http/1.1
    SSLEngine on
    Include /etc/letsencrypt/options-ssl-apache.conf
        SSLCertificateFile /etc/letsencrypt/live/mydomain.ext/fullchain.pem
        SSLCertificateKeyFile /etc/letsencrypt/live/mydomain.ext/privkey.pem
    <FilesMatch ".+\.ph(p[345]?|t|tml)$">
        SetHandler "proxy:fcgi://127.0.0.1:9000"
    </FilesMatch>
</VirtualHost>

A questo punto il nostro web server sarà in grado in grado di rispondere in HTTPS e servire le pagine PHP.

Installiamo MariaDB, Fork di MySQL

Debian, come molte altre distribuzioni, non può più fornire il pacchetto MySQL direttamente, essendo proprietario. Al momento in cui si scrive non è stato ancora pacchettizzato da Oracle per Debian 13 Trixie. Se è richiesto come requisito installare MySQL 8.0 o MySQL 8.4, al momento è necessario compilarlo da sorgente.

MySQL è però rimpiazzato dal fork completamente libero MariaDB che garantisce più funzionalità e supporto. Installiamo MariaDB 11.8 direttamente dai repository Debian:

apt install mariadb-server
Supporto per Ambienti di Produzione e Consulenza Dedicata

Configurare e mantenere uno stack LAMP ad alte prestazioni richiede competenze specifiche. Siamo al tuo fianco per ottimizzare la sicurezza e la stabilità del tuo server aziendale, evitando colli di bottiglia e configurazioni errate.

Richiedi un'Analisi Gratuita (30 min.)

Daver (non verificato)

Ven, 09/01/2026 - 14:30

Ragazzi, manca la modifica della direttiva "listen" nel file di conf di FPM (/etc/php/8.4/fpm/pool.d) in "listen = 9000" secondo la chiamata del gestore.

Aggiungi un commento

Comment

  • Elementi HTML permessi: <br> <p> <code class="language-*"> <pre>
  • Linee e paragrafi vanno a capo automaticamente.
  • Solo le immagini ospitate su questo sito possono essere utilizzate nel tag <img>.