Seleziona le tue preferenze relative ai cookie

Utilizziamo cookie essenziali e strumenti simili necessari per fornire il nostro sito e i nostri servizi. Utilizziamo i cookie prestazionali per raccogliere statistiche anonime in modo da poter capire come i clienti utilizzano il nostro sito e apportare miglioramenti. I cookie essenziali non possono essere disattivati, ma puoi fare clic su \"Personalizza\" o \"Rifiuta\" per rifiutare i cookie prestazionali.

Se sei d'accordo, AWS e le terze parti approvate utilizzeranno i cookie anche per fornire utili funzionalità del sito, ricordare le tue preferenze e visualizzare contenuti pertinenti, inclusa la pubblicità pertinente. Per continuare senza accettare questi cookie, fai clic su \"Continua\" o \"Rifiuta\". Per effettuare scelte più dettagliate o saperne di più, fai clic su \"Personalizza\".

LAMPtutorial per AWS Cloud9

Modalità Focus
LAMPtutorial per AWS Cloud9 - AWS Cloud9

AWS Cloud9 non è più disponibile per i nuovi clienti. I clienti esistenti di AWS Cloud9 possono continuare a utilizzare il servizio normalmente. Ulteriori informazioni

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

AWS Cloud9 non è più disponibile per i nuovi clienti. I clienti esistenti di AWS Cloud9 possono continuare a utilizzare il servizio normalmente. Ulteriori informazioni

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

Questo tutorial ti consente di configurare ed eseguire LAMP (Linux, Apache HTTPServer, MySQLe PHP) all'interno di un ambiente di AWS Cloud9 sviluppo.

Seguire questo tutorial e creare questo esempio potrebbe comportare dei costi a carico dell'utente Account AWS. Questi includono eventuali costi per Servizi AWS Amazon Elastic Compute Cloud (AmazonEC2). Per ulteriori informazioni, consulta la pagina EC2dei prezzi di Amazon.

Prerequisiti

Prima di usare questo esempio, assicurati che la configurazione soddisfi i seguenti requisiti:

  • È necessario disporre di un ambiente di AWS Cloud9 EC2 sviluppo esistente. Questo esempio presuppone che tu disponga già di un EC2 ambiente connesso a un'EC2istanza Amazon che esegue Amazon Linux o Ubuntu Server. Se disponi di un altro tipo di ambiente o sistema operativo, potrebbe essere necessario adattare le istruzioni di questo esempio per configurare gli strumenti correlati. Per ulteriori informazioni, consulta Creare un ambiente in AWS Cloud9.

  • Il file AWS Cloud9 IDE per l'ambiente esistente è già aperto. Quando apri un ambiente, AWS Cloud9 apre il IDE relativo ambiente nel tuo browser web. Per ulteriori informazioni, consulta Apertura di un ambiente in AWS Cloud9.

Fase 1: installare gli strumenti

In questa fase installi i seguenti strumenti:

  • Apache HTTPServer, un host di server Web.

  • PHP, un linguaggio di scripting particolarmente adatto per lo sviluppo web e in cui può essere HTML incorporato.

  • MySQL, un sistema di gestione dei database.

