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