Ubuntu 22.04: installa un server LAMP (Linux Apache MariaDB PHP)

Panoramica della LAMPADA

In questo tutorial spiegherò come installare un server LAMP su Ubuntu 22.04.

LAMP sta per Linux Apache MariaDB PHP, è un insieme di software che troviamo molto spesso quando vogliamo gestire un server Web.

Con LAMP puoi operare:

  • I CMS più famosi come WordPress
  • GLPI
  • Nextcloud
  • Applicazioni che utilizzano Symfony, CakePHP

Per la parte Linux utilizzerò la distribuzione Ubuntu 22.04.

Oltre all’installazione dei componenti, in questo tutorial ti fornirò alcune spiegazioni oltre ad alcuni elementi di configurazione.

Non parlerò dell’installazione di Ubuntu in questo tutorial e andremo direttamente alla parte del software AMP.

Apache2 – Server Web

Apache2 sarà il servizio web, sarà responsabile dell’elaborazione delle richieste HTTP e HTTPS.

Installazione di Apache2 su Ubuntu 22.04

Per installare Apache2 immettere il seguente comando:

sudo apt install apache2

Conferma l’installazione dei pacchetti, puoi aggiungere -y al comando di installazione per non avere conferma

Attendi durante l’installazione di Apache2…

Il server Apache2 è installato.

Prova come funziona Apache 2

Il modo più semplice per testare il funzionamento è accedere al server.

Avviare un browser e inserire l’indirizzo IP del server come URL http://w.x.y.z

Dovresti arrivare alla pagina seguente:

La pagina indice si trova nella seguente cartella: /var/www/html

Questa cartella contiene il contenuto predefinito del sito.

File di configurazione di Apache2

I file di configurazione di Apache si trovano nel seguente percorso su Ubuntu 22.04: /etc/apache2

Il file di configurazione principale di Apache2 è apache2.conf.

Su Ubuntu e Debian troviamo diverse cartelle come questa:

  • xxxxx-available
  • xxxxx-enabled

Nelle cartelle xxxxx-available troveremo gli elementi di configurazione disponibili non applicati ad Apache2 e nella cartella xxxxx-enabled troveremo le configurazioni caricate.

Generalmente per applicare una configurazione, creiamo un collegamento simbolico del file situato in xxxxx-disponibile nella cartella abilitata xxxxx.

Alcuni comandi utili per Apache2

Ecco un elenco di comandi per Apache2:

Visualizza lo stato del servizio:

sudo systemctl status apache2

Ricarica la configurazione di Apache2

sudo systemctl reload apache2

Arresta il servizio Apache2:

sudo systemctl stop apache2

Avvia il servizio Apache2:

sudo systemctl start apache2

Riavvia il servizio Apache2:

sudo systemctl restart apache2

Abilita il servizio Apache2 all’avvio di Ubuntu:

sudo systemctl enable apache2

Testare la configurazione dei file Apache2:

sudo apachectl configtest

Apache2: crea un host virtuale in base al nome

L’aggiunta di un host virtuale consente di eseguire diversi siti Web sullo stesso server Web Apache2.

Il fatto che sia basato sul nome (URL) consente a più host virtuali di utilizzare lo stesso indirizzo IP e le porte 80 e 443. Apache2 utilizzerà l’URL (nome di dominio) per elaborare le richieste e fornire il contenuto corretto.

Per illustrare questo tutorial, creerò un virtualhost in base al nome che avrà l’url lamp.rdr-it.io

Inizia creando una cartella che riceverà i file:

sudo mkdir /var/www/lamp

Nella cartella /etc/apache2/sites-available creeremo un file che conterrà la configurazione del sito web.

sudo nano /etc/apache2/sites-available/lamp.rdr-it.io.conf

Ecco il contenuto del file:

Elementi da modificare:

  • Riga 2: ServerName è il nome di dominio del sito web
  • Riga 5: DocumentRoot indica il percorso in cui sono archiviati i file del sito sul server (corrisponde alla cartella creata in precedenza).
  • Riga 7 e 8: nome dei file di registro di Apache2

Creeremo ora un collegamento simbolico del file nella cartella /etc/apache2/sites-enables per attivare la configurazione dell’host virtuale.

sudo ln -s /etc/apache2/sites-available/lamp.rdr-it.io.conf /etc/apache2/sites-enabled/

Prova la configurazione di Apache 2:

sudo apachectl configtest

Se non viene restituito alcun errore di blocco, riavviare il servizio Apache2:

sudo systemctl restart apache2

Ora hai un sito in grado di rispondere all’URL http://lamp.rdr-it.io.

Affinché l’host virtuale funzioni, è necessario puntare il nome del dominio all’IP del server Apache2 e creare almeno un file index.html.

Aggiungi regole UFW per Apache2

Se hai abilitato il firewall su Ubuntu 22.04 con UFW, devi aggiungere regole per consentire il traffico verso le porte Apache 80 e 443.

Esistono diverse soluzioni per questo:

Utilizza le app:

sudo ufw allow Apache Full

Per porte per consentire il traffico sulle porte 80 e 443:

sudo ufw allow 80
sudo ufw allow 443

MariaDB – Server di database

Passeremo ora al server Database che memorizzerà i dati, in questo tutorial utilizzerò MariaDB, per MySQL è quasi la stessa cosa.

Installa MariaDB su Ubuntu 22.04

Per installare il server database MariaDB immettere il seguente comando:

sudo apt install mariadb-server -y

Nell’acquisizione non ho inserito l’opzione -y, ho dovuto confermare la scelta.

Una volta completata l’installazione, controlla il funzionamento del server MariaDB:

sudo systemctl status mariadb

Il server MariaDB è installato e funzionante.

Creazione di un database e di un utente

Ora creeremo un database (lamp) e un utente (lamp) sul server MariaDB.

Pour commencer, il faut se connecter au serveur MariaDB avec la commande suivante :

sudo mysql

Ora utilizzeremo il linguaggio SQL per la creazione del database, dell’utente e dell’assegnazione dei diritti.

Per creare il database:

CREATE DATABASE lamp;

Per verificare che il database sia stato creato, inserire la seguente query:

SHOW DATABASES;

Creeremo ora l’utente lampada che avrà la password lampada-password e che potrà connettersi da qualsiasi indirizzo IP:

CREATE USER 'lamp'@'%' IDENTIFIED BY 'lamp-password';

Il % ti consente di connetterti da qualsiasi indirizzo IP, per limitare la connessione alla sostituzione locale con localhost.

È ora necessario concedere i diritti sul database all’utente, per fare ciò effettuare le seguenti richieste:

GRANT ALL PRIVILEGES ON lamp.* TO 'lamp'@'%';
FLUSH PRIVILEGES;

La prima richiesta conferisce tutti i diritti sulle tabelle (.*) nel database delle lampade all’utente ‘lamp’@’%’

La seconda richiesta consente di ricaricare i diritti.

Su MariaDB un utente viene identificato dal suo login e da dove può connettersi, ecco perché l’utente è xxx@yyy e non solo xxx, il che consente di assegnare diritti diversi a seconda di dove l’utente accede.

Per visualizzare le autorizzazioni di un utente:

SHOW GRANTS FOR 'lamp'@'%';

Componenti aggiuntivi di MariaDB

Ecco alcune informazioni aggiuntive su MariaDB.

I file di configurazione si trovano nella seguente cartella: /etc/mysql

Per motivi di compatibilità, il nome della cartella è mysql

Nei comandi è possibile utilizzare mysql o mariadb.

I file del database si trovano in: /var/lib/mysql.

I log di MariaDB si trovano nella cartella: /var/log/mysql.

PHP

L’ultimo componente dello stack LAMP è PHP, che è un linguaggio di programmazione/scripting ampiamente utilizzato nello sviluppo.

Con Apache, ci sono due modi per far funzionare PHP:

  • Modulo PHP che integra PHP tramite un modulo Apache che non richiede configurazione
  • PHP-FPM che funziona come servizio indipendente e consente maggiore flessibilità e configurazione

In questo tutorial, ti mostrerò entrambi.

Personalmente preferisco utilizzare PHP-FPM che utilizza un servizio separato che permette di dissociare Apache da PHP.

Inoltre, l’uso di PHP-FPM consente di eseguire contemporaneamente diverse versioni di PHP.

Al momento della stesura di questo tutorial, sui repository Ubuntu 22.04, la versione fornita è PHP 8.1

Se desideri un’altra versione di PHP, devi passare attraverso il repository ppa:ondrej/php.

Installa PHP come modulo Apache

Per installare PHP inserisci il seguente comando:

sudo apt install php libapache2-mod-php php-mysqli -y

Una volta completata l’installazione, inserisci il seguente comando per testare PHP:

php -v

Questo comando visualizza la versione di PHP

Ora testeremo PHP tramite Apache con un file php che inseriremo nella cartella /var/www/html.

Crea il file phpinfo.php

sudo nano /var/www/html/phpinfo.php

Copia il seguente contenuto nel file:

Da un browser accedere al seguente indirizzo: http://ip-lamp-server/phpinfo.php

Viene visualizzata la seguente pagina:

L’API del server ci dice Apache 2.0 Handler, che indica che è stato utilizzato il modulo Apache PHP

PHP-FPM con Apache2

Ora vedremo come utilizzare PHP-FPM con Apache2.

Se hai installato il modulo Apache PHP, lo disattiveremo prima:

sudo a2dismod php8.1

Riavvia Apache :

sudo systemctl restart apache2

Per verificare che il modulo PHP sia disabilitato viene visualizzata la pagina phpinfo.php, dovresti avere il codice sulla pagina perché il codice PHP non viene più interpretato.

Installa PHP-FPM:

sudo apt install php php-fpm php-mysql

Verifica che il servizio php-fpm sia avviato:

sudo systemctl status php8.1-fpm

Per funzionare è necessario attivare due moduli su Apache:

sudo a2enmod proxy_fcgi proxy

Riavvia Apache per prendere in considerazione i nuovi moduli:

sudo systemclt restart apache2

Potremo passare alla configurazione del virtualhost, prima di visualizzare i processi PHP:

ll /run/php

Qui ho solo un processo per PHP 8.1 in FPM (php8.1-fpm.sock)

Ora devi dire ad Apache che i file .php devono essere elaborati da php-fpm.

Questa direttiva viene eseguita nei file virtualhost.

Qui modificheremo l’host virtuale predefinito:

sudo nano /etc/apache2/sites-available/000-default.conf

Nella parte VirtualHost aggiungi:

Prova la configurazione di Apache:

sudo apachectl configtest

Riavvia Apache:

sudo systemctl restart apache2

Mostra di nuovo la pagina phpinfo.php.

Qui possiamo vedere a livello di API del server che abbiamo FPM/FastCGI


Ora sai come installare un server LAMP su Ubuntu 22.04.

Questo tutorial dovrebbe poter essere applicato su Ubuntu 20.04 e Debian.




Lascia un commento