Tutorial: Instalar un servidor LAMP en AL1 - Amazon Linux 1

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.

Tutorial: Instalar un servidor LAMP en AL1

nota

Ya no se admite Amazon Linux 1 (AL1anteriormente AMI de Amazon Linux). Esta guía solo está disponible como referencia.

Los siguientes procedimientos le ayudan a instalar un servidor web Apache compatible con PHP y MySQL en la AL1 instancia (a veces denominado servidor web LAMP o pila LAMP). Puede utilizar este servidor para alojar un sitio web estático o implementar una aplicación PHP dinámica que lea y escriba información en una base de datos.

importante

Si está intentando configurar un servidor web LAMP en una distribución diferente, como Ubuntu o Red Hat Enterprise Linux, este tutorial no funcionará. Para AL2 ello, consulte el tutorial: Instalar un servidor LAMP en AL2. Para Ubuntu, consulte la siguiente documentación de la comunidad de Ubuntu: ApacheMySQLPHP. Para otras distribuciones, consulte su documentación específica.

Opción: completar este tutorial con la automatización

Para completar este tutorial utilizando la AWS Systems Manager automatización en lugar de las siguientes tareas, ejecute el AWSdocumento Docs-Install ALAMPServer -AL Automation.

Paso 1: Preparar el servidor LAMP

Requisitos previos

En este tutorial, se supone que ya ha lanzado una instancia nueva utilizando la Amazon Linux AMI, con un nombre de DNS público al que se puede tener acceso desde Internet. Para obtener más información, consulta Cómo lanzar una instancia en la Guía del EC2 usuario de Amazon. También debe haber configurado el grupo de seguridad para que permita las conexiones SSH (puerto 22), HTTP (puerto 80) y HTTPS (puerto 443). Para obtener más información sobre estos requisitos previos, consulte las reglas de los grupos de seguridad en la Guía del EC2 usuario de Amazon.

Para instalar e iniciar el servidor web LAMP con la Amazon Linux AMI
  1. Conéctese a la instancia.

  2. Para asegurarse de que todos los paquetes de software están actualizados, realice una actualización rápida del software en la instancia. Este proceso puede durar unos minutos, pero es importante realizarlo para asegurarse de que tiene las actualizaciones de seguridad y las correcciones de errores más recientes.

    La opción -y instala las actualizaciones sin necesidad de confirmación. Si le gustaría examinar las actualizaciones antes de la instalación, puede omitir esta opción.

    [ec2-user ~]$ sudo yum update -y
  3. Ahora que la instancia es actual, puede instalar el servidor web Apache, MySQL y los paquetes de software PHP.

    importante

    Es posible que algunas aplicaciones no sean compatibles con el siguiente entorno de software recomendado. Antes de instalar estos paquetes, compruebe si las aplicaciones de LAMP son compatibles con ellos. Si existe algún problema, quizá deba instalar un entorno alternativo. Para obtener más información, consulte El software de aplicación que deseo ejecutar en el servidor es incompatible con la versión de PHP instalada o con otro software

    Utilice el comando yum install para instalar varios paquetes de software y todas las dependencias relacionadas al mismo tiempo.

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

    Si recibe el errorNo package package-name available, significa que la instancia no se lanzó con la AMI de Amazon Linux (quizás la esté utilizando AL2 en su lugar). Para ver la versión de Amazon Linux, use el comando siguiente:

    cat /etc/system-release
  4. Inicie el servidor web Apache.

    [ec2-user ~]$ sudo service httpd start Starting httpd: [ OK ]
  5. Utilice el comando chkconfig para configurar el servidor web Apache de forma que se inicie cada vez que arranque el sistema.

    [ec2-user ~]$ sudo chkconfig httpd on

    El comando chkconfig no proporciona ningún mensaje de confirmación cuando se utiliza para habilitar correctamente un servicio.

    Puede verificar que httpd está activo ejecutando el siguiente comando:

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

    Aquí, httpd está on en los niveles de ejecución 2, 3, 4 y 5 (que es lo que desea ver).

  6. Si aún no lo ha hecho, añada una regla de seguridad para permitir las conexiones HTTP entrantes (puerto 80) con la instancia. De forma predeterminada, se configuró un grupo de Nseguridad con un asistente de lanzamiento para la instancia durante la inicialización. Este grupo contiene una sola regla para permitir las conexiones SSH.

    1. Abre la EC2 consola de Amazon en https://console.aws.amazon.com/ec2/.

    2. Elija Instances (Instancias) y seleccione la instancia.

    3. En la pestaña Security (Seguridad), consulte las reglas de entrada. Debería ver la siguiente regla:

      Port range Protocol Source 22 tcp 0.0.0.0/0
      aviso

      El uso 0.0.0.0/0 permite que todas IPv4 las direcciones accedan a tu instancia mediante SSH. Esto es aceptable para un periodo de tiempo corto en un entorno de prueba, pero no es seguro en entornos de producción. En entornos de producción, solo se autoriza el acceso a la instancia a una dirección IP o a un rango de direcciones IP específicas.

    4. Elija el vínculo para el grupo de seguridad. Con los procedimientos que se describen en Añadir reglas a un grupo de seguridad, añada una nueva regla de seguridad entrante con los siguientes valores:

      • Tipo: HTTP

      • Protocolo: TCP

      • Rango de puertos: 80

      • Origen: personalizado

  7. Pruebe el servidor web. En un navegador web, escriba la dirección DNS pública (o la dirección IP pública) de la instancia. Puedes obtener la dirección DNS pública de tu instancia mediante la EC2 consola de Amazon. Si no hay ningún contenido en /var/www/html, debería aparecer la página de prueba de Apache. Cuando se agrega contenido a la raíz de documentos, el contenido aparece en la dirección DNS pública de la instancia en lugar de en la página de prueba.

    Compruebe que el grupo de seguridad de la instancia contenga una regla para permitir el tráfico HTTP en el puerto 80. Para obtener más información, consulte Añadir reglas a un grupo de seguridad />.

    Si no utiliza Amazon Linux, es posible que también tenga que configurar el firewall en su instancia para permitir estas conexiones. Para obtener más información acerca de cómo configurar el firewall, consulte la documentación de su distribución específica.

