Skip to content

Instantly share code, notes, and snippets.

@l337quez
Last active February 2, 2024 20:42
Show Gist options
  • Save l337quez/b44274073faf949ba250cb00e91a7f1f to your computer and use it in GitHub Desktop.
Save l337quez/b44274073faf949ba250cb00e91a7f1f to your computer and use it in GitHub Desktop.
Creando un Droplet en Digital Ocean

Creando un droplet en digital ocean

API con Node, Nest JS, base de datos Postgres y Front en Vue


  1. Creamos el droplet en Digital Ocean, escogemos la distribucion favorita. Escogemos credencial SSH por contraseña

  1. Copiamos la ip publica y luego abrimos la terminal y tipeamos el siguiente comando
ssh root@IP_PUBLICA

  1. Actualizamos la paqueteria de Ubuntu y luego instalamos postgre
apt update

Instalamos postgres junto con un paquete -contrib, que agrega algunas utilidades y funcionalidades adicionales

apt install postgresql postgresql-contrib

  1. Configuramos Postgres Entramos a postgres con el siguiente comando
-u postgres psql

Creamos el usuario y la clave, en este caso se llama 'admin', debe ser el mismo nombre que tienes configurado en la AP, en el archivo .env debe estar ese nombre.

CREATE USER admin PASSWORD 'admin123';

le damos permisos al usuario 'admin' con permisos de super usuario

ALTER ROLE admin WITH SUPERUSER;

creamos una base de datos con nombre 'name_db'

CREATE DATABASE name_db WITH OWNER admin;
GRANT ALL PRIVILEGES ON DATABASE name_db TO admin;

salimos de postgres

exit

  1. Instalamos Node, configurar PM2 y configurar controlador de versiones NVM
curl -sL https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.0/install.sh -o install_nvm.sh
bash install_nvm.sh

los archivos se deben recargar te puedes salir de ssh y luego vuelves a entrar, para ver si se instalo conrrectamanente.

nvm -v
Ahora se instala la version de nove que necesitamos, No instalar nodejs de la paquetria de ubuntu, porque va dar problemas con versiones.

cambia el numero 8, por la version que necesitas

nvm install 8

conocer la version de node o npm es el mismo comando, solo se cambia el nombre.

npm --version

Configurando PM2

PM2 es un manejador de procesos, utilizado para desplegar una aplicacion de Node.


npm install -g pm2

Para eliminar procesios de la interfaz de pm2, cambiar name por el nombre

pm2 delete name

Si se quieren eliminar todos

pm2 delete all

si quieres ver los logs

pm2 logs

si quieres borrar los logs

pm2 flush

Para correr el front

pm2 start npm --name "front" -- start

  1. Clonamos nuestro proyecto

Podemos crear una carpeta llamada 'api' o 'back' y dentro de esta es donde vamos a clonar nuestro repositorio. Lo mismo podemos hacer para el front, podemos crear una carpeta puede ser llamada 'front'. Ejmplo:

mkdir back

para entrar a la carpeta

cd back

luego vamos a la plataforma donde tenemos el proyecto buscamos la version a usar, quiza sea la rama master y copiamos la url

git clone URL_DEL_REPO

para salir de la carpeta back

cd ..

  1. Creamos el archivo .env Cada proyecto deberia tener un .env, para crear el archivo env
toch .env

para editar el archivo, hacemos uso del edito nano. Para asi pegar las variables de entorno y con la combinacion de teclas crtl + o procedemos a guardar.

nano .env

  1. Ejecutar Proyecto de Nest Js en Produccion si usamos Pm2, la cosa se pone diferente, pero dentro del archivo package.json esta el siguiente comando, pero para que s e mantenga corriendo debemos usar pm2, asi que ese comando quedaria invalido de esta forma.
"start:prod": "node dist/main"

Una vez aclarado lo anterior, procedemos a instalar Nest JS

npm i -g @nestjs/cli

nos dirijimos a nuestro poyecto e instalamos todas las dependecias. Debemos ubicarnos en el forlder donde esta el package.json

npm install

Para crear la carpeta dist, debemos ejecutar el comando.

nest build

Debemos crear el dist para cada microservicio, seguidamente de buld, pondremos el nombre del microservicio, ejemplo que el microservicio se llame users

nest build users

si tenemos varios microservicios, debemos ejecutar el siguiente comando con su respectivo nombre, tantas veces como microservicios se vayan a correr.

pm2 start dist/src/main.js --name <application_name>

Nota: si usas microservicios el comando anterior seguramente no te va funcionar, porque el archivo main no se encuentra en esa ruta, se encuentra en esta ruta dist/apps/gateway/main.js entonces el comando cambiaria por esto

pm2 start dist/apps/gateway/main.js --name <application_name>

Para que la aplicacion corra despues de Reiniciar el sistem hay que ejecutar estos comandos. Otra cosa curiosa es que en Digital Ocean tambien hay un boton para apagar y prender el Droplet

pm2 startup systemd
pm2 save

Para saber si todo esta corriendo bien podemos mirar los logs, con el siguiente comando

pm2 logs

Para listar lo que esta corriendo con pm2

pm2 list

Podemos parar y arrancar los procesos que se estan ejecutando con el id. Ejemplo: vamos a parar y volver arrarcar un proceso con id:0

pm2 stop 0
pm2 start 0

Deployando el Front

nos dirigimos a la carpeta dode tenemos clonado el repositorio del proyecto. y creamos la carpeta dist con el siguiente comando

npm run build
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment