Seleccione sus preferencias de cookies

Usamos cookies esenciales y herramientas similares que son necesarias para proporcionar nuestro sitio y nuestros servicios. Usamos cookies de rendimiento para recopilar estadísticas anónimas para que podamos entender cómo los clientes usan nuestro sitio y hacer mejoras. Las cookies esenciales no se pueden desactivar, pero puede hacer clic en “Personalizar” o “Rechazar” para rechazar las cookies de rendimiento.

Si está de acuerdo, AWS y los terceros aprobados también utilizarán cookies para proporcionar características útiles del sitio, recordar sus preferencias y mostrar contenido relevante, incluida publicidad relevante. Para aceptar o rechazar todas las cookies no esenciales, haga clic en “Aceptar” o “Rechazar”. Para elegir opciones más detalladas, haga clic en “Personalizar”.

Tutorial de LAMP para AWS Cloud9

Modo de enfoque
Tutorial de LAMP para AWS Cloud9 - AWS Cloud9

AWS Cloud9 ya no está disponible para nuevos clientes. Los clientes existentes de AWS Cloud9 pueden seguir utilizando el servicio con normalidad. Más información

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

AWS Cloud9 ya no está disponible para nuevos clientes. Los clientes existentes de AWS Cloud9 pueden seguir utilizando el servicio con normalidad. Más información

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Este tutorial le permite configurar y ejecutar LAMP (Linux, Apache Servidor HTTP, MySQL, y PHP) dentro de un entorno AWS Cloud9 de desarrollo.

Seguir este tutorial y crear este ejemplo puede resultar en gastos para usted Cuenta de AWS. Estos incluyen posibles cargos por Servicios de AWS ejemplo Amazon Elastic Compute Cloud (Amazon EC2). Para obtener más información, consulta los EC2 precios de Amazon.

Requisitos previos

Antes de utilizar este ejemplo, asegúrese de que su configuración cumpla los siguientes requisitos:

  • Debe tener un entorno de AWS Cloud9 EC2 desarrollo existente. En este ejemplo se supone que ya tienes un EC2 entorno conectado a una EC2 instancia de Amazon que ejecuta Amazon Linux o Ubuntu Servidor. Si tiene otro tipo de entorno o sistema operativo, es posible que tenga que adaptar las instrucciones de este ejemplo para configurar herramientas relacionadas. Para obtener más información, consulte Crear un entorno en AWS Cloud9.

  • Ya tiene abierto el AWS Cloud9 IDE del entorno existente. Al abrir un entorno, AWS Cloud9 abre el IDE de ese entorno en el navegador web. Para obtener más información, consulte Abrir un entorno en AWS Cloud9.

Paso 1: Instalar las herramientas

En este paso, instalará las siguientes herramientas:

  • Apache Servidor HTTP, un host de servidor web.

  • PHP, un lenguaje de script especialmente indicado para el desarrollo web y que se puede incrustar en HTML.

  • MySQL, un sistema de administración de bases de datos.

