

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Tutorial: Installare un server LAMP su AL2023
<a name="ec2-lamp-amazon-linux-2023"></a>

[Le seguenti procedure consentono di installare un server Web Apache con supporto PHP e MariaDB (un fork di MySQL sviluppato dalla comunità) sull'istanza (a volte chiamata server web LAMP o stack LAMP).](https://mariadb.org/about/) AL2023 Puoi usare questo server per ospitare un sito Web statico o distribuire un'applicazione PHP dinamica che legge e scrive informazioni in un database.

**Importante**  
Queste procedure sono destinate all'uso con. AL2023 Se si sta tentando di configurare un server web LAMP su una distribuzione diversa, come Ubuntu o Red Hat Enterprise Linux, questo tutorial non funzionerà. Per Ubuntu, consulta la seguente documentazione della comunità Ubuntu: [ApacheMySQLPHP](https://help.ubuntu.com/community/ApacheMySQLPHP). Per altre distribuzioni, consulta la relativa documentazione specifica.

**Topics**
+ [Fase 1: preparare il server LAMP](#prepare-lamp-server-2023)
+ [Fase 2: verificare il server LAMP](#test-lamp-server-2023)
+ [Fase 3: proteggere il server di database](#secure-mariadb-lamp-server-2023)
+ [Fase 4: Installazione (facoltativa) phpMyAdmin](#install-phpmyadmin-lamp-server-2023)
+ [Risoluzione dei problemi](#lamp-troubleshooting-2023)
+ [Argomenti correlati](#lamp-more-info-2023)

## Fase 1: preparare il server LAMP
<a name="prepare-lamp-server-2023"></a>

**Prerequisiti**
+ Questo tutorial presuppone che tu abbia già lanciato una nuova istanza utilizzando AL2023, con un nome DNS pubblico raggiungibile da Internet. Per ulteriori informazioni, consulta [AL2023 su Amazon EC2](ec2.md). È inoltre necessario aver configurato il gruppo di sicurezza per consentire le connessioni SSH (porta 22), HTTP (porta 80) e HTTPS (porta 443). *Per ulteriori informazioni su questi prerequisiti, consulta [Autorizza il traffico in entrata per le tue istanze Linux nella](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/authorizing-access-to-an-instance.html) Amazon EC2 User Guide.*
+ La procedura seguente installa l'ultima versione di PHP disponibile su, attualmente 8.1. AL2023 Se hai in programma di utilizzare applicazioni PHP diverse da quelle descritte in questo tutorial, devi verificare che siano compatibili con la versione 8.1.<a name="install_apache-2023"></a>

**Per preparare il server LAMP**

1. Connettiti alla tua istanza. Per ulteriori informazioni, consulta [AL2023 Connessione alle istanze](connecting-to-instances.md).

1. Per verificare che tutti i pacchetti software siano aggiornati, eseguire un aggiornamento rapido del software sull'istanza. Questo processo può richiedere alcuni minuti, ma è importante accertarsi che siano disponibili gli aggiornamenti della sicurezza e le correzioni dei bug più recenti.

   L'opzione `-y` installa gli aggiornamenti senza chiedere conferma. Se desideri esaminare gli aggiornamenti prima di installarli, puoi omettere questa opzione.

   ```
   [ec2-user ~]$ sudo dnf upgrade -y
   ```

1. Installa le versioni più recenti del server web Apache e dei pacchetti PHP per. AL2023

   ```
   [ec2-user ~]$ sudo dnf install -y httpd wget php-fpm php-mysqli php-json php php-devel
   ```

1. Installa i pacchetti software MariaDB. Utilizzare il comando **dnf install** per installare contemporaneamente più pacchetti software e tutte le dipendenze correlate.

   ```
   [ec2-user ~]$ sudo dnf install mariadb105-server
   ```

   È possibile visualizzare le versioni correnti di tali pacchetti utilizzando il comando seguente:

   ```
   [ec2-user ~]$ sudo dnf info package_name
   ```

   Esempio:

   ```
   [root@ip-172-31-25-170 ec2-user]# dnf info mariadb105
   Last metadata expiration check: 0:00:16 ago on Tue Feb 14 21:35:13 2023.
   Installed Packages
   Name         : mariadb105
   Epoch        : 3
   Version      : 10.5.16
   Release      : 1.amzn2023.0.6
   Architecture : x86_64
   Size         : 18 M
   Source       : mariadb105-10.5.16-1.amzn2023.0.6.src.rpm
   Repository   : @System
   From repo    : amazonlinux
   Summary      : A very fast and robust SQL database server
   URL          : http://mariadb.org
   License      : GPLv2 and LGPLv2
   Description  : MariaDB is a community developed fork from MySQL - a multi-user, multi-threaded
                : SQL database server. It is a client/server implementation consisting of
                : a server daemon (mariadbd) and many different client programs and libraries.
                : The base package contains the standard MariaDB/MySQL client programs and
                : utilities.
   ```

1. Avviare il server Web Apache.

   ```
   [ec2-user ~]$ sudo systemctl start httpd
   ```

1.  Utilizzare il comando **systemctl** per configurare il server Web Apache per l'avvio a ogni avvio del sistema. 

   ```
   [ec2-user ~]$ sudo systemctl enable httpd
   ```

   Puoi verificare che **httpd** sia attivo eseguendo il seguente comando:

   ```
   [ec2-user ~]$ sudo systemctl is-enabled httpd
   ```

1. Se ancora non è stato fatto, aggiungere una regola di sicurezza per consentire le connessioni HTTP (porta 80) entranti all'istanza. Per impostazione predefinita, durante il lancio è stato creato un gruppo di *N* sicurezza **launch-wizard** per l'istanza. Se non hai aggiunto regole del gruppo di sicurezza supplementari, questo gruppo contiene una singola regola per consentire connessioni SSH.

   1. Apri la console Amazon EC2 all'indirizzo [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

   1. Nel riquadro di navigazione sinistro, scegli **Istanze** e seleziona la tua istanza.

   1. Nella scheda **Security (Sicurezza)** visualizzare le regole in entrata. Verrà visualizzata la regola seguente:

      ```
      Port range   Protocol     Source
      22           tcp          0.0.0.0/0
      ```
**avvertimento**  
L'utilizzo `0.0.0.0/0` consente a tutti gli IPv4 indirizzi di accedere all'istanza tramite SSH. L'opzione è accettabile per un breve periodo di tempo in un ambiente di test, ma non è sicura per gli ambienti di produzione. In produzione, potrai autorizzare solo un determinato indirizzo IP o un intervallo di indirizzi per accedere a un'istanza.

   1. Se non esiste alcuna regola in entrata per consentire connessioni HTTP (porta 80), la regola deve essere aggiunta ora. Scegliere il collegamento per il gruppo di sicurezza. Utilizzando le procedure descritte nella sezione [Autorizzazione del traffico in entrata per le istanze Linux](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/authorizing-access-to-an-instance.html), aggiungi una nuova regola di sicurezza in entrata con i seguenti valori:
      + **Type (Tipo)**: HTTP
      + **Protocollo**: TCP
      + **Port Range** (Intervallo porte): 80
      + **Source (Origine)**: personalizzata

1. Verificare il server Web. Nel browser Web, digitare l'indirizzo DNS pubblico (o l'indirizzo IP pubblico) dell'istanza. In assenza di contenuti in `/var/www/html`, dovresti visualizzare la pagina di test di Apache che mostra il messaggio "**Funziona\$1**".

   **Puoi ottenere il DNS pubblico per la tua istanza utilizzando la console Amazon EC2 (controlla **la colonna IPv4 Public** DNS; se questa colonna è nascosta, **scegli** Preferenze (l'icona a forma di ingranaggio) e attiva Public DNS). IPv4 **

   Verificare che il gruppo di sicurezza per l'istanza contenga una regola per consentire il traffico HTTP sulla porta 80. [Per ulteriori informazioni, consulta Aggiungere regole al gruppo di sicurezza.](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/working-with-security-groups.html#adding-security-group-rule)
**Importante**  
Se non utilizzi Amazon Linux, potrebbe inoltre essere necessario anche configurare il firewall sulla tua istanza per consentire queste connessioni. Per ulteriori informazioni sulla modalità di configurazione del firewall, consulta la documentazione per la distribuzione specifica.

Apache **httpd** utilizza i file che sono tenuti in una directory chiamata root del documento di Apache. La root del documento di Apache Amazon Linux è `/var/www/html`, che per impostazione predefinita è di proprietà della root.

Per permettere all'account `ec2-user` di manipolare file nella directory, è necessario modificare la proprietà e le autorizzazioni della directory. Sono disponibili molti modi per completare questa attività. In questo tutorial, aggiungi `ec2-user` al gruppo `apache` per assegnare la proprietà del gruppo `apache` della directory `/var/www` e assegnare autorizzazioni di scrittura al gruppo.<a name="setting-file-permissions-2023"></a>

**Per impostare le autorizzazioni dei file**

1. Aggiungere l'utente (in questo caso `ec2-user`) al gruppo `apache`.

   ```
   [ec2-user ~]$ sudo usermod -a -G apache ec2-user
   ```

1. Uscire e ripetere l'accesso per scegliere il nuovo gruppo, quindi verificare l'appartenenza.

   1. Uscire (utilizzare il comando **exit** o chiudere la finestra terminale):

      ```
      [ec2-user ~]$ exit
      ```

   1. Per verificare l'appartenenza al gruppo `apache`, riconnettersi all'istanza, quindi eseguire il seguente comando:

      ```
      [ec2-user ~]$ groups
      ec2-user adm wheel apache systemd-journal
      ```

1. Modificare la proprietà del gruppo di `/var/www` e dei suoi contenuti al gruppo `apache`.

   ```
   [ec2-user ~]$ sudo chown -R ec2-user:apache /var/www
   ```

1. Per aggiungere le autorizzazioni di scrittura di gruppo e impostare l'ID di gruppo nelle sottodirectory future, modificare le autorizzazioni di directory di `/var/www` e delle relative sottodirectory.

   ```
   [ec2-user ~]$ sudo chmod 2775 /var/www && find /var/www -type d -exec sudo chmod 2775 {} \;
   ```

1. Per aggiungere le autorizzazioni di scrittura di gruppo, modificare in modo ricorsivo le autorizzazioni del file di `/var/www` e delle relative sottodirectory:

   ```
   [ec2-user ~]$ find /var/www -type f -exec sudo chmod 0664 {} \;
   ```

Ora, `ec2-user` (e qualsiasi membro futuro del gruppo `apache`) può aggiungere, eliminare e modificare i file nella root del documento di Apache, consentendoti di aggiungere contenuti, ad esempio un sito Web statico o un'applicazione PHP.

**Per proteggere il server Web (facoltativo)**  
Un server Web che esegue il protocollo HTTP non offre alcuna sicurezza di trasporto per i dati inviati e ricevuti. Quando ti connetti a un server HTTP utilizzando un browser Web, URLs ciò che visiti, il contenuto delle pagine Web che ricevi e il contenuto (comprese le password) di tutti i moduli HTML che invii sono tutti visibili agli intercettatori in qualsiasi punto del percorso di rete. La best practice per la protezione del tuo server Web prevede l'installazione del supporto per HTTPS (HTTP Secure), che protegge i dati con la crittografia SSL/TLS.

Per informazioni sull'abilitazione di HTTPS sul server, consulta [Tutorial: Configura SSL/TLS su AL2023](SSL-on-amazon-linux-2023.md).

## Fase 2: verificare il server LAMP
<a name="test-lamp-server-2023"></a>

Se il server è installato e in esecuzione e le autorizzazioni dei file sono impostate correttamente, l'account `ec2-user` dovrebbe essere in grado di creare un file PHP nella directory `/var/www/html` disponibile da Internet.

**Per verificare il server LAMP**

1. Creare un file PHP nella root del documento di Apache.

   ```
   [ec2-user ~]$ echo "<?php phpinfo(); ?>" > /var/www/html/phpinfo.php
   ```

   Se si verifica un errore "Permission denied" (Autorizzazione negata) quando si tenta di eseguire questo comando, provare a uscire e accedere nuovamente per ottenere le autorizzazioni di gruppo appropriate configurate in [Per impostare le autorizzazioni dei file](#setting-file-permissions-2023).

1. In un browser Web, digitare l'URL del file appena creato. Questo URL è l'indirizzo DNS pubblico dell'istanza, seguito da una barra e dal nome di file. Ad esempio:

   ```
   http://my.public.dns.amazonaws.com/phpinfo.php
   ```

   Viene visualizzata la pagina delle informazioni PHP:  
![\[Il test del server LAMP mostra la pagina di informazioni PHP.\]](http://docs.aws.amazon.com/it_it/linux/al2023/ug/images/php-8.1.7-2022.png)

   Se non viene visualizzata questa pagina, verifica che il file `/var/www/html/phpinfo.php` sia stato creato correttamente nella fase precedente. È anche possibile verificare che tutti i pacchetti richiesti siano stati installati con il seguente comando.

   ```
   [ec2-user ~]$ sudo dnf list installed httpd mariadb-server php-mysqlnd
   ```

   Se uno dei pacchetti richiesti non è elencato nell'output, installarlo utilizzando il comando **sudo yum install *package***.

1. Eliminare il file `phpinfo.php`. Sebbene questa informazione possa essere utile, non deve essere divulgata su Internet per ragioni di sicurezza.

   ```
   [ec2-user ~]$ rm /var/www/html/phpinfo.php
   ```

Ora si dovrebbe avere un server Web LAMP completamente funzionante. Se vengono aggiunti contenuti alla root del documento di Apache su `/var/www/html`, dovrebbe essere possibile visualizzare tali contenuti all'indirizzo DNS pubblico per l'istanza. 

## Fase 3: proteggere il server di database
<a name="secure-mariadb-lamp-server-2023"></a>

L'installazione predefinita del server MariaDB ha diverse caratteristiche che sono ottime per test e sviluppo, ma dovrebbero essere disabilitate o rimosse per i server di produzione. Il comando **mysql\$1secure\$1installation** guida attraverso il processo di impostazione di una password root e la rimozione delle caratteristiche non protette dall'installazione. Anche se non hai intenzione di utilizzare il server MariaDB, consigliamo di eseguire questa procedura.<a name="securing-maria-db-2023"></a>

**Per proteggere il server MariaDB**

1. Avviare il server MariaDB.

   ```
   [ec2-user ~]$ sudo systemctl start mariadb
   ```

1. Esegui **mysql\$1secure\$1installation**.

   ```
   [ec2-user ~]$ sudo mysql_secure_installation
   ```

   1. Quando richiesto, digitare una password per l'account root.

      1. Digitare la password root corrente. Per impostazione predefinita, l'account root non ha una password configurata. Premere Invio.

      1. Digitare **Y** per impostare una password e digitare una password sicura due volte. Per ulteriori informazioni sulla creazione di una password sicura, vedere [https://identitysafe.norton.com/password-generator/](https://identitysafe.norton.com/password-generator/). Assicurarsi di conservare questa password in un posto sicuro.

         L'impostazione di una password root per MariaDB è solo la misura di base per la protezione del database. Quando si crea o si installa un'applicazione basata su un database, normalmente si crea un utente del servizio di database per tale applicazione per evitare di usare l'account root per ragioni diverse dall'amministrazione del database. 

   1. Digitare **Y** per rimuovere gli account utente anonimi.

   1. Digitare **Y** per disabilitare l'accesso root in remoto.

   1. Digitare **Y** per rimuovere il database di test.

   1. Digitare **Y** per ricaricare le tabelle dei privilegi e salvare le modifiche.

1. (Facoltativo) Se non si ha intenzione di utilizzare immediatamente il server MariaDB, interromperlo. È possibile riavviarlo quando è di nuovo necessario.

   ```
   [ec2-user ~]$ sudo systemctl stop mariadb
   ```

1. (Facoltativo) Se si desidera che il server MariaDB si avvii a ogni avvio, digitare il seguente comando.

   ```
   [ec2-user ~]$ sudo systemctl enable mariadb
   ```

## Fase 4: Installazione (facoltativa) phpMyAdmin
<a name="install-phpmyadmin-lamp-server-2023"></a>

[phpMyAdmin](https://www.phpmyadmin.net/)è uno strumento di gestione dei database basato sul Web che puoi utilizzare per visualizzare e modificare i database MySQL sulla tua istanza EC2. Segui le fasi seguenti per installare e configurare `phpMyAdmin` sull'istanza Amazon Linux.

**Importante**  
Non è consigliabile `phpMyAdmin` utilizzarlo per accedere a un server LAMP a meno che tu non lo abbia abilitato SSL/TLS in Apache; in caso contrario, la password dell'amministratore del database e altri dati vengono trasmessi in modo non sicuro su Internet. Per i consigli sulla sicurezza forniti dagli sviluppatori, consulta [Proteggere](https://docs.phpmyadmin.net/en/latest/setup.html#securing-your-phpmyadmin-installation) l'installazione. phpMyAdmin Per informazioni generali sulla protezione di un server Web su un'istanza EC2, consulta [Tutorial: Configura SSL/TLS su AL2023](SSL-on-amazon-linux-2023.md).

**Per installare phpMyAdmin**

1. Installare le dipendenze richieste.

   ```
   [ec2-user ~]$ sudo dnf install php-mbstring php-xml -y
   ```

1. Riavviare Apache.

   ```
   [ec2-user ~]$ sudo systemctl restart httpd
   ```

1. Riavviare `php-fpm`.

   ```
   [ec2-user ~]$ sudo systemctl restart php-fpm
   ```

1. Andare alla root del documento di Apache in `/var/www/html`.

   ```
   [ec2-user ~]$ cd /var/www/html
   ```

1. Seleziona un pacchetto sorgente per l'ultima phpMyAdmin versione da [https://www.phpmyadmin.net/downloads](https://www.phpmyadmin.net/downloads). Per scaricare il file direttamente nell'istanza, copiare il link e incollarlo in un comando **wget**, come in questo esempio:

   ```
   [ec2-user html]$ wget https://www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.tar.gz
   ```

1. Creare una cartella `phpMyAdmin` in cui estrarre il pacchetto con il comando seguente.

   ```
   [ec2-user html]$ mkdir phpMyAdmin && tar -xvzf phpMyAdmin-latest-all-languages.tar.gz -C phpMyAdmin --strip-components 1
   ```

1. Eliminare il *phpMyAdmin-latest-all-languages.tar.gz* tarball.

   ```
   [ec2-user html]$ rm phpMyAdmin-latest-all-languages.tar.gz
   ```

1.  (Facoltativo) Se il server MySQL non è in esecuzione, avviarlo in questo momento.

   ```
   [ec2-user ~]$ sudo systemctl start mariadb
   ```

1. In un browser Web, digita l'URL dell' phpMyAdmin installazione. Questo URL è l'indirizzo DNS pubblico (o indirizzo IP pubblico) dell'istanza seguito da una barra e dal nome della directory di installazione. Esempio:

   ```
   http://my.public.dns.amazonaws.com/phpMyAdmin
   ```

   Dovresti vedere la pagina phpMyAdmin di accesso:  
![\[Il risultato della digitazione dell'URL dell' phpMyAdmin installazione è la schermata di phpMyAdmin accesso.\]](http://docs.aws.amazon.com/it_it/linux/al2023/ug/images/phpmyadmin_login.png)

1. Accedi all' phpMyAdmin installazione con il nome `root` utente e la password root MySQL che hai creato in precedenza.

   L'installazione deve essere configurata prima di essere messa in funzione. Si consiglia di iniziare con la creazione manuale del file di configurazione, come segue:

   1. Per iniziare con un file di configurazione minimo, utilizza l'editor di testo preferito per creare un nuovo file e quindi copia al suo interno il contenuto di `config.sample.inc.php`.

   1. Salva il file come `config.inc.php` nella phpMyAdmin directory che contiene. `index.php`

   1. Per qualsiasi [configurazione aggiuntiva, fate riferimento alle istruzioni successive alla creazione del file nella sezione Uso dello script](https://docs.phpmyadmin.net/en/latest/setup.html#using-the-setup-script) di phpMyAdmin installazione delle istruzioni di installazione.

    Per informazioni sull'utilizzo phpMyAdmin, consultate la [Guida per l'phpMyAdmin utente](http://docs.phpmyadmin.net/en/latest/user.html).

## Risoluzione dei problemi
<a name="lamp-troubleshooting-2023"></a>

Questa sezione offre suggerimenti per la risoluzione di problemi comuni che possono verificarsi durante la configurazione di un nuovo server LAMP. 

### Non riesco a connettermi al mio server utilizzando un browser Web
<a name="is_apache_on_2023"></a>

Esegui i controlli seguenti per verificare se il tuo server Web Apache è in esecuzione e accessibile.
+ **Il server Web è in esecuzione?**

  Puoi verificare che **httpd** sia attivo eseguendo il seguente comando:

  ```
  [ec2-user ~]$ sudo systemctl is-enabled httpd
  ```

  Se il processo **httpd** non è in esecuzione, ripeti le fasi descritte in [Per preparare il server LAMP](#install_apache-2023).
+ **Il firewall è configurato correttamente?**

  Verificare che il gruppo di sicurezza per l'istanza contenga una regola per consentire il traffico HTTP sulla porta 80. Per ulteriori informazioni, consulta [Aggiungere regole al gruppo di sicurezza](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/working-with-security-groups.html#adding-security-group-rule).

### Non riesco a connettermi al mio server utilizzando HTTPS
<a name="is-https-enabled-2023"></a>

Eseguire le seguenti verifiche per verificare se il server Web Apache è configurato per supportare HTTPS.
+ **Il server Web è configurato correttamente?**

  Dopo avere installato Apache, il server è configurato per il traffico HTTP. Per supportare HTTPS, abilitare TLS sul server e installare un certificato SSL. Per informazioni, consulta [Tutorial: Configura SSL/TLS su AL2023](SSL-on-amazon-linux-2023.md).
+ **Il firewall è configurato correttamente?**

  Verificare che il gruppo di protezione per l'istanza contenga una regola per consentire il traffico HTTPS sulla porta 443. Per ulteriori informazioni, consulta [Autorizzare il traffico in entrata per le istanze Linux](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/authorizing-access-to-an-instance.html).

## Argomenti correlati
<a name="lamp-more-info-2023"></a>

Per ulteriori informazioni sul trasferimento di file sull'istanza o sull'installazione di un WordPress blog sul server Web, consulta la seguente documentazione:
+ [Trasferisci file sulla tua istanza Linux utilizzando WinSCP](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/putty.html#Transfer_WinSCP) nella Amazon *EC2* User Guide.
+ [Trasferisci file su istanze Linux utilizzando un client SCP](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/connect-linux-inst-ssh.html#linux-file-transfer-scp) nella *Amazon EC2* User Guide.
+ [Tutorial: Ospita un WordPress blog su AL2023](hosting-wordpress-aml-2023.md)

Per ulteriori informazioni sui comandi e sul software utilizzati in questo tutorial, consulta le pagine Web seguenti:
+ Server Web Apache: [http://httpd.apache.org/](http://httpd.apache.org/)
+ Server database MariaDB: [https://mariadb.org/](https://mariadb.org/)
+ Linguaggi di programmazione PHP: [http://php.net/](http://php.net/)

Per ulteriori informazioni sulla registrazione di un nome di dominio per il server Web o sul trasferimento di un nome di dominio esistente su questo host, consulta l'articolo relativo alla [creazione e alla migrazione di domini e sottodomini ad Amazon Route 53](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/creating-migrating.html) nella *Guida per lo sviluppatore di Amazon Route 53*.