Preparar servidor para deploy NodeJs
Wanderson Alves Rodrigues
Posted on September 6, 2020
Vou apresentar como criar um servidor Ubuntu com NGINx para fazer deploy de aplicações escritas usando a plataforma NodeJs.
REQUISITO:
- Ubuntu 18.04
1 - CRIAR USUÁRIO UBUNTU
Para começar vamos ter que criar um novo usuário chamado deploy.
Você pode fazer tudo com o usuário root porém não é recomendado.
adduser deploy
Depois de executar o comando acima para criar um novo usuário será requisitado uma senha, informe da sua preferência.
Agora temos que adicionar uma permissão sudo ao novo usuário, para isso execute o comando abaixo:
usermod -aG sudo deploy
2 - CONFIGURAR SSH
Caso você utilize ssh para acessar o servidor siga esse passo, entre no diretório /home/deploy:
cd /home/deploy
No diretório deploy crie uma pasta chamada .ssh, como segue no comando abaixo:
mkdir .ssh
Para mudar o dono da pasta .ssh, execute o comando:
chown deploy:deploy .ssh/
Agora temos que copiar o ssh do root para o nosso usuário execute os comando:
cp ~/.ssh/authorized_keys /home/deploy/.ssh/
Entre na pasta .ssh e execute o comando para mudar a permissão de authorozed_keys:
chown deploy:deploy authorized_keys
3 - INSTALAR O NODEJS
Como nosso servidor não possui nodejs instalado vamos fazer isso, para essa demostração vou usar a versão 12.x do node.
Primeiramente temos que adicionar o pacote na lista:
curl -sl https://deb.nodesource.com/setup_12.x | sudo -E bash -
Agora podemos executar o comando para instalar o node:
sudo apt-get install -y nodejs
Para verificar se a instalação foi bem bem sucedido, execute:
node -v
npm -v
4 - INSTALAR YARN
O yarn é um gerenciador de pacotes criado pelo Facebook, para mais detalhes acesse Yarn.
Para instalar o yarn no nosso servidor execute os comandos abaixo:
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add
echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
sudo apt update
sudo apt update && sudo apt install --no-install-recommends yarn
Para finalizar verifique a versão, se aparecer o número da versão significa instalação realizada com sucesso:
yarn -v
5 - ADICIONAR A APLICAÇÃO AO SERVIDOR
Para fins de teste eu criei uma API simples que recebe uma requisição get, vou usa-la para demostrar o deploy no servidor.
Dentro do diretório /home/deploy crie um nova pasta chamada app.
mkdir app
Vamos clonar a aplicação do Github dentro da pasta app.
git clone https://github.com/wandealves/deploy.git
6 - PROXY REVERSO DO NGINX
No servidor vamos usar o*NGINx* para requisições HTTP. Nginx (lê-se “engine x”) é um servidor leve de HTTP, proxy reverso, proxy de e-mail IMAP/POP3, feito por Igor Sysoev em 2005, sob licença BSD-like 2-clause.
Para mais detalhes acesse NGINx.
Instalar NGINx, para isso executa o comando:
sudo apt install nginx
Para acessar de fora do servidor temos que liberar a porta 80, para isso:
sudo ufw allow 80
Se você acessar o ip do servidor vai ver a tela de boas vinda do NGINx.
Vamos configurar o NGINx para acessar nossa aplicação que roda na porta 3333.
Para isso vamos ter que criar um proxy reverso, ao invés de acessar ip:3333 vamos usar ip:80, onde a porta 80 não precisa ser informada ,para isso siga os passos.
Entre no diretório /etc/nginx/sites-available/ com o comando:
cd /etc/nginx/sites-available/
Vamos fazer uma cópia do default para nossa nova configuração que vou chamar de nodedeploy.
sudo cp default nodedeploy
Agora temos que editar o arquivo nodedeploy e deixa-lo com segue abaixo:
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
location / {
proxy_pass http://localhost:3333;
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;
}
}
Agora acesse o diretório /etc/nginx/sites-enabled/.
cd /etc/nginx/sites-enabled/
Dentro do diretório sites-enabled temos que criar um link simbólico para nodedeploy que criamos no passo acima.
sudo ln -s /etc/nginx/sites-available/nodedeploy nodedeploy
No esqueça de deletar o arquivo default do diretório sites-enabled.
sudo rm default
Para saber se nossa configuração funcionou execute:
sudo nginx -t
Se o resultado for igual o listado abaixo, as configurações estão corretas:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is succes
Para finalizar a configuração do NGINx vamos reinicia-lo:
sudo service nginx reload
sudo service nginx restart
7 - DEPLOY DA APLICAÇÃO
Se tentar acessar o ip do servidor vai receber uma mensagem de Bad Gateway, isso ocorre pois nossa aplicação encontra-se parada.
Acesse a pasta da aplicação em /home/deploy/app e vamos gerar o build da aplicação:
yarn
yarn build
node dist/server.js
Ao executar o comando node a aplicação vai subir, agora se você acessar o ip do servidor vai ver o retorno da api.
Posted on September 6, 2020
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.