Quindi finisci questo passaggio avviando Apache HTTPServer e poi MySQL.

  1. Assicurarsi che gli ultimi aggiornamenti di sicurezza e correzioni di bug siano installati nell'istanza. A tale scopo, in una sessione di terminale in AWS Cloud9 IDE, esegui yum updatefor (Amazon Linux) o apt updatefor (Ubuntu Comando Server (). Per avviare una nuova sessione del terminale, dalla barra dei menu scegli Window (Finestra), New Terminal (Nuovo terminale).

    Per Amazon Linux:

    sudo yum -y update

    In Ubuntu Server:

    sudo apt -y update
  2. Controlla se Apache HTTPIl server è già installato. A tale scopo, esegui httpd -v(per Amazon Linux) o apache2 -v(per Ubuntu comando Server ().

    In caso di successo, l'output contiene Apache HTTPNumero di versione del server.

    Se visualizzi un errore, installa Apache HTTPServer eseguendo il installcomando.

    Per Amazon Linux:

    sudo yum install -y httpd24

    In Ubuntu Server:

    sudo apt install -y apache2
  3. Conferma se PHP è già installato eseguendo il php -vcomando.

    In caso di successo, l'output contiene il numero di PHP versione.

    Se vedi un errore, installa PHP eseguendo il installcomando.

    Per Amazon Linux:

    sudo yum install -y php56

    In Ubuntu Server:

    sudo apt install -y php libapache2-mod-php php-xml
  4. Conferma se MySQL è già installato eseguendo il mysql --versioncomando.

    In caso di successo, l'output contiene MySQL numero di versione.

    Se vedi un errore, installa MySQL eseguendo il installcomando.

    Per Amazon Linux:

    sudo yum install -y mysql-server

    In Ubuntu Server:

    sudo apt install -y mysql-server
  5. Dopo l'installazione Apache HTTPServer, PHPe MySQL, avvia Apache HTTPServer, quindi conferma che è stato avviato, eseguendo il comando seguente.

    Per Amazon Linux (potrebbe essere necessario eseguire il comando due volte):

    sudo service httpd start && sudo service httpd status

    In Ubuntu Server (per tornare al prompt dei comandi, premereq):

    sudo service apache2 start && sudo service apache2 status
  6. Start (Avvio) MySQL, quindi conferma che sia stato avviato, eseguendo il comando seguente.

    Per Amazon Linux:

    sudo service mysqld start && sudo service mysqld status

    In Ubuntu Server (per tornare al prompt dei comandi, premereq):

    sudo service mysql start && sudo service mysql status

Fase 2: Configurazione MySQL

In questo passaggio, si configura MySQL da seguire MySQL migliori pratiche di sicurezza. Queste best practice di sicurezza includono l'impostazione di una password per gli account root e la rimozione degli account root accessibili dall'esterno dell'host locale. Altre best practice da tenere in considerazione sono la rimozione degli utenti anonimi, la rimozione del database di test e la rimozione dei privilegi che consentono a chiunque di accedere ai database con i nomi che iniziano con test_.

Quindi finisci questo passaggio esercitandoti con l'avvio e poi l'uscita dal MySQL client a riga di comando.

  1. Implement MySQL le migliori pratiche di sicurezza per MySQL installazione eseguendo il comando seguente in una sessione terminale in AWS Cloud9 IDE.

    sudo mysql_secure_installation
  2. Quando viene richiesto, rispondi alle seguenti domande come specificato.

    Per Amazon Linux:

    1. Inserisci la password corrente per root (Invio per nessuna password): premi Enter (nessuna password).

    2. Imposta la password root: digita Y e premi Enter.

    3. Nuova password digita una password e premi Enter.

    4. Immetti nuovamente la nuova password: digita di nuovo la password e premi Enter. Assicurati di riporre le password in un luogo sicuro per un uso successivo.

    5. Rimuovi utenti anonimi: digita Y, quindi premi Enter.

    6. Disattiva l'accesso root da remoto: digita Y, quindi premi Enter.

    7. Rimuovi il database di test e accedivi: digita Y, quindi premi Enter.

    8. Ricarica le tabelle dei privilegi: digita Y, quindi premi Enter.

    In Ubuntu Server:

    1. Vuoi configurare il VALIDATE PASSWORD plugin: Invioy, quindi premiEnter.

    2. Configura uno dei tre livelli di policy di convalida della password: immetti 0, 1 o 2, quindi premi Enter.

    3. Nuova password: immetti una password e premi Enter.

    4. Immetti nuovamente la nuova password: immetti di nuovo la password e premi Enter. Assicurati di riporre le password in un luogo sicuro per un uso successivo.

    5. Continua con la password fornita: immetti y, quindi premi Enter.

    6. Rimuovi utenti anonimi: immetti y, quindi premi Enter.

    7. Disattiva l'accesso root da remoto: immetti y, quindi premi Enter.

    8. Rimuovi il database di test e l'accesso: immetti y, quindi premi Enter.

    9. Ricarica le tabelle dei privilegi: immetti y, quindi premi Enter.

  3. Per interagire direttamente con MySQL, avvia il MySQL client da riga di comando come utente root eseguendo il comando seguente. Quando richiesto, digita la password dell'utente root impostata in precedenza, quindi premi Enter. Il prompt cambia a mysql> mentre si è in MySQL client a riga di comando.

    sudo mysql -uroot -p
  4. Per uscire da MySQL client da riga di comando, esegui il seguente comando. Il prompt torna a essere $.

    exit;

Fase 3: configurare un sito Web

In questo passaggio, si configura la cartella principale predefinita del sito Web per Apache HTTPServer con proprietari e autorizzazioni di accesso consigliati. Quindi crei un PHPpagina Web basata all'interno della cartella principale del sito Web predefinita.

Consenti quindi al traffico web in entrata di visualizzare quella pagina Web configurando il gruppo di sicurezza in Amazon EC2 e la lista di controllo degli accessi alla rete (reteACL) in Amazon Virtual Private Cloud (AmazonVPC) associati a questo EC2 ambiente. Ogni EC2 ambiente deve essere associato sia a un gruppo di sicurezza in Amazon EC2 che a una rete ACL in AmazonVPC. Tuttavia, anche se la rete predefinita ACL in un Account AWS consente tutto il traffico in entrata e in uscita per l'ambiente, il gruppo di sicurezza predefinito consente solo il traffico in entrata che utilizza SSH la porta 22. Per ulteriori informazioni, consulta VPCimpostazioni per gli ambienti di AWS Cloud9 sviluppo.

È quindi possibile completare questo passaggio visualizzando correttamente la pagina Web dall'esterno di. AWS Cloud9 IDE

  1. Imposta la cartella principale predefinita del sito Web per Apache HTTPServer (/var/www/html) con proprietari e autorizzazioni di accesso consigliati. A tale scopo, esegui i seguenti sei comandi, uno alla volta nell'ordine seguente, in una sessione terminale in. AWS Cloud9 IDE Per capire cosa fa ogni comando, leggere le informazioni dopo il carattere # dopo ogni comando.

    Per Amazon Linux:

    sudo groupadd web-content # Create a group named web-content. sudo usermod -G web-content -a ec2-user # Add the user ec2-user (your default user for this environment) to the group web-content. sudo usermod -G web-content -a apache # Add the user apache (Apache HTTP Server) to the group web-content. sudo chown -R ec2-user:web-content /var/www/html # Change the owner of /var/www/html and its files to user ec2-user and group web-content. sudo find /var/www/html -type f -exec chmod u=rw,g=rx,o=rx {} \; # Change all file permissions within /var/www/html to user read/write, group read-only, and others read/execute. sudo find /var/www/html -type d -exec chmod u=rwx,g=rx,o=rx {} \; # Change /var/www/html directory permissions to user read/write/execute, group read/execute, and others read/execute.

    In Ubuntu Server:

    sudo groupadd web-content # Create a group named web-content. sudo usermod -G web-content -a ubuntu # Add the user ubuntu (your default user for this environment) to the group web-content. sudo usermod -G web-content -a www-data # Add the user www-data (Apache HTTP Server) to the group web-content. sudo chown -R ubuntu:web-content /var/www/html # Change the owner of /var/www/html and its files to user ubuntu and group web-content. sudo find /var/www/html -type f -exec chmod u=rw,g=rx,o=rx {} \; # Change all file permissions within /var/www/html to user read/write, group read-only, and others read/execute. sudo find /var/www/html -type d -exec chmod u=rwx,g=rx,o=rx {} \; # Change /var/www/html directory permissions to user read/write/execute, group read/execute, and others read/execute.
  2. Crea un PHPpagina Web basata denominata index.php nella cartella principale del sito Web predefinita per Apache HTTPServer (ovvero/var/www/html) eseguendo il comando seguente.

    Per Amazon Linux:

    sudo touch /var/www/html/index.php && sudo chown -R ec2-user:web-content /var/www/html/index.php && sudo chmod u=rw,g=rx,o=rx /var/www/html/index.php && sudo printf '%s\n%s\n%s' '<?php' ' phpinfo();' '?>' >> /var/www/html/index.php

    Il comando precedente per Amazon Linux modifica anche il proprietario del fileec2-user, cambia il gruppo del file in e modifica le autorizzazioni del file in read/write for the user, and read/execute per il gruppo e altri. web-content

    In Ubuntu Server:

    sudo touch /var/www/html/index.php && sudo chown -R ubuntu:web-content /var/www/html/index.php && sudo chmod u=rw,g=rx,o=rx /var/www/html/index.php && sudo printf '%s\n%s\n%s' '<?php' ' phpinfo();' '?>' >> /var/www/html/index.php

    Il comando precedente per Ubuntu Il server modifica inoltre il proprietario del file inubuntu, modifica il gruppo del file in e modifica le autorizzazioni del file in quelle relative al gruppo e read/write for the user, and read/execute ad altri. web-content

    Se i comandi precedenti vengono eseguiti correttamente, viene creato il file index.php con i seguenti contenuti.

    <?php phpinfo(); ?>
  3. Abilita il traffico web in entrata sulla porta 80 per visualizzare la nuova pagina Web configurando la rete in ACL Amazon VPC e il gruppo di sicurezza Amazon EC2 associato a questo EC2 ambiente. Per eseguire questa operazione, esegui uno alla volta i seguenti otto comandi nell'ordine indicato. Per capire cosa fa ogni comando, leggere le informazioni dopo il carattere # per ogni comando.

    Importante

    L'esecuzione dei seguenti comandi abilita il traffico Web in entrata sulla porta 80 per tutti EC2 gli ambienti e EC2 le istanze Amazon associati al gruppo di sicurezza e alla rete ACL per questo ambiente. Ciò potrebbe comportare l'attivazione inaspettata del traffico Web in entrata sulla porta 80 per ambienti EC2 e EC2 istanze Amazon diversi da questa.

    Nota

    I comandi dal secondo al quarto riportati di seguito consentono al gruppo di sicurezza di permettere il traffico Web in ingresso sulla porta 80. Se disponi di un gruppo di sicurezza predefinito, che consente il SSH traffico in entrata solo sulla porta 22, devi eseguire il primo comando seguito da questi comandi dal secondo al quarto. Tuttavia, se è già disponibile un gruppo di sicurezza personalizzato che consente il traffico Web in ingresso sulla porta 80, è possibile ignorare l'esecuzione di tali comandi.

    I seguenti comandi dal quinto all'ottavo consentono ACL alla rete di consentire il traffico Web in entrata sulla porta 80. Se disponi di una rete predefinitaACL, che consente già tutto il traffico in entrata su tutte le porte, puoi tranquillamente ignorare l'esecuzione di questi comandi. Tuttavia, supponiamo di avere una rete personalizzata ACL che non consente il traffico web in entrata sulla porta 80. Esegui il primo comando, quindi i comandi dal quinto all'ottavo dei seguenti.

    MY_INSTANCE_ID=$(curl http://169.254.169.254/latest/meta-data/instance-id) # Get the ID of the instance for the environment, and store it temporarily. MY_SECURITY_GROUP_ID=$(aws ec2 describe-instances --instance-id $MY_INSTANCE_ID --query 'Reservations[].Instances[0].SecurityGroups[0].GroupId' --output text) # Get the ID of the security group associated with the instance, and store it temporarily. aws ec2 authorize-security-group-ingress --group-id $MY_SECURITY_GROUP_ID --protocol tcp --cidr 0.0.0.0/0 --port 80 # Add an inbound rule to the security group to allow all incoming IPv4-based traffic over port 80. aws ec2 authorize-security-group-ingress --group-id $MY_SECURITY_GROUP_ID --ip-permissions IpProtocol=tcp,Ipv6Ranges='[{CidrIpv6=::/0}]',FromPort=80,ToPort=80 # Add an inbound rule to the security group to allow all incoming IPv6-based traffic over port 80. MY_SUBNET_ID=$(aws ec2 describe-instances --instance-id $MY_INSTANCE_ID --query 'Reservations[].Instances[0].SubnetId' --output text) # Get the ID of the subnet associated with the instance, and store it temporarily. MY_NETWORK_ACL_ID=$(aws ec2 describe-network-acls --filters Name=association.subnet-id,Values=$MY_SUBNET_ID --query 'NetworkAcls[].Associations[0].NetworkAclId' --output text) # Get the ID of the network ACL associated with the subnet, and store it temporarily. aws ec2 create-network-acl-entry --network-acl-id $MY_NETWORK_ACL_ID --ingress --protocol tcp --rule-action allow --rule-number 10000 --cidr-block 0.0.0.0/0 --port-range From=80,To=80 # Add an inbound rule to the network ACL to allow all IPv4-based traffic over port 80. Advanced users: change this suggested rule number as desired. aws ec2 create-network-acl-entry --network-acl-id $MY_NETWORK_ACL_ID --ingress --protocol tcp --rule-action allow --rule-number 10100 --ipv6-cidr-block ::/0 --port-range From=80,To=80 # Add an inbound rule to the network ACL to allow all IPv6-based traffic over port 80. Advanced users: change this suggested rule number as desired.
  4. Accedi al index.php file URL all'interno della cartella principale del server web. A tale scopo, esegui il comando seguente e utilizza una nuova scheda del browser Web o un browser Web diverso da quello per accedere AWS Cloud9 IDE a URL quello visualizzato. In caso di successo, la pagina Web visualizza informazioni su Apache HTTPServer, MySQL, PHPe altre impostazioni correlate.

    MY_PUBLIC_IP=$(curl http://169.254.169.254/latest/meta-data/public-ipv4) && echo http://$MY_PUBLIC_IP/index.php # Get the URL to the index.php file within the web server root.

Fase 4: pulizia

Supponi di voler continuare a utilizzare questo ambiente ma di voler disabilitare il traffico Web in entrata sulla porta 80. Quindi, esegui i seguenti otto comandi, uno alla volta nell'ordine seguente, per eliminare le regole del traffico in entrata corrispondenti che hai impostato in precedenza nel gruppo di sicurezza e nella rete ACL associati all'ambiente. Per capire cosa fa ogni comando, leggere le informazioni dopo il carattere # per ogni comando.

Importante

L'esecuzione dei seguenti comandi disabilita il traffico Web in entrata sulla porta 80 per tutti gli EC2 ambienti e le EC2 istanze Amazon associati al gruppo di sicurezza e alla rete ACL per questo ambiente. Ciò potrebbe comportare la disabilitazione inaspettata del traffico Web in entrata sulla porta 80 per ambienti EC2 e EC2 istanze Amazon diversi da questa.

Nota

I seguenti comandi dal quinto all'ottavo rimuovono le regole esistenti per impedire alla rete ACL di consentire il traffico web in entrata sulla porta 80. Se disponi di una rete predefinitaACL, che consente già tutto il traffico in entrata su tutte le porte, puoi ignorare l'esecuzione di questi comandi. Tuttavia, supponiamo di disporre di una rete personalizzata ACL con regole esistenti che consentono il traffico Web in entrata sulla porta 80 e di voler eliminare tali regole. Dovrai eseguire il primo comando e quindi i comandi dal quinto all'ottavo.

MY_INSTANCE_ID=$(curl http://169.254.169.254/latest/meta-data/instance-id) # Get the ID of the instance for the environment, and store it temporarily. MY_SECURITY_GROUP_ID=$(aws ec2 describe-instances --instance-id $MY_INSTANCE_ID --query 'Reservations[].Instances[0].SecurityGroups[0].GroupId' --output text) # Get the ID of the security group associated with the instance, and store it temporarily. aws ec2 revoke-security-group-ingress --group-id $MY_SECURITY_GROUP_ID --protocol tcp --cidr 0.0.0.0/0 --port 80 # Delete the existing inbound rule from the security group to block all incoming IPv4-based traffic over port 80. aws ec2 revoke-security-group-ingress --group-id $MY_SECURITY_GROUP_ID --ip-permissions IpProtocol=tcp,Ipv6Ranges='[{CidrIpv6=::/0}]',FromPort=80,ToPort=80 # Delete the existing inbound rule from the security group to block all incoming IPv6-based traffic over port 80. MY_SUBNET_ID=$(aws ec2 describe-instances --instance-id $MY_INSTANCE_ID --query 'Reservations[].Instances[0].SubnetId' --output text) # Get the ID of the subnet associated with the instance, and store it temporarily. MY_NETWORK_ACL_ID=$(aws ec2 describe-network-acls --filters Name=association.subnet-id,Values=$MY_SUBNET_ID --query 'NetworkAcls[].Associations[0].NetworkAclId' --output text) # Get the ID of the network ACL associated with the subnet, and store it temporarily. aws ec2 delete-network-acl-entry --network-acl-id $MY_NETWORK_ACL_ID --ingress --rule-number 10000 # Delete the existing inbound rule from the network ACL to block all IPv4-based traffic over port 80. Advanced users: if you originally created this rule with a different number, change this suggested rule number to match. aws ec2 delete-network-acl-entry --network-acl-id $MY_NETWORK_ACL_ID --ingress --rule-number 10100 # Delete the existing inbound rule from the network ACL to block all IPv6-based traffic over port 80. Advanced users: if you originally created this rule with a different number, change this suggested rule number to match.

Una volta terminato di usare l'ambiente, eliminalo per evitare di continuare ad addebitare i costi sul tuo Account AWS. Per istruzioni, consultare Eliminazione di un ambiente in AWS Cloud9.

PrivacyCondizioni del sitoPreferenze cookie
© 2025, Amazon Web Services, Inc. o società affiliate. Tutti i diritti riservati.