Tutorial: Installare un server LAMP su AL1 - Amazon Linux 1

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 AL1

Nota

Amazon Linux 1 (AL1precedentemente Amazon Linux AMI) non è più supportato. Questa guida è disponibile solo a scopo di riferimento.

Le seguenti procedure consentono di installare un server Web Apache con supporto PHP e MySQL sull' AL1 istanza (a volte chiamato server Web LAMP o stack LAMP). 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

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 AL2, consulta Tutorial: Installa un server LAMP su. AL2 Per Ubuntu, consulta la seguente documentazione della comunità Ubuntu ApacheMySQLPHP. Per altre distribuzioni, consulta la relativa documentazione specifica.

Opzione: completare questo tutorial mediante Automation

Per completare questo tutorial utilizzando AWS Systems Manager Automation anziché le seguenti attività, esegui il AWSdocumento ALAMPServer Docs-Install -AL Automation.

Fase 1: preparare il server LAMP

Prerequisiti

Questo tutorial presuppone che sia stata già lanciata una nuova istanza tramite Amazon Linux AMI con un nome DNS pubblico raggiungibile da Internet. Per ulteriori informazioni, consulta Launch an instance nella Amazon EC2 User Guide. È 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 le regole dei gruppi di sicurezza nella Amazon EC2 User Guide.

Per installare e avviare il server Web LAMP con Amazon Linux AMI
  1. Connettiti alla tua istanza.

  2. 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 assicurarsi di disporre della versione più recente degli aggiornamenti della sicurezza e delle correzioni dei bug.

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

    [ec2-user ~]$ sudo yum update -y
  3. Ora che l'istanza è attuale, è possibile installare i pacchetti del server Web Apache, MySQL e PHP.

    Importante

    Alcune applicazioni potrebbero non essere compatibili con il seguente ambiente software consigliato. Prima di installare questi pacchetti, controllare se le applicazioni LAMP sono compatibili con essi. In caso di problemi, potrebbe essere necessario installare un ambiente alternativo. Per ulteriori informazioni, consulta Il software applicativo che desidero eseguire sul mio server non è compatibile con la versione PHP installata o altro software

    Utilizzare il comando yum install per installare contemporaneamente più pacchetti software e tutte le dipendenze correlate.

    [ec2-user ~]$ sudo yum install -y httpd24 php72 mysql57-server php72-mysqlnd

    Se ricevi l'erroreNo package package-name available, significa che l'istanza non è stata avviata con l'AMI Amazon Linux (forse la stai usando AL2 al suo posto). Puoi visualizzare la versione di Amazon Linux con il comando seguente.

    cat /etc/system-release
  4. Avviare il server Web Apache.

    [ec2-user ~]$ sudo service httpd start Starting httpd: [ OK ]
  5. Utilizzare il comando chkconfig per configurare il server Web Apache per l'avvio a ogni avvio del sistema.

    [ec2-user ~]$ sudo chkconfig httpd on

    Il comando chkconfig non fornisce alcun messaggio di conferma quando viene utilizzato per abilitare un servizio.

    Puoi verificare che httpd sia attivo eseguendo il seguente comando:

    [ec2-user ~]$ chkconfig --list httpd httpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off

    Qui, httpd è on nei runlevel 2, 3, 4 e 5 (che è ciò che vuoi vedere).

  6. Se ancora non è stato fatto, aggiungere una regola di sicurezza per consentire le connessioni HTTP (porta 80) entranti all'istanza. Per impostazione predefinita, durante l'inizializzazione è stato configurato un gruppo N di sicurezza launch-wizard per l'istanza. Questo gruppo contiene una regola singola per consentire connessioni SSH.

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

    2. Scegliere Instances (Istanze) e selezionare l'istanza.

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

      Using 0.0.0.0/0 consente a tutti IPv4 gli indirizzi di accedere alla tua 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.

    4. Scegliere il collegamento per il gruppo di sicurezza. Utilizzando le procedure in Aggiungi regole a un gruppo di sicurezza, 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

  7. Verificare il server Web. Nel browser Web, digitare l'indirizzo DNS pubblico (o l'indirizzo IP pubblico) dell'istanza. Puoi ottenere l'indirizzo DNS pubblico per la tua istanza utilizzando la EC2 console Amazon. In assenza di contenuti in /var/www/html, dovrebbe venire visualizzata la pagina di test di Apache. Quando aggiungi contenuti alla root del documento, questi vengono visualizzati all'indirizzo DNS pubblico dell'istanza, anziché sulla pagina di test.

    Verificare che il gruppo di sicurezza per l'istanza contenga una regola per consentire il traffico HTTP sulla porta 80. Per maggiori informazioni, consulta Aggiungere regole a un gruppo di sicurezza />.

    Se non si utilizza Amazon Linux, potrebbe inoltre essere necessario configurare il firewall sull'istanza per consentire tali 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.

[ec2-user ~]$ ls -l /var/www total 16 drwxr-xr-x 2 root root 4096 Jul 12 01:00 cgi-bin drwxr-xr-x 3 root root 4096 Aug 7 00:02 error drwxr-xr-x 2 root root 4096 Jan 6 2012 html drwxr-xr-x 3 root root 4096 Aug 7 00:02 icons drwxr-xr-x 2 root root 4096 Aug 7 21:17 noindex

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 l'utente ec2-user al gruppo apache per assegnare la proprietà del gruppo apache della directory /var/www e assegnare autorizzazioni di scrittura al gruppo.

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
  2. 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
    2. Per verificare l'appartenenza al gruppo apache, riconnettersi all'istanza, quindi eseguire il seguente comando:

      [ec2-user ~]$ groups ec2-user wheel apache
  3. 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
  4. 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 [ec2-user ~]$ find /var/www -type d -exec sudo chmod 2775 {} \;
  5. 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.

(Opzionale) Protezione del server web

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: Configurazione SSL/TLS su AMI Amazon Linux.

Fase 2: verificare il server LAMP

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 Web 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 Fase 1: preparare il server LAMP.

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

    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. Le versioni del pacchetto nella seconda colonna non devono corrispondere a questo esempio di output.

    [ec2-user ~]$ sudo yum list installed httpd24 php72 mysql57-server php72-mysqlnd Loaded plugins: priorities, update-motd, upgrade-helper Installed Packages httpd24.x86_64 2.4.25-1.68.amzn1 @amzn-updates mysql56-server.x86_64 5.6.35-1.23.amzn1 @amzn-updates php70.x86_64 7.0.14-1.20.amzn1 @amzn-updates php70-mysqlnd.x86_64 7.0.14-1.20.amzn1 @amzn-updates

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

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

Fase 3: proteggere il server di database

L'installazione predefinita del server MySQL ha diverse caratteristiche che sono ottime per test e sviluppo, ma dovrebbero essere disabilitate o rimosse per i server di produzione. Il comando mysql_secure_installation 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 MySQL, consigliamo di eseguire questa procedura.

Per proteggere il server del database
  1. Avviare il server MySQL.

    [ec2-user ~]$ sudo service mysqld start Initializing MySQL database: ... PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER ! ... Starting mysqld: [ OK ]
  2. Esegui mysql_secure_installation.

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

      2. 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/. Assicurarsi di conservare questa password in un posto sicuro.

        L'impostazione di una password root per MySQL è 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.

    2. Digitare Y per rimuovere gli account utente anonimi.

    3. Digitare Y per disabilitare l'accesso root in remoto.

    4. Digitare Y per rimuovere il database di test.

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

  3. (Opzionale) Se non si ha intenzione di utilizzare immediatamente il server MySQL, interromperlo. È possibile riavviarlo quando è di nuovo necessario.

    [ec2-user ~]$ sudo service mysqld stop Stopping mysqld: [ OK ]
  4. (Opzionale) Se si desidera che il server MySQL si avvii a ogni avvio, digitare il seguente comando.

    [ec2-user ~]$ sudo chkconfig mysqld on

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 4: Installazione (facoltativa) phpMyAdmin

Per installare phpMyAdmin

phpMyAdminè uno strumento di gestione di database basato sul Web che puoi utilizzare per visualizzare e modificare i database MySQL sulla tua istanza. EC2 Segui i passaggi seguenti per installare e configurare phpMyAdmin sulla tua istanza Amazon Linux.

Importante

Non è consigliabile utilizzarla phpMyAdmin per accedere a un server LAMP a meno che tu non l'abbia abilitata 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 l'installazione. phpMyAdmin

Nota

