Skip to content

Latest commit

 

History

History
353 lines (175 loc) · 11.4 KB

README.md

File metadata and controls

353 lines (175 loc) · 11.4 KB

oci-app-deploy

  1. Crear compartimento Identity & Security / Compartments

    image

    Seleccionar Create Compartment

    image

    Ingresar informacion necesaria y presionar el boton Create Compartment

    image

  2. Crear usuario en la siguiente ruta: Identity / Domains / Default domain

    image

    image

    Crear usuario sin seleccionar grupo pues lo asignaremos posteriormente. image

  3. Creamos un grupo

    image

  4. Asignamos permisos

    image

    Registramos el nombre y seleccionamos las opciones:

    image

    Luego seleccionamos el switch "Show manual editor" y corregimos la linea

    De: Allow group 'Default'/'DeveloperGroup' to manage compute-management-family in compartment Desarrollo

    A: Allow group 'Default'/'DeveloperGroup' to manage all-resources in compartment Desarrollo

    Modificamos políticas para permitir el acceso a shell del nuevo usuario o grupo: image

    Agregamos la siguiente sentencia (sin comillas de inicio y fin): "Allow group 'Default'/'DeveloperGroup' to use cloud-shell in tenancy" Recuerda que debes cambiar el nombre del grupo en caso el tuyo sea diferente image

  5. Nos logueamos con el nuevo usuario. Generalmente no se tiene la contraseña inicial así que lo que queda es restablecer la contraseña y luego activar el login de 2 factores.

  6. fdsf Seleccionamos Shell

    Creamos la carpeta .ssh con "mkdir .ssh"

    Accedemos a la carpeta con "cd .ssh/"

    Creamos la llave pública y privada: ssh-keygen -b 2048 -t rsa -f cloudshellkey

    image

    No ingresamos ninguna información cuando nos pide passphrase image

    Escribimos "ls -a" para verificar que se hayan creado las keys, estas llaves nos servirán para hacer una conección de una forma segura y la utilizaremos más adelante.

  7. Vamos a usar el asistente para crear una VCN

    image

    Dejamos los valores por defecto y creamos nuestra VCN image

  8. Creamos una instancia:

    image

    image

    Colocamos el nombre y dejamos todos las opciones por defecto exepto el área en el que nos permite elegir la Key SSH image

    Seleccionamos la opción: "Paste public keys" y abrimos el shell image

    Tener en cuenta que debes ubicarte dentro de la carpeta .shh

    Copiamos las dos líneas siguientes luego de escribir: "cat TUCLAVE.pub" image

    Finalmente seleccionamos el botón Create: image

    Finalmente ya tenemos creada nuestra instancia en la que unos de los datos más importantes es el número de IP y el usuario que por defecto es opc: image

    Abrimos shell y escribimos: "ssh opc@TUIPPUBLICA -i cloudshellkey" y luego escribimos "yes" cuando el sistema lo solicita Para confirmar que ya estamos dentro de la instancia podemos ver que la última línea tiene el nombre de nuestro usuario y podemos hacer un ping para conectarnos hacía afuera, por ejemplo: "ping www.google.com"

  9. Ahora vamos a realizar algunas configuraciones para que podamos acceder desde internet a nuestra ip pública. Escribimos: "sudo yum -y install httpd" image

    Vamos a agregar el puerto 80 al firewall: "sudo firewall-cmd --permanent --add-port=80/tcp" "sudo firewall-cmd --reload" "sudo systemctl start httpd"

    Agregamos un archivo para mostrar un html para mostrar en nuestra ip publica "sudo su" "echo "

    Hola Mundo

    " >> /var/www/html/index.html"

    Vamos a agregar una regla de entrada: image

    image

    image

  10. Crear Load Balancer

    image

    Antes de crear un Load Balancer creamos otra instancia con este objetivo, la creamos de la misma forma que lo hicimos anteriormente, copiando la key publica.

    La nueva instancia va a tener otra ip Abrimos shell y escribimos: "ssh opc@TUIPPUBLICA -i cloudshellkey" y luego escribimos "yes" cuando el sistema lo solicita

    Realizamos los mismos procedimientos para instalar httpd con:

"sudo yum -y install httpd"

