Salta al contenuto principale

Guida: Come Installare LAMP in Red Hat RHEL 10 How To

In questa guida vediamo come installare LAMP in Red Hat RHEL 10 utilizzando dnf, il gestore di pacchetti di default e come creare i certificati SSL/TLS per abilitare l'HTTPS sul web server

Nei nostri interventi di Consulenza e Assistenza Linux professionale, gli stack LAMP (Linux, Apache, MySQL, PHP), LEMP (NginX) e simili, sono fondamentali per Web App, CMS ed e-commerce come WordPress, Magento, Drupal e molti altri.

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 anche come generare un certificato HTTPS valido e gratuito con Let's Encrypt.

Installare LAMP in Red Hat RHEL 10

1. Installare Apache2

Di default, è previsto il modulo multi-processi mpm_prefork, che permette di utilizzare mod_php o php8.0, l'interprete interno. Questo approccio è sconsigliato per siti molto visitati, poiché arrivati al numero massimo di thread, il web server smette di rispondere fino alla liberazione di un thread.

  1. Installiamo Apache2

    sudo dnf install httpd
  2. Assicuriamoci che il modulo mpm_event_module sia in uso per assicurarci migliori prestazioni.

    sudo grep mpm_event_module /etc/httpd/conf.modules.d/00-mpm.conf
    1. Se non viene visualizzato nulla editiamo il file /etc/httpd/conf.modules.d/00-mpm.conf in modo che la linea LoadModule risulti come la seguente, per caricare mpm_event

      LoadModule mpm_event_module modules/mod_mpm_event.so
  3. Controlliamo allo stesso modo precedente che sia attivo http2.

    sudo grep http2_module /etc/httpd/conf.modules.d/10-h2.conf
    1. Nel caso non lo sia editiamo il file /etc/httpd/conf.modules.d/10-h2.conf come sotto:

      LoadModule http2_module modules/mod_http2.so
  4. Riavviamo Apache2.

    sudo systemctl restart httpd
  5. Assicuriamoci che Apache2 sia abilitato all'avvio

    sudo systemctl enable httpd
    sudo systemctl start httpd
  6. Controlliamo che sia attivo Apache2 httpd

    sudo systemctl status httpd
    ● httpd.service - The Apache HTTP Server
                Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
                Active: active (running) since Mon 2026-03-16 08:57:10 UTC;
     Main PID: 74751 (httpd)
  7. Permettiamo il traffico HTTP e HTTPS attraverso il firewall

    sudo firewall-cmd --permanent --add-service=http
    sudo firewall-cmd --permanent --add-service=https
    sudo firewall-cmd --reload

2. Installare PHP-FPM

PHP-FPM è un'implementazione alternativa di PHP FastCGI, nota per la velocità, tre volte superiore al classico modulo, con funzionalità aggiuntive. FPM è un vero e proprio demone che resta in ascolto per le richieste PHP tramite una porta o un socket UNIX. Rappresenta la P del nostro LAMP.

  1. Installiamo FPM e FastCGI.

    sudo dnf install php php-fpm
  2. Riavviamo il processo di PHP FPM.

    sudo systemctl restart php-fpm
  3. Riavviamo Apache2.

    sudo systemctl restart httpd

Configurazione Virtual Host PHP-FPM

È ora possibile configurare tutti i virtual host di Apache2 per utilizzare FPM con il modello sotto, o crearne nuovi all'interno di /etc/httpd/conf.d/ utilizzando un nome che termina in .conf, partendo dal questo esempio:

<VirtualHost *:80>
    DocumentRoot /var/www/html
    ServerName www.mydomain.ext
    # Other directives here
    <FilesMatch ".+\.ph(p[345]?|t|tml)$">
        SetHandler "proxy:unix:/run/php-fpm/www.sock"
    </FilesMatch>    
</VirtualHost>

Ora possiamo testare il web server e PHP creando il file  /var/www/html/info.php:

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

Installiamo i moduli necessari e PHP-MySQL. Possiamo scegliere di installare anche alcuni dei più comuni moduli.

sudo dnf install php-pear \
                php-{mysqlnd,gd,intl,snmp,xsl,pdo,mbstring}

3. Installare Let's Encrypt per Certificati SSL gratuiti

Grazie a Let's Encrypt e al demone certbot, è possibile generare certificati SSL universalmente riconosciuti, sicuri e gratuiti. È necessario configurare il nome DNS del sito web in modo da raggiungere l'IP del nostro server.

Esempio di configurazione DNS

Per configurare il DNS, accediamo al pannello del nostro fornitore e creiamo un record di tipo "A".

mydomain.ext          A       1.1.1.1

Installiamo Let's Encrypt per generare i certificati SSL e TLS.

sudo dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-10.noarch.rpm
sudo dnf install certbot python3-certbot-apache

Accettiamo la chiave se richiesto:

Importing GPG key 0xE37ED158:
 Userid     : "Fedora (epel10) <[email protected]>"
 Fingerprint: 7D8D 15CB FC4E 6268 8591 FB26 33D9 8517 E37E D158
 From       : /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-10

Installiamo Let's Encrypt certbot

sudo dnf install certbot python3-certbot-apache

Riavviamo Apache2 httpd per permettergli di generare i certificati auto firmati

sudo systemctl restart httpd

Creiamo la configurazione di Apache2.

sudo certbot --apache

Testiamo il rinnovo dei certificati.

sudo certbot renew --dry-run

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

sudo grep certbot /etc/cron.d/ -R

Se la risoluzione del nostro dominio è corretta, i nostri virtual host risponderanno in HTTPS, restituendoci il famoso "lucchetto verde" sul browser.

I Virtual Host di Apache2

Virtual Host HTTP

Per configurare un virtual host HTTP, possiamo utilizzare una definizione semplice come quella elencata di seguito creando un file nella directory /etc/httpd/conf.d

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
    <FilesMatch ".+\.ph(p[345]?|t|tml)$">
        SetHandler "proxy:unix:/run/php-fpm/www.sock"
    </FilesMatch>
</VirtualHost>
Virtual Host HTTPS

I virtual host HTTPS includono i percorsi 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:unix:/run/php-fpm/www.sock"
    </FilesMatch>
</VirtualHost>

4. Installare database MySQL compatibile: MariaDB

Per installare un database MySQL compatibile, nello specifico MariaDB, utilizziamo il pacchetto mariadb-server.

sudo dnf install mariadb-server

Per una configurazione dettagliata, potete fare riferimento alla nostra guida all'installazione e configurazione di MySQL per CentOS Stream 9.

La gestione Red Hat al tuo servizio

Vuoi un supporto esperto, proattivo e costante? Prova i nostri servizi di Consulenza e Assistenza Red Hat professionale!

Conclusione

Siamo riusciti a installare LAMP in Red Hat RHEL 10, ora il nostro server è pronto per ospitare un CMS o una Web App

Se hai trovato utile questa guida, condividila sui social, altri potrebbero averne bisogno.

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