
# Instalación de sistema.
Instalación del 'Sistema de GRP' by dBlocks.io
## Dependencias del sistema
- [MariaDB (Base de datos)](https://mariadb.org/documentation/)
- [NVM (Administrador de versiones de Node)](https://github.com/nvm-sh/nvm)
- [Nodejs (Entorno de ejecución de JavaScript)](https://bulldogjob.com/news/449-how-to-write-a-good-readme-for-your-github-project)
- [Angular (Framework de desarrollo)](https://angular.io/docs)
- [Nestjs (Framework server-side)](https://docs.nestjs.com)
- [HttpServer (Servidor HTTP)](https://www.npmjs.com/package/http-server)
## Instalación
### Instalando las dependencias del sistema en el servidor.
Comenzamos por actualizar las dependencias del Sistema Operativo del servidor mediante los siguientes comandos:
```bash=
sudo apt-get update
sudo apt-get upgrade
```
#### Instalando MariaDB
Para instalar la base de datos usaremos uso de los comandos de la [documentación oficial](https://mariadb.org/download/?t=repo-config&d=Debian+11+"Bullseye"&v=10.5&r_m=gigenet).
```bash=
sudo apt install mariadb-server
sudo mysql_secure_installation
```
El último comando se utiliza para asegurar su implementación estableciendo una
contraseña de root (*Es importante saber, que la contraseña debe ser la misma que la que se encuentra en el archivo dataSource.js en la carpeta de distribucion del back ../grp/back/dist/ para que pueda acceder posteriormente el back* ), tambien deshabilitamos el inicio de sesión de root remoto, eliminando la base de datos de prueba, así como los usuarios anónimos y finalmente recargando los privilegios. Quedando de la siguiente manera:
- `Enter current password for root (enter for none): //Aqui esablecemos la contraseña`
- `Change the root password? [Y/n]: n `
- `Remove anonymous users? [Y/n]: y`
- `Disallow root login remotely? [Y/n]: y`
- `Remove test database and access to it? [Y/n]: y`
- `Reload privilege tables now? [Y/n] y`
#### Instalación de NVM
Para instalar nvm, se puede usar el siguiente comando cURL o Wget. En caso de no tener instalado curl por defecto tendremos que ejecutar el comando `sudo apt install curl`
```bash=
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.2/install.sh | bash
```
o bien.
```bash=
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.2/install.sh | bash
```
Una vez instalado, es necesario reiniciar la terminal o ejecutar los siguentes comandos para configurar y usar sin reiniciar.
```bash=
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
```
#### Instalación de Nodejs
Para descargar, compilar e instalar la última versión de node, usaremos nvm anteriormente ya instalado, mediante el siguiente comando:
```bash=
nvm install node --lts
```
"`node`" con la bandera `--lts`es una manera de decir que se instale la última versión de node estable con largo tiempo de soporte la cual en el caso del servidor fue la `lts`.
#### Instalación de Angular
Para la instalación de Angular/Cli usamos el comando de su documentción oficial el cual es:
```bash=
npm install -g @angular/cli
```
#### Instalación de NestJS
Para descargar e instalar NestJS se ejecuta el siguiente comando:
```bash=
npm i -g @nestjs/cli
```
#### Instalación de HttpServer
Para descargar e instalar el servidor `http` se ejecuta el siguiente comando:
```bash=
npm install -g http-server
```
---
### Despliegue del Sistema
#### Despliegue base de datos
Para la instalación de la base de datos primero creamos una base de datos con el nombre de `GRP_BD` o en sus defecto con el nombre de la base que se requiera, *(es importante que el nombre de la base sea el mismo que se encuentra en el dataSource.js de la carpeta de dist del back)*.
Accedemos a mariadb con `sudo mariadb -u root -p` y escribiendo el query `CREATE DATABASE GRP_BD;`.
Una vez creada la base de datos podemos verificar que se ha creado correctamente con el query `SHOW DATABASES;` veriamos algo como lo siguiente:

Confirmando la creación de la base de datos y que se tiene el script de creación de ésta en el servidor, salimos de entorno de Mariadb tecleando el comando `exit;` o con la combinación de teclas `ctrl+c` volviendo al entorno de Debian para despues ejecutar el siguente comando para correr el script de creación de la BD. Teniendo en cuenta que necesitamos estar en el directorio donde esté el script.
```bash=
sudo mariadb -u root -p GRP_BD < dump-GRP_BD.sql
```
Nos pedira escribir la contraseña configurada para mariadb.
#### Despliegue del Backend
Para la instalación de los servicios backend necesitamos los archivos de distribución de la api. Teniendo en cuenta que nos encontramos en el directorio de los archivos de despliegue (../grp/back/), ejecutar el siguiente comando:
```bash=
node dist/main
```
#### Despliegue del Frontend
Para la instalación de los archivos de distribución de la interfaz de usuario. Teniendo en cuenta que nos encontramos en el directorio de los archivos de despliegue (../grp/front/ ), ejecutar el siguiente comando:
```bash=
http-server dist/grp-extreme
```
#### Notas extras
Se recomienda mandar los procesos de del back y el front a segundo plano para tener libre uso de la terminal y de igual manera hacer uso de la librería [pm2](https://pm2.keymetrics.io/docs/usage/quick-start/) para que los servicios se levanten automáticamente cada que se reinicie el servidor, se deja como sugerencia debido a que se configura a criterio del administrador del servidor.
---
## Feedback
Contacta a un desarrollador:
- cesarg_00@outlook.com
- r.garduno0509@gmail.com
## Autores
- Ricardo Garduño Rojas
- Cesar Garza Ceja