Salta al contenuto principale

Come Installare LAMP in Red Hat RHEL 8

In questa guida vedremo come installare LAMP in Red Hat RHEL 8 utilizzando dnf, il gestore di pacchetti di default.

Introduzione

Nei nostri interventi di Assistenza Linux, 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 installare LAMP in Red Hat RHEL 8 iniziamo installando il web server Apache con HTTPS, il primo componente dello stack, 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 anche come generare un certificato HTTPS valido e gratuito con Let's Encrypt.

Installare LAMP in Red Hat RHEL 8

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 Fri 2024-10-18 02:44:28 UTC; 8s ago
     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-8.noar
ch.rpm
sudo dnf install certbot python3-certbot-apache

Accettiamo la chiave se richiesto:

Importing GPG key 0x2F86D6A1:
 Userid     : "Fedora EPEL (8) <[email protected]>"
 Fingerprint: 94E2 79EB 8D8F 25B2 1810 ADF1 21EA 45AB 2F86 D6A1
 From       : /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-8
Is this ok [y/N]: Y

Installiamo Let's Encrypt certbot

sudo dnf install certbot python3-certbot-apache

Riavviamo Apache2 httpd per peremettergli 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 MySQL o MariaDB

Per installare MySQL o MariaDB, utilizziamo i pacchetti corrispondenti mysql-server e mariadb-server.

  1. Per installare MySQL server:

    sudo dnf install mysql-server
  2. Per installare MariaDB (personalmente lo preferisco):

    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.

Serve aiuto? Consulenza Red Hat Gratis

Hai bisogno di supporto per Red Hat RHEL? Prova i nostri servizi di consulenza!

Conclusione

Siamo riusciti a installare LAMP in Red Hat RHEL 8, 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>.