Apache httpd sirve archivos que se guardan en un directorio denominado raíz de documentos de Apache. La raíz de documentos de Apache de Amazon Linux es /var/www/html, que es propiedad del directorio raíz de manera predeterminada.

[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

Para permitir que la cuenta ec2-user manipule archivos de este directorio, debe modificar la propiedad y los permisos del directorio. Existen muchas formas de realizar esta tarea. En este tutorial se añade el usuario ec2-user al grupo apache, se otorga al grupo apache la propiedad del directorio /var/www y se asignan permisos de escritura al grupo.

Para establecer permisos de archivo
  1. Añada el usuario (en este caso, el usuario ec2-user) al grupo apache.

    [ec2-user ~]$ sudo usermod -a -G apache ec2-user
  2. Cierre sesión, luego vuelva a iniciarla para elegir el nuevo grupo y, a continuación, verifique si pertenece a este.

    1. Cierre sesión (utilice el comando exit o cierre la ventana del terminal):

      [ec2-user ~]$ exit
    2. Para verificar si pertenece al grupo apache, vuelva a conectarse a la instancia y, entonces, ejecute el siguiente comando:

      [ec2-user ~]$ groups ec2-user wheel apache
  3. Cambie la propiedad de grupo de /var/www y su contenido al grupo apache.

    [ec2-user ~]$ sudo chown -R ec2-user:apache /var/www
  4. Para agregar permisos de escritura de grupo y establecer el ID de grupo en futuros subdirectorios, cambie los permisos del directorio /var/www y sus subdirectorios.

    [ec2-user ~]$ sudo chmod 2775 /var/www [ec2-user ~]$ find /var/www -type d -exec sudo chmod 2775 {} \;
  5. Para agregar permisos de escritura de grupo, cambie recursivamente los permisos de archivo de /var/www y sus subdirectorios:

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

Ahora el usuario ec2-user (y cualquier futuro miembro del grupo apache) puede añadir, eliminar y editar archivos en la raíz de documentos de Apache, por lo que podrá añadir contenido, como un sitio web estático o una aplicación PHP.

(Opcional) Pruebe el servidor web.

Un servidor web que ejecuta el protocolo HTTP no proporciona seguridad de transporte de los datos que envía o recibe. Cuando se conecta a un servidor HTTP mediante un navegador web, lo URLs que visita, el contenido de las páginas web que recibe y el contenido (incluidas las contraseñas) de cualquier formulario HTML que envíe son visibles para los intrusos en cualquier punto de la red. La práctica recomendada para proteger el servidor web es instalar soporte para HTTPS (HTTP seguro), que protege los datos con cifrado SSL/TLS.

Para obtener información sobre la habilitación de HTTPS en su servidor, consulte Tutorial: Configuración SSL/TLS en la AMI de Amazon Linux.

Paso 2: Probar el servidor LAMP

Si el servidor está instalado y en funcionamiento, y tiene establecidos correctamente los permisos de archivos, la cuenta ec2-user debería poder crear un archivo PHP en el directorio /var/www/html, que está disponible en Internet.

Para probar el servidor web LAMP
  1. Cree un archivo PHP en la raíz de documentos de Apache.

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

    Si recibe el error "Permiso denegado" al intentar ejecutar este comando, intente cerrar sesión e iniciarla de nuevo para actualizar los permisos de grupo correctos que ha configurado en Paso 1: Preparar el servidor LAMP.

  2. En un navegador web, escriba la URL del archivo que acaba de crear. Esta URL es la dirección DNS pública de la instancia seguida de una barra diagonal y el nombre del archivo. Por ejemplo:

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

    Debería ver la página de información PHP.:

    La prueba del servidor LAMP muestra la página de información de PHP.

    Si no ve esta página, compruebe que el archivo /var/www/html/phpinfo.php se ha creado correctamente en el paso anterior. También puede comprobar que todos los paquetes necesarios se han instalado con el comando siguiente: Las versiones de paquete de la segunda columna no tienen que coincidir con el resultado de este ejemplo.

    [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

    Si alguno de los paquetes requeridos no aparece en la salida, instálelo con el comando sudo yum install package.

  3. Elimine el archivo phpinfo.php. Aunque esta información puede resultar útil, no se debe difundir por Internet por motivos de seguridad.

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

Paso 3: Proteger el servidor de base de datos

La instalación predeterminada del servidor MySQL posee varias características que son perfectas para las pruebas y el desarrollo, pero que se deben deshabilitar o eliminar para los servidores de producción. El comando mysql_secure_installation le guía a través del proceso de configuración de una contraseña raíz y de eliminación de las características que no son seguras de la instalación. Aunque no tenga pensado utilizar el servidor MySQL, es recomendable realizar este procedimiento.

Para proteger el servidor de base de datos
  1. Inicie el servidor 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. Ejecute mysql_secure_installation.

    [ec2-user ~]$ sudo mysql_secure_installation
    1. Cuando se le solicite, escriba una contraseña para la cuenta raíz.

      1. Escriba la contraseña raíz actual. De manera predeterminada, la cuenta raíz no tiene configurada ninguna contraseña. Pulse Intro.

      2. Escriba Y para configurar una contraseña y escriba una contraseña segura dos veces. Para obtener más información sobre cómo crear una contraseña segura, consulte. https://identitysafe.norton.com/password-generator/ Procure guardar esta contraseña en un lugar seguro.

        La configuración de una contraseña raíz para MySQL es solo la medida más básica para proteger la base de datos. Cuando se crea o se instala una aplicación basada en base de datos, normalmente se crea un usuario del servicio de la base de datos para esa aplicación y se evita usar la cuenta raíz para cualquier cosa que no sea la administración de la base de datos.

    2. Escriba Y para eliminar las cuentas de usuarios anónimos.

    3. Escriba Y para deshabilitar el inicio de sesión raíz remoto.

    4. Escriba Y para eliminar la base de datos de prueba.

    5. Escriba Y para volver a cargar las tablas de privilegios y guardar los cambios.

  3. (Opcional) Si no tiene pensado utilizar el servidor MySQL de inmediato, deténgalo. Puede reiniciarlo cuando lo necesite.

    [ec2-user ~]$ sudo service mysqld stop Stopping mysqld: [ OK ]
  4. (Opcional) Si desea que el servidor MySQL se inicie cada vez que arranque, escriba el siguiente comando.

    [ec2-user ~]$ sudo chkconfig mysqld on

Ahora ya tiene un servidor web LAMP totalmente funcional. Si añade contenido a la raíz del documento de Apache en /var/www/html, debería poder ver ese contenido en la dirección DNS pública de su instancia.

Paso 4: Instalación (opcional) phpMyAdmin

Para instalar phpMyAdmin

phpMyAdmines una herramienta de administración de bases de datos basada en la web que puede usar para ver y editar las bases de datos MySQL de su EC2 instancia. Sigue los pasos que se indican a continuación para instalar y configurar phpMyAdmin tu instancia de Amazon Linux.

importante

No recomendamos utilizarlo phpMyAdmin para acceder a un servidor LAMP a menos que lo tenga habilitado SSL/TLS en Apache; de lo contrario, la contraseña de administrador de la base de datos y otros datos se transmitirán de forma insegura a través de Internet. Para ver las recomendaciones de seguridad de los desarrolladores, consulte Proteger la phpMyAdmin instalación.

nota

El sistema de administración de paquetes Amazon Linux no admite actualmente la instalación automática de phpMyAdmin en un entorno PHP 7. En este tutorial se describe cómo realizar la instalación phpMyAdmin manual.

  1. Inicie sesión en su EC2 instancia mediante SSH.

  2. Instale las dependencias requeridas.

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

    [ec2-user ~]$ sudo service httpd restart Stopping httpd: [ OK ] Starting httpd: [ OK ]
  4. Navegue a la raíz de documentos de Apache: /var/www/html.

    [ec2-user ~]$ cd /var/www/html [ec2-user html]$
  5. Selecciona un paquete fuente para la phpMyAdmin versión más reciente en https://www.phpmyadmin.net/downloads. Para descargar el archivo directamente a la instancia, copie el link y péguelo en un comando wget como el de este ejemplo:

    [ec2-user html]$ wget https://www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.tar.gz
  6. Cree una phpMyAdmin carpeta y extraiga el paquete en ella mediante el siguiente comando.

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

    [ec2-user html]$ rm phpMyAdmin-latest-all-languages.tar.gz
  8. (Opcional) Si el servidor MySQL no está en ejecución, inícielo ahora.

    [ec2-user ~]$ sudo service mysqld start Starting mysqld: [ OK ]
  9. En un navegador web, escriba la URL de la phpMyAdmin instalación. Esta URL es la dirección DNS pública (o la dirección IP pública) de la instancia, seguida de una barra inclinada y el nombre del directorio de instalación. Por ejemplo:

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

    Debería ver la página de phpMyAdmin inicio de sesión:

    El resultado de escribir la URL de la phpMyAdmin instalación es la pantalla de inicio de phpMyAdmin sesión.
  10. Inicie sesión en la phpMyAdmin instalación con el nombre root de usuario y la contraseña root de MySQL que creó anteriormente.

    Antes de poner en servicio la instalación, debe configurarla. Para configurarlo phpMyAdmin, puede crear manualmente un archivo de configuración, usar la consola de configuración o combinar ambos enfoques.

    Para obtener información sobre su uso phpMyAdmin, consulte la Guía phpMyAdmin del usuario.

Solución de problemas

En esta sección, se ofrecen sugerencias para resolver los problemas comunes que puede encontrarse al configurar un servidor LAMP nuevo.

No puedo conectarme a mi servidor utilizando un navegador web.

Realice las siguientes comprobaciones para ver si el servidor web Apache funciona y se puede obtener acceso a él.

  • ¿El servidor web funciona?

    Puede verificar que httpd está activo ejecutando el siguiente comando:

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

    Aquí, httpd está on en los niveles de ejecución 2, 3, 4 y 5 (que es lo que desea ver).

    Si el proceso httpd no se está ejecutando, repita los pasos que se describen en Paso 1: Preparar el servidor LAMP.

  • ¿El firewall está configurado correctamente?

    Compruebe que el grupo de seguridad de la instancia contenga una regla para permitir el tráfico HTTP en el puerto 80. Para obtener más información, consulte Agregar reglas a un grupo de seguridad />.

El software de aplicación que deseo ejecutar en el servidor es incompatible con la versión de PHP instalada o con otro software

Este tutorial recomienda instalar la mayoría de up-to-date las versiones de Apache HTTP Server, PHP y MySQL. Antes de instalar ninguna otra aplicación de LAMP, compruebe los requisitos para confirmar si es compatible con el entorno instalado. Si no se admite la versión más reciente de PHP, es posible (y del todo seguro) adoptar una configuración compatible anterior. Además, puede instalar más de una versión de PHP en paralelo, lo cual resuelve algunos problemas de compatibilidad con un trabajo mínimo. Para obtener información acerca de la configuración de preferencias cuando hay instaladas varias versiones de PHP, consulte Notas de la versión de la AMI de Amazon Linux 2016.09.

Procedimiento para adoptar versiones anteriores

En la anterior versión comprobada de este tutorial se llamaba a los paquetes principales de LAMP siguientes:

  • httpd24

  • php56

  • mysql55-server

  • php56-mysqlnd

Si ya ha instalado los paquetes más recientes, tal como se recomendaba al principio de este tutorial, primero debe desinstalar tanto esos paquetes como otras dependencias del modo siguiente:

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

A continuación, instale el entorno de sustitución:

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

Si, más adelante, decide actualizar el entorno al recomendado, primero debe quitar los paquetes y las dependencias personalizados:

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

Ya puede instalar los paquetes más recientes como se ha descrito antes.

Temas relacionados

Para obtener más información sobre la transferencia de archivos a la instancia o la instalación de un WordPress blog en el servidor web, consulta la siguiente documentación:

Para obtener más información acerca de los comandos y el software que se utilizan en este tutorial, visite las siguientes páginas web:

Para obtener más información sobre el registro de un nombre de dominio para su servidor web o la transferencia de un nombre de dominio existente a este host, consulte Uso de Amazon Route 53 como servicio de DNS para subdominios sin migrar el dominio principal en la Guía para desarrolladores de Amazon Route 53.