Luego ejecutamos los siguientes comandos para que finalmente podamos probar la segunda instancia: sudo firewall-cmd --permanent --add-port=80/tcp

sudo firewall-cmd --reload

sudo systemctl start httpd

Agregamos un archivo para mostrar un html para mostrar en nuestra ip publica sudo su

echo "

Hola Mundo 2

" >> /var/www/html/index.html

Deberias tener 2 instancias corriendo:

image

Como vamos a usar los recursos gratuitos lo dejamos todos como esta y solo seleccionamos nuestra VCN: image

Luego agregamos Backends y seleccionamos nuestras 2 instancias creadas previamente: image

Luego viene la configuracion de Listener y seleccionamos HTTP image

En la seccion de logs dejamos las opciones por defecto: image

Con la ip publica podemos verificar que alterna el acceso a las dos instancias de forma alterna:

image

  1. Creamos nuestra base de datos JSON image

    image

    Solo sera necesario colocar el nombre, las otras configuraciones las dejamos como esta para que se mantenga siempre gratis.

    Una vez creada la base de datos se debe seleccionar la opcion "View all database actions" para revisar las opciones disponibles: image

    image

  2. Ingresamos a shell con los datos de la primera instancia: "ssh opc@TUIPUBLICA -i .ssh/cloudshellkey"

    Instalamos GIT sudo dnf install git

Clonamos una app de git git clone https://tuappengit

Instalamos node, dependiendo de la version que corresponda a tu aplicacion

sudo dnf install @nodejs:16

Ingresamos a la carpeta de la aplicacion

cd nombreDeLaCarpeta

Instalamos dependencias:

npm install

Instalacmos InstantClient

sudo dnf list installed | grep instantclient

sudo dnf install oracle-instantclient-release-el8

sudo dnf install oracle-instantclient-basic

DEscargamos el Wallet

Vamos a panel izquierdo -> Oracle DB -> Autonomous DB -> DoguitoDB -> DB Connection -> Download wallet -> pw=LaMismaDeLaDatabase -> Download

Salimos del usuario loqueado con "exit"

Cargamos el archivo de Wallet

Panel superior izquierdo o engranaje en parte superior derecha de cloudshell -> Upload -> Cargamos archivo de wallet que acabamos de descargar -> Hide

copiamos el archivo a la raiz de opc

scp -i .ssh/cloudshellkey Wallet_devdb.zip opc@129.151.122.13:/home/opc

accedemos nuevamente con el usuario opc

ssh opc@TUIP -i .ssh/cloudshellkey

verificamos que el archivo del wallet se copio correctamente

ls

copiamos el wallet a una ubicacion predeterminada

sudo cp Wallet_*.zip /usr/lib/oracle/21/client64/lib/network/admin

nos ubicamos en la carpeta

cd /usr/lib/oracle/21/client64/lib/network/admin

descomprimimos sudo unzip -B Wallet_algunnombre.zip

agregamos las variables de entorno

export DB_USER=ADMIN export DB_PASSWORD=tuclave export CONNECT_STRING=devdb_high

Agregamos el puerto 3000 para que reciba trafico

sudo firewall-cmd --permanent --add-port=3000/tcp

reiniciamos el firewall

sudo firewall-cmd --reload

Agregamos el puerto 3000 a security list

vm1 -> public subnet VCN1 -> Default security list -> Add ingress rule -> Source CDIR=0.0.0.0/0 -> Port=3000 -> Add rule

Iniciamos el proyecto

npm start

Iniciar el servicio que tiene la siguiente estructura

[Unit] Description=Doguito API Service After=network.target

[Service] Environment="DB_USER=ADMIN" Environment="DB_PASSWORD=???" Environment="CONNECT_STRING=???" Type=simple User=opc ExecStart=/usr/bin/node /home/opc/doguito-api-es/bin/www Restart=on-failure

[Install] WantedBy=multi-user.target

Modificamos el archivo si es necesario con:

vim doguito-api.service

Primero copiamos el archivo a donde corresponde

sudo cp doguito-api.service /lib/systemd/system

cd /lib/systemd/system

sudo systemctl daemon-reload

sudo systemctl status doguito-api.service

sudo systemctl start doguito-api.service

sudo systemctl enable doguito-api.service