Implantação de aplicação Go em VPS: guia passo a passo do início ao fim

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Introdução: Por que Go é ideal para VPS, e o que faremos



Go (Golang) é uma linguagem criada para aplicações servidoras escaláveis e de alto desempenho. A compilação em um único arquivo binário estático o torna um candidato ideal para implantação em VPS (Virtual Private Server). Você não precisa instalar interpretador ou dependências no servidor — basta copiar o arquivo e executá-lo.



Neste artigo, percorreremos o caminho completo: desde a escrita de um simples servidor HTTP em Go até sua execução em produção em uma VPS usando systemd para inicialização automática, Nginx como proxy reverso e Let's Encrypt para HTTPS.



Você aprenderá:

  • Compilar uma aplicação Go para Linux
  • Enviar o arquivo binário para a VPS via SSH
  • Configurar systemd para inicialização automática
  • Instalar e configurar Nginx
  • Obter um certificado SSL gratuito


Passo 1: Preparação da aplicação Go e compilação



Criando uma aplicação web simples



Como exemplo, escreveremos um servidor HTTP mínimo que responde "Hello, VPS!". Crie o arquivo main.go:



package main

import ( "fmt" "net/http")

func main() { http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "Hello, VPS!") })

fmt.Println("Server started on :8080") http.ListenAndServe(":8080", nil)}


Compilação para Linux



Se você desenvolve no Windows ou macOS, precisa compilar o binário para a arquitetura alvo da VPS (geralmente linux/amd64). Abra o terminal na pasta do projeto e execute:



set GOOS=linuxset GOARCH=amd64go build -o myapp


Para Linux/macOS, use export:



export GOOS=linuxexport GOARCH=amd64go build -o myapp


Como resultado, aparecerá o arquivo binário myapp. Verifique seu tamanho — será pequeno (cerca de 7-10 MB), pois Go compila tudo estaticamente.



Passo 2: Envio para VPS e configuração do systemd



Conexão ao servidor e envio do arquivo



Conecte-se à sua VPS via SSH:



ssh root@seu-ip-do-servidor


Crie um diretório para a aplicação:



mkdir -p /opt/myappcd /opt/myapp


Na máquina local, envie o binário via SCP (execute em um terminal separado):



scp myapp root@seu-ip-do-servidor:/opt/myapp/


Volte ao servidor e conceda permissão de execução:



chmod +x /opt/myapp/myapp


Criação do serviço systemd



Para que a aplicação inicie automaticamente na inicialização do sistema e seja reiniciada em caso de falhas, criaremos uma unit do systemd. Crie o arquivo:



nano /etc/systemd/system/myapp.service


Insira o seguinte conteúdo:



[Unit]Description=My Go ApplicationAfter=network.target

[Service]Type=simpleUser=www-dataGroup=www-dataWorkingDirectory=/opt/myappExecStart=/opt/myapp/myappRestart=on-failureRestartSec=5

[Install]WantedBy=multi-user.target


Explicação dos parâmetros:

  • User e Group — usuário sob o qual a aplicação será executada (recomenda-se não usar root).
  • Restart=on-failure — reinicialização automática em caso de falha.
  • RestartSec=5 — pausa antes da reinicialização.


Agora ativamos e iniciamos o serviço:



systemctl daemon-reloadsystemctl enable myappsystemctl start myappsystemctl status myapp


Se tudo estiver correto, você verá o status active (running). Verifique se a aplicação responde localmente:



curl http://localhost:8080


Passo 3: Configuração do Nginx como proxy reverso



Acesso direto à aplicação pela porta 8

Blogs

Book Recommendations