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 LAMP servidor en AL2 023
Los siguientes procedimientos le ayudan a instalar un servidor web Apache compatible con PHP MariaDB
importante
Estos procedimientos están diseñados para usarse con AL2 023. Si está intentando configurar un servidor LAMP web en una distribución diferente, como Ubuntu o Red Hat Enterprise Linux, este tutorial no funcionará. Para Ubuntu, consulte la siguiente documentación de la comunidad de Ubuntu: ApacheMySQLPHP
Tareas
Paso 1: Prepare el LAMP servidor
Requisitos previos
-
En este tutorial se supone que ya ha lanzado una nueva instancia con AL2 023, con un DNS nombre público al que se puede acceder desde Internet. Para obtener más información, consulte AL2023 en Amazon EC2. También debe haber configurado su grupo de seguridad para permitir las SSH conexiones (puerto 22), HTTP (puerto 80) y HTTPS (puerto 443). Para obtener más información sobre estos requisitos previos, consulta Autorizar el tráfico entrante para tus instancias de Linux en la Guía EC2del usuario de Amazon.
-
El siguiente procedimiento instala la última PHP versión disponible en la versión AL2 023, actualmente la 8.1. Si piensa utilizar PHP aplicaciones distintas a las descritas en este tutorial, debe comprobar su compatibilidad con la versión 8.1.
Para preparar el LAMP servidor
-
Conecte con la instancia . Para obtener más información, consulte Conexión a AL2 023 instancias.
-
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 dnf upgrade -y
-
Instale las versiones más recientes del servidor web Apache y PHP los paquetes para la versión AL2 023.
[ec2-user ~]$
sudo dnf install -y httpd wget php-fpm php-mysqli php-json php php-devel
-
Instale los paquetes de software de MariaDB. Utilice el comando dnf install para instalar varios paquetes de software y todas las dependencias relacionadas al mismo tiempo.
[ec2-user ~]$
sudo dnf install mariadb105-serverPuede ver las versiones actuales de estos paquetes mediante el comando siguiente:
[ec2-user ~]$
sudo dnf infopackage_name
Ejemplo:
[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.
-
Inicie el servidor web Apache.
[ec2-user ~]$
sudo systemctl start httpd
-
Utilice el comando systemctl para configurar el servidor web Apache de forma que se inicie cada vez que arranque el sistema.
[ec2-user ~]$
sudo systemctl enable httpd
Puede verificar que httpd está activo ejecutando el siguiente comando:
[ec2-user ~]$
sudo systemctl is-enabled httpd
-
Añada una regla de seguridad para permitir las conexiones entrantes HTTP (puerto 80) a su instancia si aún no lo ha hecho. De forma predeterminada, un asistente de lanzamiento-
N
Se creó un grupo de seguridad para la instancia durante el lanzamiento. Si no agregaste reglas de grupo de seguridad adicionales, este grupo contiene solo una regla para permitir SSH las conexiones.Abre la EC2 consola de Amazon en https://console.aws.amazon.com/ec2/
. En el panel de navegación izquierdo, elija Instances (Instancias) y seleccione la instancia.
-
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 su instancia medianteSSH. 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. -
Si no hay una regla de entrada que permita las conexiones HTTP (puerto 80), debes añadir la regla ahora. Elija el vínculo para el grupo de seguridad. Mediante los procedimientos que se indican en la sección Autorizar el tráfico entrante para las instancias de Linux, añada una nueva regla de seguridad entrante con los siguientes valores:
-
Tipo: HTTP
-
Protocolo: TCP
-
Rango de puertos: 80
-
Source (Fuente): Custom
-
-
Pruebe el servidor web. En un navegador web, escribe la DNS dirección pública (o la dirección IP pública) de la instancia. Si no hay contenido en
/var/www/html
, debería aparecer la página de prueba de Apache, que mostrará el mensaje “It works!” (“¡Funciona!”).Puedes obtener el público DNS de tu instancia mediante la EC2 consola de Amazon (consulta la IPv4 DNS columna Público; si esta columna está oculta, selecciona Preferencias (el icono con forma de engranaje) y activa Público). IPv4 DNS
Comprueba que el grupo de seguridad de la instancia contenga una regla que permita el HTTP tráfico en el puerto 80. Para obtener más información, consulte Agregar reglas al grupo de seguridad.
importante
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.
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 agrega 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
-
Añada el usuario (en este caso, el usuario
ec2-user
) al grupoapache
.[ec2-user ~]$
sudo usermod -a -G apache
ec2-user
-
Cierre sesión, luego vuelva a iniciarla para elegir el nuevo grupo y, a continuación, verifique si pertenece a este.
-
Cierre sesión (utilice el comando exit o cierre la ventana del terminal):
[ec2-user ~]$
exit
-
Para verificar si pertenece al grupo
apache
, vuelva a conectarse a la instancia y, entonces, ejecute el siguiente comando:[ec2-user ~]$
groups
ec2-user adm wheel apache systemd-journal
-
-
Cambie la propiedad de grupo de
/var/www
y su contenido al grupoapache
.[ec2-user ~]$
sudo chown -R ec2-user:apache /var/www
-
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 && find /var/www -type d -exec sudo chmod 2775 {} \;
-
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 ec2-user
(y cualquier futuro miembro del apache
grupo) puede añadir, eliminar y editar archivos en la raíz del documento de Apache, lo que le permite añadir contenido, como un sitio web estático o una PHP aplicación.
Para proteger el servidor web (opcional)
Un servidor web que ejecute el HTTP protocolo no proporciona seguridad en el transporte de los datos que envía o recibe. Cuando te conectas a un HTTP servidor mediante un navegador web, los URLs intrusos pueden ver lo que visitas, el contenido de las páginas web que recibas y el contenido (incluidas las contraseñas) de cualquier HTML formulario que envíes desde cualquier punto de la red. La mejor práctica para proteger tu servidor web es instalar el soporte para HTTPS (HTTPSecure), que protege tus datos con el cifrado/. SSL TLS
Para obtener información sobre HTTPS la activación en el servidor, consulteTutorial: Configurar SSL/TLS en AL2023.
Paso 2: Pruebe el LAMP servidor
Si el servidor está instalado y en funcionamiento, y los permisos de los archivos están configurados correctamente, tu ec2-user
cuenta debería poder crear un PHP archivo en el /var/www/html
directorio que está disponible en Internet.
Para probar tu LAMP servidor
-
Cree un PHP archivo en la raíz del documento 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 Para establecer permisos de archivo.
-
En un navegador web, escriba URL el archivo que acaba de crear. Esta URL es la DNS dirección pública de la instancia seguida de una barra diagonal y el nombre del archivo. Por ejemplo:
http://
my.public.dns.amazonaws.com
/phpinfo.phpDeberías ver la página de PHP información:
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 verificar que todos los paquetes necesarios se han instalado con el comando siguiente:[ec2-user ~]$
sudo dnf list installed httpd mariadb-server php-mysqlnd
Si alguno de los paquetes requeridos no aparece en la salida, instálelo con el comando sudo yum install
package
. -
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
Ahora debería tener un servidor LAMP web completamente funcional. Si añade contenido a la raíz del documento de Apache en/var/www/html
, debería poder verlo en la DNS dirección pública de su instancia.
Paso 3: Proteger el servidor de base de datos
La instalación predeterminada del servidor MariaDB 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 MariaDB, recomendamos realizar este procedimiento.
Para proteger el servidor MariaDB
-
Inicie el servidor MariaDB.
[ec2-user ~]$
sudo systemctl start mariadb
-
Ejecute mysql_secure_installation.
[ec2-user ~]$
sudo mysql_secure_installation
-
Cuando se le solicite, escriba una contraseña para la cuenta raíz.
-
Escriba la contraseña raíz actual. De manera predeterminada, la cuenta raíz no tiene configurada ninguna contraseña. Pulse Intro.
-
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 MariaDB 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.
-
-
Escriba
Y
para eliminar las cuentas de usuarios anónimos. -
Escriba
Y
para deshabilitar el inicio de sesión raíz remoto. -
Escriba
Y
para eliminar la base de datos de prueba. -
Escriba
Y
para volver a cargar las tablas de privilegios y guardar los cambios.
-
-
(Opcional) Si no tiene pensado utilizar el servidor MariaDB de inmediato, deténgalo. Puede reiniciarlo cuando lo necesite.
[ec2-user ~]$
sudo systemctl stop mariadb
-
(Opcional) Si desea que el servidor MariaDB se inicie cada vez que arranque el sistema, escriba el siguiente comando.
[ec2-user ~]$
sudo systemctl enable mariadb
Paso 4: Instalación (opcional) phpMyAdmin
phpMyAdminphpMyAdmin
en la instancia de Amazon Linux.
importante
No recomendamos utilizarla phpMyAdmin
para acceder a un LAMP servidor a menos que haya activadoSSL/TLSen 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
Para instalar phpMyAdmin
-
Instale las dependencias requeridas.
[ec2-user ~]$
sudo dnf install php-mbstring php-xml -y
-
Reinicie Apache.
[ec2-user ~]$
sudo systemctl restart httpd
-
Reinicie
php-fpm
.[ec2-user ~]$
sudo systemctl restart php-fpm
-
Navegue a la raíz de documentos de Apache:
/var/www/html
.[ec2-user ~]$
cd /var/www/html
-
Seleccione 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
-
Cree la carpeta
phpMyAdmin
y extraiga aquí el paquete con el comando siguiente:[ec2-user html]$
mkdir phpMyAdmin && tar -xvzf
phpMyAdmin-latest-all-languages.tar.gz
-C phpMyAdmin --strip-components 1 -
Elimine las
phpMyAdmin-latest-all-languages.tar.gz
tarball.[ec2-user html]$
rm
phpMyAdmin-latest-all-languages.tar.gz
-
(Opcional) Si Mi SQL servidor no se está ejecutando, inícielo ahora.
[ec2-user ~]$
sudo systemctl start mariadb
-
En un navegador web, escriba el URL de su phpMyAdmin instalación. URLEs la DNS dirección pública (o la dirección IP pública) de la instancia seguida de una barra diagonal y el nombre del directorio de instalación. Por ejemplo:
http://
my.public.dns.amazonaws.com
/phpMyAdminDeberías ver la página de phpMyAdmin inicio de sesión:
-
Inicie sesión en la phpMyAdmin instalación con el nombre
root
de usuario y la contraseña de My SQL root que creó anteriormente.Antes de poner en servicio la instalación, debe configurarla. Le sugerimos que comience con la creación manual del archivo de configuración de la siguiente manera:
-
Para comenzar con un archivo de configuración mínimo, utilice su editor de texto favorito para crear un archivo nuevo y luego, copie el contenido de
config.sample.inc.php
en él. -
Guarde el archivo tal y como
config.inc.php
está en el phpMyAdmin directorio que lo contieneindex.php
. -
Consulte las instrucciones posteriores a la creación del archivo en la sección Uso del script de configuración
de las instrucciones de phpMyAdmin instalación para cualquier configuración adicional.
Para obtener información sobre su uso phpMyAdmin, consulte la Guía del phpMyAdmin usuario
. -
Solución de problemas
En esta sección se ofrecen sugerencias para resolver los problemas más comunes que pueden surgir al configurar un nuevo LAMP servidor.
No puedo conectarme a mi servidor mediante un navegador web.
Realice las siguientes verificaciones 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 ~]$
sudo systemctl is-enabled httpd
Si el proceso httpd no se está ejecutando, repita los pasos que se describen en Para preparar el LAMP servidor.
-
¿El firewall está configurado correctamente?
Comprueba que el grupo de seguridad de la instancia contenga una regla que permita el HTTP tráfico en el puerto 80. Para obtener más información, consulte Agregar reglas al grupo de seguridad.
No puedo conectarme a mi servidor mediante HTTPS
Realice las siguientes comprobaciones para comprobar si su servidor web Apache está configurado para ser compatibleHTTPS.
-
¿El servidor web está configurado correctamente?
Tras instalar Apache, el servidor se configura para el HTTP tráfico. Para HTTPS admitirlo, TLS actívelo en el servidor e instale un SSL certificado. Para obtener más información, consulte Tutorial: Configurar SSL/TLS en AL2023.
-
¿El firewall está configurado correctamente?
Compruebe que el grupo de seguridad de la instancia contenga una regla que permita el HTTPS tráfico en el puerto 443. Para obtener más información, consulte Autorizar el tráfico entrante para las instancias de Linux.
Temas relacionados de
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:
-
Transfiere archivos a tu instancia de Linux con Win SCP en la Guía del EC2 usuario de Amazon.
-
Transfiera archivos a instancias de Linux mediante un SCP cliente en la Guía del EC2 usuario de Amazon.
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:
-
Servidor web Apache: http://httpd.apache.org/
-
Servidor de bases de datos MariaDB: https://mariadb.org/
-
PHPlenguaje de programación: http://php.net/
Para obtener más información acerca del registro de un nombre de dominio para el servidor web o la transferencia de un nombre de dominio existente a este host, consulte el tema Creación y migración de dominios y subdominios a Amazon Route 53 en la Guía para desarrolladores de Amazon Route 53.