- NodeJS v16.20.2
- Express 4.18.2 para el API
- NPM 8.19.4
- MySQL 5.7.xx
- Client Redis 4.6.7
- Client Mongoose 7.4.1 (MongoDB Server 6.x)
- Swagger para la documentación
- Docker version 26.1.1
- Docker Compose version v2.27.0-desktop.2
Entramos a la consola de MySQL
mysql -u root -p
Creamos la base de datos paraguay
CREATE DATABASE paraguay CHARACTER SET utf8 COLLATE utf8_general_ci;
GRANT ALL PRIVILEGES ON paraguay.* TO api_geo@'localhost' IDENTIFIED BY 'xxxxxx';
FLUSH PRIVILEGES;
exit
Importamos la base de datos paraguay
tar xzvf db/paraguay.sql.tar.gz
mysql -u root -p paraguay < paraguay.sql
cp .env.example .env
Cambiar las variables del .env
APP_PORT=3000
URL_DOMAIN="https://api-geo.proyectosbeta.net"
# DataBase MySQL.
DB_HOST="database"
DB_NAME=paraguay
DB_USER="api-geo"
DB_PASSWORD="123456"
DB_ROOT_PASSWORD="password"
# MongoDB
MONGO_URI="mongodb://mongodb:27017"
REDIS_HOST="cache"
REDIS_PORT=6379
npm install
npm start
Check if the formatting matches this Prettier’s rules by using:
npm run format:check
Force the formatting by using this command:
npm run format:write
Lint your code with:
npm run lint:check
Auto-fixing errors with this command:
npm run lint:fix
docker pull sonarqube
docker run -d --name sonarqube -p 9000:9000 -p 9092:9092 sonarqube
http://localhost:9000
- User: admin
- Password: admin
docker pull newtmitch/sonar-scanner
Ejecutar
docker run -ti -v /home/proyectosbeta/repositoriosGit/api-geo-paraguay:/usr/src --link sonarqube newtmitch/sonar-scanner
Ejecutar
docker run -ti -v C:\Users\proyectosbeta\repositoriosGit\api-paraguayos:/usr/src --link sonarqube newtmitch/sonar-scanner
npm run build
Pm2 es una herramienta para ambientes de producción de aplicaciones de Node.JS, básicamente esta herramienta nos sirve para levantar nuestra aplicación como un servicio demonio en nuestro servidor.
npm install pm2 -g
Debemos crear un demonio con PM2 así que paramos el servidor y ejecutamos el siguiente comando:
pm2 start /home/proyectosbeta/repositoriosGit/api-geo-paraguay/dist/bundle.js --name api-geo-paraguay
Necesitamos configurar el script de startup del servidor.
pm2 startup
sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u proyectosbeta --hp /home/proyectosbeta
server {
server_name api-geo.proyectosbeta.net www.api-geo.proyectosbeta.net;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
expires 7d;
add_header Cache-Control "public, max-age=604800";
access_log off;
}
listen 443 ssl http2; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/api-geo.proyectosbeta.net/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/api-geo.proyectosbeta.net/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
server {
if ($host = www.api-geo.proyectosbeta.net) {
return 301 https://$host$request_uri;
} # managed by Certbot
if ($host = api-geo.proyectosbeta.net) {
return 301 https://$host$request_uri;
} # managed by Certbot
listen 80;
server_name api-geo.proyectosbeta.net www.api-geo.proyectosbeta.net;
return 404; # managed by Certbot
}
- https://api-geo.proyectosbeta.net/api/v1/paraguay/-59.517228974/-23.8302210107
- https://api-geo.proyectosbeta.net/api/v1/departamentos/-56.987/-25.564
- https://api-geo.proyectosbeta.net/api/v1/departamentos
- https://api-geo.proyectosbeta.net/api/v1/departamentos/14
- https://api-geo.proyectosbeta.net/api/v1/distritos
- https://api-geo.proyectosbeta.net/api/v1/distritos/Luque
- https://api-geo.proyectosbeta.net/api/v1/ciudades
- https://api-geo.proyectosbeta.net/api/v1/ciudades/Aregua
- https://api-geo.proyectosbeta.net/api/v1/barrios
- https://api-geo.proyectosbeta.net/api/v1/barrios/Jara