Il sistema di gestione dei pacchetti Amazon Linux attualmente non supporta l'installazione automatica di phpMyAdmin in un ambiente PHP 7. Questo tutorial descrive come eseguire l'installazione phpMyAdmin manualmente.

  1. Accedi alla tua EC2 istanza usando SSH.

  2. Installare le dipendenze richieste.

    [ec2-user ~]$ sudo yum install php72-mbstring.x86_64 -y
  3. Riavviare Apache.

    [ec2-user ~]$ sudo service httpd restart Stopping httpd: [ OK ] Starting httpd: [ OK ]
  4. Andare alla root del documento di Apache in /var/www/html.

    [ec2-user ~]$ cd /var/www/html [ec2-user html]$
  5. Seleziona un pacchetto sorgente per l'ultima phpMyAdmin versione da 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
  6. Create una phpMyAdmin cartella ed estraete il pacchetto al suo interno usando il seguente comando.

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

    [ec2-user html]$ rm phpMyAdmin-latest-all-languages.tar.gz
  8. (Facoltativo) Se il server MySQL non è in esecuzione, avviarlo in questo momento.

    [ec2-user ~]$ sudo service mysqld start Starting mysqld: [ OK ]
  9. 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.
  10. 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. Per configurare phpMyAdmin, è possibile creare manualmente un file di configurazione, utilizzare la console di configurazione o combinare entrambi gli approcci.

    Per informazioni sull'utilizzo phpMyAdmin, consulta la Guida phpMyAdmin per l'utente.

Risoluzione dei problemi

Questa sezione offre suggerimenti per la risoluzione di problemi comuni che si possono incontrare quando si configura un nuovo server LAMP.

Non riesco a connettermi al mio server tramite il browser Web.

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 ~]$ chkconfig --list httpd httpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off

    Qui, httpd è on nei runlevel 2, 3, 4 e 5 (che è ciò che vuoi vedere).

    Se il processo httpd non è in esecuzione, ripeti le fasi descritte in Fase 1: preparare il server LAMP.

  • 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 a un gruppo di sicurezza />.

Il software applicativo che desidero eseguire sul mio server non è compatibile con la versione PHP installata o altro software

Questo tutorial consiglia di installare la maggior parte delle up-to-date versioni di Apache HTTP Server, PHP e MySQL. Prima di installare un'applicazione LAMP aggiuntiva, controllare i requisiti per verificare che sia compatibile con l'ambiente installato. Se la versione più recente di PHP non è supportata, è possibile (e completamente sicuro) eseguire il downgrade a una configurazione supportata in precedenza. È anche possibile installare più di una versione di PHP in parallelo, cosa che risolve alcuni problemi di compatibilità con un minimo sforzo. Per informazioni sulla configurazione di una preferenza tra più versioni di PHP installate, consultare la sezione relativa alle note di rilascio su Amazon Linux AMI 2016.09.

Come eseguire il downgrade

La ben collaudata versione precedente di questo tutorial richiedeva i seguenti pacchetti LAMP core:

  • httpd24

  • php56

  • mysql55-server

  • php56-mysqlnd

Se hai già installato i pacchetti più recenti come consigliato all'inizio di questo tutorial, è necessario prima disinstallare questi pacchetti e altre dipendenze come segue:

[ec2-user ~]$ sudo yum remove -y httpd24 php72 mysql57-server php72-mysqlnd perl-DBD-MySQL57

Successivamente, installa l'ambiente di sostituzione:

[ec2-user ~]$ sudo yum install -y httpd24 php56 mysql55-server php56-mysqlnd

Se, in seguito, decidi di eseguire l'aggiornamento all'ambiente consigliato, è necessario prima rimuovere i pacchetti e le dipendenze personalizzati:

[ec2-user ~]$ sudo yum remove -y httpd24 php56 mysql55-server php56-mysqlnd perl-DBD-MySQL56

Ora, è possibile installare i pacchetti più recenti, come descritto in precedenza.

Argomenti correlati

Per ulteriori informazioni sul trasferimento di file sull'istanza o sull'installazione di un WordPress blog sul server Web, consulta la seguente documentazione:

Per ulteriori informazioni sui comandi e sul software utilizzati in questo tutorial, consulta le pagine Web seguenti:

Per ulteriori informazioni sulla registrazione di un nome di dominio per il tuo server Web o sul trasferimento di un nome di dominio esistente su questo host, consulta Usare Amazon Route 53 come servizio DNS per i sottodomini senza migrare il dominio principale nella Amazon Route 53 Developer Guide.