Despliegue de aplicación net core en EC2
En este post vamos a aprender como desplegar una aplicación net core en una máquina EC2 en AWS, necesitaremos lo siguiente:
- Cuenta de AWS
- Visual Studio (Opcional)
- Cuenta GitHub o similar
- Putty (SSH Client)
Creación del proyecto para subir
Lo primero que tenemos que hacer es crear un proyecto net core, ya sea de tipo API o tipo web, en mi caso lo voy a crear de tipo web ya que es más visual.
Para ello abrimos Visual Studio y creamos un proyecto de tipo Web App (Model View Controller)
Ahora elegimos el nombre de nuestro proyecto, en mi caso será web EC2
Ahora seleccionamos Next y después Create para crear el proyecto, cuando esté creado se abrirá.
No vamos a tocar nada del proyecto que se crea por defecto ya que el objetivo de este post no es ver como se crea una Web en net core, pero si vamos a comprobar que nos funcione de manera local.
Como vemos funciona correctamente, por lo que estamos preparados para subir el proyecto a la nube, lo primero que tenemos que hacer es subir el proyecto a GitHub o similar para poder después clonarlo en nuestra máquina virtual en la nube.
Seleccionamos Create Git Repository
Revisamos la creación del repositorio, en mi caso es correcto por lo que lo voy a dejar así.
Comprobamos en nuestro GitHub que tenemos el proyecto
Creación de la máquina en AWS
Iniciamos sesión en nuestra cuenta de AWS
Ahora buscamos el servicio de Máquinas virtuales EC2 y lo abrimos
Ahora seleccionamos Lanzar instancia para crear una nueva máquina virtual
Cuando nos aparezca la pantalla de creación de la instancia, lo primero que tenemos que hacer es elegir un nombre para la instancia, en mi caso «DespliegueNetCore»
Ahora tenemos que seleccionar el sistema operativo que queremos, lo vamos a dejar por defecto
Ahora seleccionamos las características de la máquina, es importante tener en cuenta que siempre debemos seleccionar las opciones en las que aparezca «Apto para la capa gratuita», en mi caso voy a dejar las opciones por defecto
Después seleccionamos el tipo de instancia en mi caso t2.micro
Ahora tenemos que generar un par de claves que nos permita conectarnos a la máquina que vamos a crear, para ello establecemos un nombre para las claves, en mi caso «aws-keys-desplieguenetcore»
Cuando le hayamos dado un nombre al par de claves, seleccionamos Crear nuevo par de claves
Volvemos a poner el nombre de las claves y dejamos las opciones de debajo por defecto, después seleccionamos Crear par de claves y se nos descargará un archivo .pem
Ahora debemos configurar la máquina para que permita el acceso desde fuera, para ello seleccionamos permitir tráfico Https desde internet y permitir trafico http desde internet
Ahora tenemos que desplegar la opción de Detalles Avanzados y bajamos a datos del usuario
Pegamos el siguiente script
#!/bin/bash
sudo su
yum update -y
yum install httpd -y
yum install git -y
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
systemctl start httpd
systemctl enable httpd
git config --global user.name "{tunombredegit}"
git config --global user.email "{tuemaildegit}"
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 5000
Finalmente lanzamos la instancia
Creación de claves con PuttyGen
Abrimos PuttyGen y seleccionamos load
Después seleccionamos el fichero .pem que se ha generado al crear las claves para la máquina, cuando lo tengamos seleccionamos Save private key
Guardamos el fichero .ppk que se ha generado
Conexión a la máquina con Putty
Abrimos putty y en host ponemos la dirección ip de la máquina que hemos creado
Ahora tenemos que importar la clave que hemos creado para poder conectarnos, para ello nos vamos a SSH/Auth y elegimos las claves
Seleccionamos open y nos pedirá con que usuario queremos conectarnos, pondremos ec2-user
Clonación del proyecto en la máquina
Ahora tenemos que clonar el proyecto que tenemos en GitHub en nuestra máquina, para ello abrimos nuestro proyecto en GitHub y copiamos la url del proyecto
Ahora en la máquina ejecutamos el siguiente comando:
git clone {url}
Cuando nos pida la contraseña no debemos de introducirla, debemos introducir un token que vamos a generar, para ello vamos a nuestro GitHub, al apartado de Settings, después a Developer Settings
Ahora seleccionamos Personal Access Tokens
Generamos un nuevo token que tendrá permisos de repo
Generamos el token y lo copiamos
Ahora copiamos el token como si fuera la contraseña en nuestra máquina virtual y ejecutamos
Ahora ya tenemos el proyecto en nuestra máquina virtual, entremos al proyecto con el siguiente comando
cd {nombre proyecto}
Ejecutamos el siguiente comando
dotnet run --urls "http://0.0.0.0:5000"
Ahora ya tenemos la aplicación ejecutándose en nuestra máquina, ahora solo tenemos que ir a nuestro navegador e introducir la url de la máquina por http, en mi caso http://3.85.184.244/
Autor/a: Diego Plaza Rodán
Curso: Desarrollo Web Full Stack, MultiCloud y Multiplataforma
Centro: Tajamar
Año académico: 2021-2022
Código / recursos utilizados / Otros datos de interés: https://github.com/plaza19/WebEc2.git