> npm run dev
localhost:8090/
localhost:8090/login
localhost:8090/dashboard
All variables located in env.example
PORT=8090 # work port
IS_PROD=0 # 1 - prod, 0 - dev
PUBLIC_DOMAIN_LOCAL=localhost # dev domain
PUBLIC_DOMAIN_PROD=klimstepan.ca # prod domain
local
DB_LOCAL_USER=postgres
DB_LOCAL_PASSWORD=1234567890
DB_LOCAL_HOST=localhost
DB_LOCAL_PORT=5432
DB_LOCAL_DBNAME=klim
prod
DB_PROD_USER=
DB_PROD_PASSWORD=
DB_PROD_HOST=localhost
DB_PROD_PORT=5432
DB_PROD_DBNAME=
doc for api
sudo apt-get update
curl -L https://raw.githubusercontent.com/tj/n/master/bin/n -o n bash n lts npm install -g n
// install https://pm2.keymetrics.io/docs/usage/pm2-doc-single-page/
npm install pm2@latest -g pm2 start index.js pm2 list pm2 stop 0 // id of process pm2 start klimsite/klim-backend/index.js
// nginx config - see Cribs.md configs placed in ./config folder
sudo apt install nginx sudo nginx -t
// link project with nginx
sudo nano /etc/nginx/sites-available/default
sudo nano /etc/nginx/nginx.conf
http {
}
need to change sole lint based on your cloud provider follow # CHANGE_HERE
# Redirect HTTP to HTTPS
server {
listen 80;
server_name klimstepan.com www.klimstepan.com;
# Redirect all HTTP requests to HTTPS
location / {
return 301 https://$host$request_uri;
}
}
server {
listen 80;
# server_name 139.59.212.85;
server_name klimstepan.com www.klimstepan.com;
access_log /var/log/nginx/klimstepan.com.access.log;
error_log /var/log/nginx/klimstepan.com.error.log;
set $frontend_root /home/root/klimsite/klim-frontend/dist;
set $backend_proxy http://localhost:8090;
location / {
root $frontend_root;
try_files $uri /index.html;
}
location /api {
client_max_body_size 50m;
proxy_redirect off;
proxy_pass $backend_proxy;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header Authorization $http_authorization;
}
location /public/uploads {
#root /home/root/klimsite/klim-backend/public/uploads;
proxy_pass $backend_proxy/public/uploads;
}
}
# need to create cert before put in config
server {
listen 443 ssl;
http2 on;
server_name klimstepan.com www.klimstepan.com;
# SSL configuration...
ssl_certificate /etc/letsencrypt/live/klimstepan.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/klimstepan.com/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 1d;
set $frontend_root /home/root/klimsite/klim-frontend/dist;
set $backend_proxy http://localhost:8090;
# route handlers
location / {
root $frontend_root;
try_files $uri /index.html;
}
location /api {
client_max_body_size 50m;
proxy_redirect off;
proxy_pass $backend_proxy;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $http_host;
proxy_set_header Authorization $http_authorization;
}
location /public/uploads {
proxy_pass $backend_proxy/public/uploads;
}
}
check status
sudo nginx -t service nginx status
sudo service nginx restart
server {
listen 80;
# server_name 139.59.212.85;
server_name klimstepan.com www.klimstepan.com;
access_log /var/log/nginx/klimstepan.com.access.log;
error_log /var/log/nginx/klimstepan.com.error.log;
set $frontend_root /home/root/klimsite/klim-frontend/dist;
set $backend_proxy http://localhost:8090;
location / {
root $frontend_root;
try_files $uri /index.html;
}
location /api {
client_max_body_size 50m;
proxy_redirect off;
proxy_pass $backend_proxy;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header Authorization $http_authorization;
}
location /public/uploads {
#root /home/root/klimsite/klim-backend/public/uploads;
proxy_pass $backend_proxy/public/uploads;
}
}
sudo nano /etc/nginx/sites-available/default
server {
listen 80;
# server_name 139.59.212.85;
server_name klimstepan.com www.klimstepan.com;
access_log /var/log/nginx/klimstepan.com.access.log;
error_log /var/log/nginx/klimstepan.com.error.log;
set $frontend_root /home/root/klimsite/klim-frontend/dist;
set $backend_proxy http://localhost:8090;
location / {
root $frontend_root;
index index.html;
try_files $uri $uri/ /index.html;
}
location /api {
client_max_body_size 50m;
proxy_redirect off;
proxy_pass $backend_proxy;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header Authorization $http_authorization;
}
location /public/uploads {
#root /home/root/klimsite/klim-backend/public/uploads;
proxy_pass $backend_proxy/public/uploads;
}
}
sudo nginx -t && sudo systemctl restart nginx sudo nginx -t sudo systemctl restart nginx tail -f /var/log/nginx/klimstepan.com.error.log tail -f /var/log/nginx/klimstepan.com.access.log
Firewall Setup https://itnext.io/deploy-a-nodejs-and-expressjs-app-on-digital-ocean-with-nginx-and-free-ssl-edd88a5580fa
sudo ufw enable sudo ufw allow http sudo ufw allow https sudo ufw allow ssh
sudo apt install postgresql -y sudo su - postgres psql postgres=# CREATE ROLE ubuntu; postgres=# ALTER ROLE ubuntu WITH LOGIN; postgres=# ALTER USER ubuntu CREATEDB SUPERUSER; postgres=# ALTER USER ubuntu WITH PASSWORD 'password'; postgres=# \du postgres=# CREATE DATABASE klim; postgres=# \l postgres=# \c klim klim=# HERE_YOU_SHOULD_INSERT_TABEL_SCHEME
create TABLE users(...)
klim=# \d klim=# exit
postgres=# ALTER USER ubuntu with superuser;
psql=# grant all privileges on database klim to ubuntu;
psql=# alter user ubuntu with encrypted password '1234567890';
psql=# grant all privileges on database klim to ubuntu;
// create folders /public/uploads/klimstepan.com...
// set up .env
// pull git repo
when PC/Droplet/EC2/ComputerEngine has small memory
free -m sudo fallocate -l 2G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab free -m NODE_OPTIONS="--max-old-space-size=512" npm run build Закрий зайві процеси ps aux --sort=-%mem | head -10
nano klimsite/klim-backend/.env pm2 start klimsite/klim-backend/index.js sudo tail -f /var/log/nginx/klimstepan.com.error.log sudo tail -f /var/log/nginx/klimstepan.com.access.log nslookup klimstepan.com // check DNS IPs
-
- Add user_id column for each table
- swagger doc
- ESlint
- Prettier
- unit testin with Jest