Este tutorial es la continuación de Cómo lanzar una instancia Amazon EC2 en AWS
Esta configuración será la base para que en un próximo tutorial podamos instalar aplicaciones web como WordPress y poner nuestro sitio en línea.
Antes de Empezar
Amazon Linux 2023 usa un gestor de paquetes llamado DNF (Dandified YUM), que nos permite instalar, actualizar y gestionar programas en nuestro servidor. DNF es una versión mejorada de YUM (Yellowdog Updater Modified) y funciona en sistemas basados en RPM (Red Hat Package Manager), como Fedora, CentOS y Amazon Linux.
¿Qué es un gestor de paquetes? Es una herramienta que facilita instalar, actualizar y eliminar programas en sistemas Linux. ¡Muy útil para mantener el servidor con las aplicaciones al día!
Paso a Paso
1. Conéctate a tu Servidor en AWS
Vamos a empezar conectándonos a nuestro servidor en AWS usando SSH (Secure Shell), una herramienta que permite acceder de forma segura. Necesitarás la clave privada (.pem) que descargaste cuando creaste el servidor en el tutorial anterior.
Desde el terminal, navega a la carpeta donde guardaste tu clave privada y usa el siguiente comando para conectarte:
ssh -i "mi_llave.pem" usuario@dns-publico.compute-1.amazonaws.com
Explicación del comando:
ssh
: Nos conecta al servidor de forma segura.i "mi_llave.pem"
: Le indica al comando ssh
que use nuestra clave privada para autenticar el acceso.usuario
: Es el nombre de usuario en el servidor. En Amazon Linux suele ser ec2-user
.dns-publico.compute-1.amazonaws.com
: Es la dirección del servidor en AWS. Cada instancia de EC2 tiene una dirección DNS pública única para conectarnos desde Internet.
2. Instalación de los Paquetes Necesarios
Primero, vamos a asegurarnos de que el sistema esté actualizado con el siguiente comando:
sudo dnf upgrade -y
Instala Apache y PHP
Apache es el servidor web que mostrará tu sitio, y PHP es el lenguaje de programación que muchas aplicaciones web necesitan. Ejecuta el siguiente comando para instalarlos:
sudo dnf install -y httpd wget php-fpm php-mysqli php-json php php-devel php-gd
Nota: php-gd es una librería de PHP que permite manipular imágenes, y WordPress la necesita para gestionar las imágenes de tu sitio.
Para comprobar que php-gd
se instaló correctamente, puedes usar este comando:
php -m | grep gd
Inicia y Configura Apache
Inicia Apache:
sudo systemctl start httpd
Configura Apache para que inicie automáticamente cuando el servidor se reinicie:
sudo systemctl enable httpd
Comprueba que Apache está habilitado:
sudo systemctl is-enabled httpd
Instala y Configura la Base de Datos MariaDB
MariaDB es el sistema de bases de datos que almacenará la información de tus aplicaciones web.
sudo dnf install -y mariadb105-server
Inicia MariaDB:
sudo systemctl start mariadb
Configura MariaDB para que inicie automáticamente:
sudo systemctl enable mariadb
Verifica que MariaDB está habilitado:
sudo systemctl is-enabled mariadb
3. Configura Permisos para Apache y ec2-user
Es importante que nuestro usuario (ec2-user
) tenga permisos para trabajar con los archivos del servidor web (Apache). Hazlo así:
Agrega ec2-user
al grupo apache
:
sudo usermod -a -G apache ec2-user
Cierra la sesión y vuelve a conectarte para que los cambios se apliquen. Luego, verifica con el comando:
groups
Configura permisos en el directorio web para facilitar la instalación de aplicaciones como WordPress:
sudo chown -R apache:apache /var/www
sudo chmod 2775 /var/www && find /var/www -type d -exec sudo chmod 2775 {} \;
4. Configura un Virtual Host en Apache
Los Virtual Hosts son configuraciones que permiten que un servidor Apache maneje varios sitios web en la misma máquina.
Crea la carpeta donde estarán los archivos del sitio web. Por ejemplo, para un sitio llamado mi-dominio.com
podrías crear la carpeta mi-dominio:
mkdir /var/www/html/mi-dominio
Crea un archivo de configuración en /etc/httpd/conf.d
. Por ejemplo, para un sitio llamado mi-dominio.com
que escuchará en el puerto 80:
sudo nano /etc/httpd/conf.d/mi-dominio.conf
Luego, agrega el siguiente contenido:
<VirtualHost *:80>
ServerAdmin micorreo@mi-dominio.com
DocumentRoot /var/www/html/mi-dominio
ServerName mi-dominio.com
ServerAlias www.mi-dominio.com
<Directory "/var/www/html/mi-dominio">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog "/var/log/mi-dominio-error.log"
CustomLog "/var/log/mi-dominio-access.log" common
</VirtualHost>
Explicación:
DocumentRoot
: Especifica la carpeta donde están los archivos del sitio web.ServerName
: Define la URL principal del sitio.ServerAlias
: Permite URLs alternativas, como www.mi-dominio.com
. En este caso una IP Pública del servidor.Directory
: Controla permisos y configuraciones para la carpeta de tu sitio.
Reinicia Apache para que cargue el nuevo virtual host:
sudo systemctl restart httpd
Prueba tu Configuración con un Archivo PHP
Si en la URL de tu navegador ingresas la IP Pública o el DNS Público proporcionado por AWS y ves el mensaje “It Works”, significa que tu configuración está funcionando correctamente.
Por otro lado, si ya has redirigido el DNS de tu dominio hacia la IP Pública y deseas verificar que todo esté funcionando, puedes crear un archivo temporal llamado phpinfo.php en la carpeta de tu sitio utilizando el siguiente comando:
echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/mi-dominio/phpinfo.php
Visita http://mi-dominio.com/phpinfo.php
en tu navegador para ver si carga la información de PHP. Recuerda eliminar este archivo cuando termines, ya que puede revelar información sensible de tu servidor:
sudo rm /var/www/html/mi-dominio/phpinfo.php
¡Listo! Ahora tienes un servidor LAMP funcionando en Amazon Linux 2023. ¡Este es un gran paso en el camino para convertirte en un experto en AWS! ¡Felicidades por tu progreso y sigue adelante!
Tutorial Anterior: Cómo lanzar una instancia Amazon EC2 en AWS
Tutorial Siguiente: Guía Paso a Paso: Compra y Configuración de un Dominio y DNS en AWS