Executando verificação de segurança...
1
guke
1 min de leitura ·

[Dúvida] COMO SUBIR UMA API NODEJS PARA UM SERVIDOR?

OLAS PESSOAS,
Para alguns minha dúvida pode parecer besta ou tola, mas eu sou iniciante então peguem leve.
Meu chefe pediu para fazer uma api em nodejs e disponibilzou um servidor linux porém eu preciso fazer toda instalação de node e etc o ambiente, eu ja fiz e testei a api na minha maquina o localhost, agora como faço para passar da minha maquina para o servidor, tentei ver uns videos porém tdos são fazendo deploy para um serviço em nuvem digitalocean, aws, etc, no caso eles sobem o projeto para o git sincroniza com a plataforma e pronto deploy feito. A maioria dos cursos tbm só fazem o deploy para serviços em nuvem, queria saber como coloco em um servidor interno, Alguém pode me ajudar com isso??
o linux é o ubuntu 20.04.
e acesso via ssh.

Carregando publicação patrocinada...
1

Tem várias formas de fazer isso. Eu faria assim:

1 - Instalar o NodeJS
2 - Instalar o PM2 para manter a API ativa e fornecer dados de status
3 - Enviar e inicializar a API.

Com isso, já dá um caminho para você pesquisar na internet.
Se precisar de um passo-a-passo mais direto, me procure em billrocha.com

1

Existem diversas formas de fazer o deploy, desde a mais manual até completamente automática.

No caso você tem um servidor Ubuntu e acesso a máquina via ssh.

Pense nas seguintes tarefas:

Configurar o ambiente

O ambiente do servidor deve se assemelhar ao ambiente de desenvolvimento, mesmas versões do node e demais ferramentas utilizadas.

Desta forma você evita o famoso "mas na minha máquina funciona".

Para isso, nada mais "lindo" do que um container Docker e (opcionalmente) um docker-composer para comandar diversos containers.

Isso (docker) é opcional, mas se você quer amadurecer essa infraestrutura, pense nisso.

Entregar o codigo ao servidor

Você precisa de alguma forma chegar com o codigo no servidor, e ter uma forma de fazer isso sempre que lançar uma nov versão.

Existem algumas formas usuais:

  • Clona o repositorio git no servidor (use uma chave ssh exclusiva com permissão apenas para pull)
  • Sobe os arquivos via scp (um ftp via ssh)
  • Faz o download via curl ou wget do teu repositorio de algum canto da internet.

Para auxiliar nesse processo, você pode ter scripts bash que façam esse trabalho braçal, e ao lançar uma nova versão voce só rode ./release.sh por exemplo.

Também pode usar um webhook do github para chamar um endpoint da sua api responsável por chamar o script de release (um CI simplificado) Nota: sempre proteja esse endpoint com uma chave secreta.

Monitorar o funcionamento da API

Existem ferramentas para forçar sua API a inicializar automaticamente, e reiniciar em caso de falhas. Por exemplo o PM2.

Quando você está em produção, é muito importante gerar LOGs de todos os eventos relevantes, e se possível ter uma ferramenta para monitorar esses logs, e eventualmente lhe alertar de alguns eventos chave (por exemplo quando o servidor for reiniciado por causa de uma falha)

1

Como já foi dito, você pode usar o PM2 pra isso. Pode instalar ele globalmente no servidor com o gerenciador de pacotes que preferir, abaixo tem um guia oficial:

https://pm2.io/docs/runtime/guide/installation/

No package.json do seu projeto, você pode criar um script pra subir o servidor pelo pm2, por exemplo:

"scripts": { "start": "pm2 start src/index.js" },

depois basta rodar o script acima usando o seu gerenciador de pacotes na raíz do projeto, por exemplo "yarn run start", "npm start" etc.

O PM2 vai te mostrar umas informações do servidor rodando. Sempre que você acessar esse servidor pode usar alguns comandos pra verificar e interagir com a sua aplicação, por exemplo:

"pm2 list" vai listar a lista de projetos e o estado deles.

"pm2 logs" te mostra os logs, o output da aplicação, então se tiver algum console.log nela por exemplo, será impresso aí. Você pode dar um "pm2 logs --lines 200" por exemplo pra imprimir as últimas 200 linhas do output.

"pm2 start", "pm2 restart", "pm2 stop", pra mudar o status da aplicação. Você precisa informar o "id" da aplicação (que aparece no "pm2 list") pra poder interagir, por exemplo "pm2 start 2" irá iniciar a aplicação 2 e por aí vai. Você também pode interagir com todos usando a flag all, por exemplo "pm2 stop all" para parar todas as aplicações.

Depois que estiver tudo certo, pode usar um "pm2 save" pro PM2 salvar as suas preferências e guardar as suas aplicações pra subirem junto com o servidor caso ele seja reiniciado, tenha falta de energia etc. Assim você não precisa subir todos depois se alguma dessas situações ocorrerem.

"pm2 flush" limpa o output/console.

E por aí vai... É um gerenciador muito útil o PM2, dê uma pesquisada a respeito porque ele é leve, prático e tem bastante função.

Não se esqueça de sempre copiar o projeto sem a pasta node_modules pro servidor caso você for copiar "na mão", e instalar as dependências (npm install, por exemplo) localmente no servidor, porque as dependências variam do ambiente em que são instaladas.

Recomendo também instalar o "nvm" no servidor pra você poder lidar mais facilmente com versões diferentes do Node.js