Lo stack LAMP è una popolare piattaforma di sviluppo Web open source che può essere utilizzata per eseguire e distribuire siti Web dinamici e applicazioni basate sul Web. Tipicamente, uno stack LAMP è costituito da server web Apache, database MariaDB/MySQL, linguaggi di programmazione PHP/Python/Perl. LAMP è l'acronimo di Linux, Apache, MariaDB/MYSQL, PHP/Python/Perl. Questo tutorial passo dopo passo descrive come installare Apache, MySQL, PHP (stack LAMP) su Ubuntu 20.04 LTS Server Edition.
Installa Apache, MySQL, PHP (stack LAMP) su Ubuntu 20.04 LTS
Ai fini di questo tutorial, utilizzeremo il seguente sistema Ubuntu.
- Sistema operativo :Ubuntu 20.04 LTS Server Edition
- Indirizzo IP :192.168.225.52/24
Innanzitutto, installiamo il server Apache.
1. Installa il server web Apache in Ubuntu
Prima di tutto, aggiorna il server Ubuntu usando i comandi:
$ sudo apt update
$ sudo apt upgrade
Quindi, installa il server Web Apache:
$ sudo apt install apache2
Controlla se il server web Apache è in esecuzione o meno con il comando:
$ sudo systemctl status apache2
L'output di esempio sarebbe:
● apache2.service - The Apache HTTP Server Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabl> Active: active (running) since Fri 2020-05-29 07:02:26 UTC; 25s ago Docs: https://httpd.apache.org/docs/2.4/ Main PID: 23996 (apache2) Tasks: 55 (limit: 2283) Memory: 5.1M CGroup: /system.slice/apache2.service ├─23996 /usr/sbin/apache2 -k start ├─23998 /usr/sbin/apache2 -k start └─23999 /usr/sbin/apache2 -k start May 29 07:02:26 ubuntuserver systemd[1]: Starting The Apache HTTP Server... May 29 07:02:26 ubuntuserver apachectl[23981]: AH00558: apache2: Could not reliably det> May 29 07:02:26 ubuntuserver systemd[1]: Started The Apache HTTP Server.
Congratulazioni! Il servizio Apache è attivo e funzionante!!
1.1. Consenti server Web Apache tramite firewall UFW
UFW , sta per U F complicato irew all, è un programma per la gestione di un firewall netfilter progettato per essere facile da usare. UFW è disponibile per impostazione predefinita in tutte le versioni di Ubuntu.
Per impostazione predefinita, non è possibile accedere al browser Web Apache da sistemi remoti se è stato abilitato il firewall UFW in Ubuntu 20.04 LTS. Devi consentire http
e https
porte seguendo i passaggi indicati di seguito.
Innanzitutto, elenca i profili dell'applicazione disponibili sul tuo sistema Ubuntu usando il comando:
$ sudo ufw app list
Esempio di output:
Available applications: Apache Apache Full Apache Secure OpenSSH
Come puoi vedere, le applicazioni Apache e OpenSSH hanno installato profili UFW. Puoi elencare le informazioni su ciascun profilo e le relative regole incluse utilizzando ufw app info "Profile Name"
comando.
Esaminiamo il “Apache Full”
profilo usando il comando:
$ sudo ufw app info "Apache Full"
Risultato di esempio:
Profile: Apache Full Title: Web Server (HTTP,HTTPS) Description: Apache v2 is the next generation of the omnipresent Apache web server. Ports: 80,443/tcp
Come vedi, “Apache Full”
profile ha incluso le regole per abilitare il traffico verso le porte 80
e 443
.
Ora, esegui il seguente comando per consentire HTTP
in entrata e HTTPS
traffico per questo profilo:
$ sudo ufw allow in "Apache Full"
Vedrai un output come di seguito:
Rules updated Rules updated (v6)
Se non vuoi consentire https
traffico, ma solo http
(80) traffico, esegui:
$ sudo ufw app info "Apache"
1.2. Prova il server Web Apache
Ora apri il tuo browser web e accedi alla pagina di test di Apache navigando su http://localhost/
o http://IP-Address/
.
Se vedi la "Pagina predefinita di Apache 2 Ubuntu" come mostrato di seguito, sei a posto. Il server Apache funziona!
2. Installa MySQL in Ubuntu
Per installare MySQL su Ubuntu, esegui:
$ sudo apt install mysql-server
Verifica se il servizio MySQL è in esecuzione o non utilizza il comando:
$ sudo systemctl status mysql
Risultato di esempio:
● mysql.service - MySQL Community Server Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled) Active: active (running) since Fri 2020-05-29 07:15:22 UTC; 2min 8s ago Main PID: 25242 (mysqld) Status: "Server is operational" Tasks: 38 (limit: 2283) Memory: 323.7M CGroup: /system.slice/mysql.service └─25242 /usr/sbin/mysqld May 29 07:15:16 ubuntuserver systemd[1]: Starting MySQL Community Server... May 29 07:15:22 ubuntuserver systemd[1]: Started MySQL Community Server.
Come puoi vedere nell'output sopra, MySQL è in esecuzione!
2.1. Imposta la password dell'utente amministrativo (root) del database per Mysql
Per impostazione predefinita, MySQL root
la password dell'utente è vuota. Non è consigliabile utilizzare una password vuota per l'account amministrativo del database. Devi proteggere il tuo server MySQL eseguendo il seguente script:
$ sudo mysql_secure_installation
Ti verrà chiesto se desideri impostare "VALIDATE PASSWORD"
componente o meno. Questo componente consente agli utenti di configurare una password complessa per le credenziali del database. Se abilitato, verificherà automaticamente la forza della password e impone agli utenti di impostare solo le password sufficientemente sicure. È sicuro lasciarlo disabilitato . Tuttavia, è necessario utilizzare una password complessa e univoca per le credenziali del database. Se non vuoi abilitare questo componente, premi un tasto qualsiasi per saltare la parte di convalida della password e continuare il resto dei passaggi.
Inserisci y
se vuoi impostare VALIDATE PASSWORD
componente:
Securing the MySQL server deployment. Connecting to MySQL using a blank password. VALIDATE PASSWORD COMPONENT can be used to test passwords and improve security. It checks the strength of password and allows the users to set only those passwords which are secure enough. Would you like to setup VALIDATE PASSWORD component? Press y|Y for Yes, any other key for No: y
Se la tua risposta è Sì , ti verrà chiesto di scegliere il livello di convalida della password. Le convalide delle password disponibili sono basse , medio e forte . Basta inserire il numero appropriato (0 per basso, 1 per medio e 2 per password complessa) e premere il tasto INVIO.
There are three levels of password validation policy: LOW Length >= 8 MEDIUM Length >= 8, numeric, mixed case, and special characters STRONG Length >= 8, numeric, mixed case, special characters and dictionary file Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 0
Ora, inserisci la password per MySQL root
utente. Tieni presente che devi usare la password per MySQL root
utente a seconda della politica della password scelta nel passaggio precedente. Se non hai abilitato il plug-in, utilizza una password complessa e univoca di tua scelta.
Please set the password for root here. New password: Re-enter new password: Estimated strength of the password: 100 Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : y
Dopo aver inserito la password due volte, vedrai la sicurezza della password (nel nostro caso è 100 ). Se per te va bene, premi Y per continuare con la password fornita. Se non sei soddisfatto della lunghezza della password, premi qualsiasi altro tasto e imposta una password complessa. Sono d'accordo con la mia password attuale, quindi ho scelto y
.
Per il resto delle domande, digita y
e premi ENTER
. Ciò rimuoverà l'utente anonimo, non consentirà l'accesso dell'utente root in remoto e rimuoverà il database di prova.
Remove anonymous users? (Press y|Y for Yes, any other key for No) : y Success. Normally, root should only be allowed to connect from 'localhost'. This ensures that someone cannot guess at the root password from the network. Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y Success. By default, MySQL comes with a database named 'test' that anyone can access. This is also intended only for testing, and should be removed before moving into a production environment. Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y - Dropping test database... Success. - Removing privileges on test database... Success. Reloading the privilege tables will ensure that all changes made so far will take effect immediately. Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y Success. All done!
Fatto! Abbiamo impostato MySQL root
password dell'utente.
2.2. Modifica il metodo di autenticazione per l'utente root MySQL
Per impostazione predefinita, l'utente root di MySQL è impostato per l'autenticazione utilizzando auth_socket
plugin a partire da MySQL 5.7 e versioni successive su Ubuntu. Anche se migliora la sicurezza, complicherà anche le cose quando accedi al tuo server di database utilizzando qualsiasi programma esterno, ad esempio phpMyAdmin. Per risolvere questo problema, devi cambiare il metodo di autenticazione da auth_socket a caching_sha2_password
o mysql_native_password
.
A partire dalla versione MySQL 8.0, il plug-in di autenticazione preferito e predefinito è caching_sha2_password
. Il caching_sha2_password
il plug-in di autenticazione fornisce una crittografia della password più sicura rispetto a mysql_native_password
plug-in.
Per modificare il plug-in di autenticazione, accedi al tuo prompt MySQL usando il comando:
$ sudo mysql
Oppure,
$ mysql -u root -p
Immettere la root
di MySQL password che abbiamo impostato nel passaggio precedente.
Esegui il seguente comando al prompt di mysql per trovare il metodo di autenticazione corrente per tutti gli account utente MySQL:
mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;
Risultato di esempio:
+------------------+------------------------------------------------------------------------+-----------------------+-----------+ | user | authentication_string | plugin | host | +------------------+------------------------------------------------------------------------+-----------------------+-----------+ | debian-sys-maint | $A$005$=s%UO"�[email protected]>[email protected] | caching_sha2_password | localhost | | mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost | | mysql.session | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost | | mysql.sys | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost | | root | | auth_socket | localhost | +------------------+------------------------------------------------------------------------+-----------------------+-----------+ 5 rows in set (0.00 sec)
Come vedi, l'utente root mysql usa auth_socket
plug-in per l'autenticazione.
Per modificare auth_socket
plug-in per caching_sha2_password
, esegui il comando seguente al prompt di MySQL. Se hai abilitato VALIDATE PASSWORD
plug-in, assicurati di aver utilizzato una password complessa in base ai requisiti della politica corrente. Un forte dovrebbe essere composto da almeno 8 caratteri, tra cui una lettera maiuscola, una lettera minuscola, un numero e un carattere speciale.
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'Password123#@!';
Sostituisci Password123#@!
con una password forte e univoca di tua scelta nel comando sopra.
Aggiorna le modifiche usando il comando:
mysql> FLUSH PRIVILEGES;
Ora controlla se il plug-in di autenticazione corrente è stato modificato o non utilizzando il comando:
mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;
Risultato di esempio:
Bene! Ora il root
di MySQL l'utente può autenticarsi utilizzando la password per accedere alla shell MySQL.
Esci dal prompt di MySQL:
mysql> exit
Nota:
Anche se caching_sha2_password
fornisce una crittografia sicura avanzata, presenta alcuni problemi di compatibilità con le installazioni MySQL esistenti. Per i dettagli, fare riferimento a questo collegamento . Se hai riscontrato problemi di compatibilità, devi impostare mysql_native_password
plug-in come plug-in di autenticazione predefinito.
Per passare a mysql_native_password
plug-in, esegui il seguente comando al prompt di MySQL.
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
Aggiorna le modifiche usando il comando:
mysql> FLUSH PRIVILEGES;
Ora controlla di nuovo se il metodo di autenticazione è stato modificato o non utilizzando il comando:
mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;
Risultato di esempio:
Esci dal prompt di MySQL:
mysql> exit
3. Installa PHP in Ubuntu
Per installare PHP, esegui:
$ sudo apt install php libapache2-mod-php php-mysql
Dopo aver installato PHP, crea info.php
file nella cartella del documento radice di Apache. Di solito, la cartella del documento radice di Apache sarà /var/www/html/
o /var/www/
nella maggior parte delle distribuzioni Linux basate su Debian. In Ubuntu 20.04 LTS, è /var/www/html/
.
Creiamo info.php
file nella cartella principale di Apache:
$ sudo vi /var/www/html/info.php
Aggiungi le seguenti righe:
<?php phpinfo(); ?>
Premi ESC
digitare e digitare :wq
per salvare e uscire dal file. Riavvia il servizio Apache per rendere effettive le modifiche.
$ sudo systemctl restart apache2
3.1. Prova PHP
Apri il tuo browser web e vai a http://IP-address/info.php
URL.
Vedrai le informazioni php come versione, API del server e i dettagli di tutti i plugin php abilitati.
Di solito, quando un utente richiede una directory dal server web, Apache cercherà prima un file chiamato index.html
. Se vuoi cambiare Apache per servire file php piuttosto che altri, sposta index.php
alla prima posizione nella dir.conf
file come mostrato di seguito
$ sudo vi /etc/apache2/mods-enabled/dir.conf
Ecco il contenuto del file di cui sopra.
<IfModule mod_dir.c> DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm </IfModule> # vim: syntax=apache ts=4 sw=4 sts=4 sr noet
Sposta il index.php
file al primo . Una volta apportate le modifiche, il tuo dir.conf
il file apparirà come sotto.
<IfModule mod_dir.c> DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm </IfModule> # vim: syntax=apache ts=4 sw=4 sts=4 sr noet
Premi ESC
digitare e digitare :wq
per salvare e chiudere il file. Riavvia il servizio Apache per rendere effettive le modifiche.
$ sudo systemctl restart apache2
3.2. Installa moduli PHP
Per migliorare la funzionalità di PHP, puoi installare alcuni moduli PHP aggiuntivi.
Per elencare i moduli PHP disponibili, esegui:
$ sudo apt-cache search php- | less
Risultato di esempio:
Utilizzare i tasti freccia per scorrere il risultato. Per uscire, digita q
.
Per trovare i dettagli di un particolare modulo php, ad esempio php-gd , esegui:
$ sudo apt-cache show php-gd
Per installare un modulo php esegui:
$ sudo apt install php-gd
Non dimenticare di riavviare il servizio Apache dopo aver installato un modulo php. Per verificare se il modulo è caricato o meno, apri il file info.php nel tuo browser e controlla se è presente.
Congratulazioni! Come puoi vedere, è molto facile installare apache, mysql, php (stack LAMP) su Ubuntu 20.04 LTS. Ora puoi iniziare a ospitare i tuoi siti web utilizzando lo stack LAMP.
Leggi il prossimo:
- Installa phpMyAdmin con lo stack LAMP su Ubuntu 20.04 LTS
Lettura correlata:
- Installa Nginx, MySQL, PHP (stack LEMP) su Ubuntu 20.04 LTS
- Installa Apache, MariaDB, PHP (stack LAMP) in CentOS 8