A continuación, finalice este paso iniciando Apache Servidor HTTP y, a continuación MySQL.

  1. Asegúrese de que las últimas actualizaciones de seguridad y correcciones de errores están instaladas en la instancia. Para ello, en una sesión de terminal en el AWS Cloud9 IDE, ejecute yum updatefor (Amazon Linux) o apt updatefor (Ubuntu Servidor). (Para iniciar una nueva sesión del terminal, en la barra de menús, seleccione Window [Ventana], New Terminal [Nuevo terminal]).

    Para Amazon Linux:

    sudo yum -y update

    En Ubuntu Servidor:

    sudo apt -y update
  2. Compruebe si Apache El servidor HTTP ya está instalado. Para ello, ejecute httpd -v(para Amazon Linux) o apache2 -v(para Ubuntu El comando (servidor).

    Si se ejecuta correctamente, el resultado contiene el Apache Número de versión del servidor HTTP.

    Si ve un error, instale Apache Servidor HTTP ejecutando el installcomando.

    Para Amazon Linux:

    sudo yum install -y httpd24

    En Ubuntu Servidor:

    sudo apt install -y apache2
  3. Confirme si PHP ya está instalado ejecutando el php -vcomando.

    Si es así, el resultado contendrá el número de versión de PHP.

    Si aparece un error, instale PHP ejecutando el comando install.

    Para Amazon Linux:

    sudo yum install -y php56

    En Ubuntu Servidor:

    sudo apt install -y php libapache2-mod-php php-xml
  4. Confirme si MySQL ya está instalado ejecutando el mysql --versioncomando.

    Si se ejecuta correctamente, el resultado contiene el MySQL número de versión.

    Si ve un error, instale MySQL ejecutando el installcomando.

    Para Amazon Linux:

    sudo yum install -y mysql-server

    En Ubuntu Servidor:

    sudo apt install -y mysql-server
  5. Después de instalar Apache Servidor HTTP, PHP, y MySQL, iniciar Apache Servidor HTTP y, a continuación, confirme que se ha iniciado ejecutando el siguiente comando.

    Para Amazon Linux (es posible que tenga que ejecutar el comando dos veces):

    sudo service httpd start && sudo service httpd status

    En Ubuntu Servidor (para volver a la línea de comandos, presioneq):

    sudo service apache2 start && sudo service apache2 status
  6. Inicio MySQLy, a continuación, confirme que se ha iniciado ejecutando el siguiente comando.

    Para Amazon Linux:

    sudo service mysqld start && sudo service mysqld status

    En Ubuntu Servidor (para volver a la línea de comandos, presioneq):

    sudo service mysql start && sudo service mysql status

Paso 2: Configurar MySQL

En este paso, configuras MySQL para seguir MySQL mejores prácticas de seguridad. Estas prácticas recomendadas de seguridad incluyen establecer una contraseña para las cuentas raíz y eliminar las cuentas raíz a las que se puede acceder desde fuera del host local. Otras prácticas recomendadas a tener en cuenta son eliminar los usuarios anónimos, eliminar la base de datos de prueba y eliminar los privilegios que permiten a cualquier persona acceder a las bases de datos con nombres que comiencen por test_.

A continuación, finalice este paso practicando el inicio y, a continuación, la salida del MySQL cliente de línea de comandos.

  1. Implementar MySQL mejores prácticas de seguridad para el MySQL instalación mediante la ejecución del siguiente comando en una sesión de terminal en el AWS Cloud9 IDE.

    sudo mysql_secure_installation
  2. Cuando se le solicite, responda a las siguientes preguntas.

    Para Amazon Linux:

    1. Enter current password for root (enter for none) (Ingrese la contraseña raíz actual [Intro para ninguna]: pulse Enter (sin contraseña).

    2. Set root password (Establecer la contraseña raíz): escriba Y y, a continuación, pulse Enter.

    3. New password (Nueva contraseña): escriba una contraseña y, a continuación, pulse Enter.

    4. Re-enter new password (Volver a ingresar la nueva contraseña): escriba la contraseña de nuevo y, a continuación, pulse Enter. (Asegúrese de almacenar la contraseña en un lugar seguro para usarla más adelante).

    5. Remove anonymous users (Eliminar usuarios anónimos): escriba Y y, a continuación, pulse Enter.

    6. Disallow root login remotely (No permitir el inicio de sesión raíz de forma remota): escriba Y y, a continuación, pulse Enter.

    7. Remove test database and access to it (Eliminar la base de datos de prueba y acceder a ella): escriba Y y, a continuación, pulse Enter.

    8. Reload privilege tables now (Volver a cargar tablas de privilegios ahora): escriba Y y, a continuación, pulse Enter.

    En Ubuntu Servidor:

    1. Would you like to set up VALIDATE PASSWORD plugin (¿Quiere configurar el complemento VALIDATE PASSWORD?): escriba y y, a continuación, pulse Enter.

    2. There are three levels of password validation policy (Existen tres niveles de política de validación de contraseñas): escriba 0, 1, o 2 y, a continuación, pulse Enter.

    3. New password (Nueva contraseña): escriba una contraseña y, a continuación, pulse Enter.

    4. Re-enter new password (Volver a introducir la nueva contraseña): escriba la contraseña de nuevo y, a continuación, pulse Enter. Asegúrese de guardar la contraseña en un lugar seguro para usarla más adelante.

    5. Do you wish to continue with the password provided (¿Desea continuar con la contraseña proporcionada?): escriba y y, a continuación, pulse Enter.

    6. Remove anonymous users (Eliminar usuarios anónimos): escriba y y, a continuación, pulse Enter.

    7. Disallow root login remotely (No permitir el inicio de sesión raíz de forma remota): escriba y y, a continuación, pulse Enter.

    8. Remove test database and access to it (Eliminar la base de datos de prueba y acceder a ella): escriba y y, a continuación, pulse Enter.

    9. Reload privilege tables now (Volver a cargar tablas de privilegios ahora): escriba y y, a continuación, pulse Enter.

  3. Para interactuar directamente con MySQL, inicie el MySQL cliente de línea de comandos como usuario root ejecutando el siguiente comando. Cuando se le solicite, escriba la contraseña del usuario raíz que ha definido anteriormente y, a continuación, pulse Enter. El mensaje cambia a mysql> cuando se encuentra en el MySQL cliente de línea de comandos.

    sudo mysql -uroot -p
  4. Para salir del MySQL cliente de línea de comandos, ejecute el siguiente comando. El símbolo vuelve a cambiar a $.

    exit;

Paso 3: Configurar un sitio web

En este paso, configurará la raíz del sitio web predeterminada para Apache Servidor HTTP con propietarios y permisos de acceso recomendados. A continuación, crea un PHPpágina web basada en la raíz de ese sitio web predeterminado.

A continuación, habilita el tráfico web entrante para ver esa página web configurando el grupo de seguridad en Amazon EC2 y la lista de control de acceso a la red (ACL de red) en Amazon Virtual Private Cloud (Amazon VPC) que están asociados a este EC2 entorno. Cada EC2 entorno debe estar asociado a un grupo de seguridad en Amazon EC2 y a una ACL de red en Amazon VPC. Sin embargo, aunque la ACL de red predeterminada de una Cuenta de AWS permite todo el tráfico de entrada y salida del entorno, el grupo de seguridad predeterminado permite únicamente el tráfico entrante mediante SSH a través del puerto 22. Para obtener más información, consulte Configuración de VPC para entornos de desarrollo AWS Cloud9.

Para finalizar este paso, debe ver correctamente la página web desde fuera del IDE de AWS Cloud9 .

  1. Configure la raíz del sitio web predeterminada para Apache Servidor HTTP (/var/www/html) con propietarios y permisos de acceso recomendados. Para ello, ejecute los seis comandos siguientes, uno a la vez y en el orden siguiente, en una sesión de terminal en el AWS Cloud9 IDE. Para entender lo que hace cada comando, lea la información que aparece detrás del comando # en cada comando.

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

    En Ubuntu Servidor:

    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. Cree un PHPpágina web basada index.php en el nombre de la carpeta raíz del sitio web predeterminado para Apache Servidor HTTP (que es/var/www/html) ejecutando el siguiente comando.

    Para 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

    El comando anterior para Amazon Linux también cambia el propietario del archivo aec2-user, cambia el grupo del archivo a web-content y cambia los permisos del archivo a read/write for the user, and read/execute para el grupo y otros.

    En Ubuntu Servidor:

    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

    El comando anterior para Ubuntu El servidor también cambia el propietario del archivo aubuntu, cambia el grupo del archivo a web-content y cambia los permisos del archivo read/write for the user, and read/execute para el grupo y otros usuarios.

    Si se ejecuta correctamente, los comandos anteriores crean el archivo index.php con el siguiente contenido.

    <?php phpinfo(); ?>
  3. Habilite el tráfico web entrante a través del puerto 80 para ver la nueva página web configurando la ACL de red en Amazon VPC y el grupo de seguridad Amazon EC2 asociado a este EC2 entorno. Para ello, ejecute los ocho comandos siguientes, de uno en uno, en el orden que se indica a continuación. Para entender lo que hace cada comando, lea la información que aparece detrás del comando # en cada comando.

    importante

    La ejecución de los siguientes comandos habilita el tráfico web entrante a través del puerto 80 para todos los EC2 entornos e EC2 instancias de Amazon que estén asociados al grupo de seguridad y a la ACL de red de este entorno. Esto podría provocar que se habilite inesperadamente el tráfico web entrante a través del puerto 80 para EC2 entornos e EC2 instancias de Amazon distintos de este.

    nota

    Los comandos del segundo al cuarto siguientes habilitan el grupo de seguridad para permitir el tráfico web entrante a través del puerto 80. Si tiene un grupo de seguridad predeterminado, que solo permite el tráfico SSH a través del puerto 22, debe ejecutar el primer comando y después los comandos del segundo al cuarto. Sin embargo, si tiene un grupo de seguridad personalizado que ya permite el tráfico web entrante a través del puerto 80, puede omitir la ejecución de estos comandos.

    Los comandos del quinto al octavo siguientes habilitan la ACL de red para permitir el tráfico web entrante a través del puerto 80. Si tiene una ACL de red predeterminada, que ya permite todo el tráfico entrante a través de todos los puertos, puede pasar por alto la ejecución de dichos comandos. Sin embargo, supongamos que tiene una ACL de red personalizada que no habilita el tráfico web entrante a través del puerto 80. A continuación, ejecute el primer comando seguido de los comandos quinto a octavo.

    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. Obtenga la URL al archivo index.php en la raíz del servidor web. Para ello, ejecute el siguiente comando y utilice una nueva pestaña del navegador web o un navegador web distinto del AWS Cloud9 IDE para ir a la URL que se muestra. Si se ejecuta correctamente, la página web muestra información sobre Apache Servidor HTTP, MySQL, PHP, y otros ajustes relacionados.

    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.

Paso 4: Limpiar

Supongamos que desea seguir utilizando este entorno, pero desea deshabilitar el tráfico web entrante a través del puerto 80. En ese caso, ejecute los ocho comandos siguientes, uno por uno, en el orden que se indica a continuación, para eliminar las reglas de tráfico entrante correspondientes que configuró anteriormente en el grupo de seguridad y en la ACL de red que están asociados al entorno. Para entender lo que hace cada comando, lea la información que aparece detrás del comando # en cada comando.

importante

La ejecución de los siguientes comandos deshabilita el tráfico web entrante a través del puerto 80 en todos los EC2 entornos e EC2 instancias de Amazon que estén asociados al grupo de seguridad y a la ACL de red de este entorno. Esto podría provocar la desactivación inesperada del tráfico web entrante a través del puerto 80 para EC2 entornos e EC2 instancias de Amazon distintos de este.

nota

Los comandos del quinto al octavo siguientes eliminan las reglas existentes para impedir que la ACL de red permita el tráfico web entrante a través del puerto 80. Si tiene una ACL de red predeterminada, que ya permite todo el tráfico entrante a través de todos los puertos, puede omitir la ejecución de dichos comandos. Sin embargo, supongamos que tiene una ACL de red personalizada con reglas existentes que permiten el tráfico web entrante a través del puerto 80 y desea eliminar esas reglas. En ese caso, ejecute el primer comando seguido de los comandos quinto a octavo.

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.

Si ha terminado de usar este entorno, elimínelo para evitar que se apliquen cargos continuos en su Cuenta de AWS. Para obtener instrucciones, consulte Eliminar un entorno en AWS Cloud9.

PrivacidadTérminos del sitioPreferencias de cookies
© 2025, Amazon Web Services, Inc o sus afiliados. Todos los derechos reservados.