GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Installa Apache, MySQL, PHP (stack LAMP) su Ubuntu 20.04 LTS

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 è , 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/ /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

Ubuntu
  1. Come installare lo stack Linux, Apache, MySQL, PHP (LAMP) su Ubuntu 16.04

  2. Ubuntu 14.10 Tutorial server LAMP con Apache 2, PHP 5 e MySQL (MariaDB)

  3. Tutorial del server LAMP di Ubuntu 15.04 con Apache 2, PHP 5 e MariaDB (invece di MySQL)

  4. Come installare lo stack LAMP su Ubuntu 22.04 LTS

  5. Come installare Apache, MySQL, PHP (LAMP) su Ubuntu 16.04 LTS

Come installare lo stack LAMP (Apache, MariaDB, PHP7.1) su Ubuntu 17.10

Come installare lo stack LAMP su Ubuntu 20.04 Server/Desktop

Come installare Apache, MySQL, PHP su Ubuntu 18.04 LTS

Come installare Apache, MySQL, PHP (stack LAMP) su Ubuntu

Come installare LAMP su un server Ubuntu 15.04

Come installare lo stack Apache, MySQL, PHP (LAMP) su Ubuntu 16.04