Crear servidor web utilizando maquinas EC2
Hola a tod@s, en este post voy e explicar como crear nuestro propio servidor web en una maquina virtual EC2 en AWS.
Antes de crear nuestra maquina virtual debemos tener un proyecto ASP .NET Core ya creado y tenerlo subido en un repositorio en GitHub.
Ahora nos vamos al la consola de AWS y vamos a la sección EC2 y pulsamos en lanzar la instancia para crearnos una nueva maquina:
Ponemos un nombre a nuestra maquina y elegimos la imagen Linux 2 AMI (HVM) – Kernel 5.10 (o cualquiera que ponga apto para la capa gratuita):
Nos tenemos que crear un par de claves para poder acceder a nuestra maquina, seleccionamos en crear un nuevo par de claves (podemos usarlas en diferentes maquinas):
Se nos descargara una archivo .pem, luego le daremos permisos para poder acceder a nuestra maquina.
Ahora debemos de crearnos un nuevo grupo de seguridad ya que si tenemos varias maquinas dentro del mismo grupo podrían comunicarse entre si creando una red interna (como comunar un mvc y una api):
Y admitimos todo el trafico entrante desde ssh, http y https:
Pulsamos en lanzar instancia:
Una vez lanzada esperamos a que AWS nos cree la maquina.
Localizamos el archivo .pem que descargamos antes y nos creamos en el directorio C: una carpeta llamada AWSKEYS en donde guardaremos todas nuestras claves.
Para poder usar ese archivo y conectaros a nuestra maquina EC2 el archivo debe ser de solo lectura, quitar permisos heredados y tener un único propietario administrador. Abrimos las propiedades del archivo y editamos los permisos:
Seleccionamos opciones avanzadas:
Deshabilitamos la herencia y seleccionamos en quitar todos los permisos heredados de este objeto:
Por ultimo agregamos nuestro usuario de Windows y le damos control total:
Una vez realizados estos pasos ya podemos conectarnos a nuestra maquina virtual.
Para poder conectarnos necesitamos la cadena de conexón. Para conseguirla vamos a nuestra consola de aws y seleccionamos la instancia, pulsamos en conectar y copiamos la cadena de conexión de ejemplo:
Con la línea de comandos nos vamos a la localización C:/AWSKEYS y pegamos nuestro comando (en este caso usare cmder una línea de comandos que permite usar comandos Linux en Windows puedes descargarla desde aqui):
Una vez conectado ponemos permisos de super usuario con sudo su y vamos escribiendo los siguientes comandos:
Actualizamos los paquetes:
yum update -y
Instalamos el servicio http:
yum install httpd -y
Instalamos dotnet:
sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm
sudo yum install dotnet-sdk-5.0 -y
sudo yum install dotnet-runtime-5.0 -y
sudo yum install libunwind -y
Instalamos el servicio https
yum install mod_ssl -y
Iniciamos los servicios:
systemctl start httpd
systemctl enable httpd
Damos permisos a los certificados
cd /etc/pki/tls/certs
sudo ./make-dummy-cert localhost.crt
Hacemos un routing a ssl
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j REDIRECT --to-port 5001
Instalamos git
yum install git -y
Configuramos Git
git config --global user.name "NOMBRE-DE-USUARIO"
git config --global user.email "CORREO"
Creamos la carpeta de nuestro proyecto y agregamos permisos
mkdir /var/coreapp
cd /var/coreapp
sudo chown -R ec2-user /var/coreapp
Descargamos nuestro proyecto git
git clone URL DEL PROYECTO
Entramos dentro de la carpeta del proyecto descargado
cd PROYECTO
Restauramos el proyecto y hacemos un build
dotnet restore
dotnet build
Arrancamos el proyecto
dotnet run --urls "https://0.0.0.0:5001"
Ahora vamos a la consola de aws, seleccionamos la instancia y copiamos la dirección ip publica en el navegador:
Con estos pasos ya tenemos disponible nuestro Mvc en el servidor:
Autor/a: Luis Enrique Frías Araujo
Curso: Desarrollo Web Full Stack, MultiCloud y Multiplataforma
Centro: Tajamar
Año académico: 2021-2022