Implantação de aplicação Go em VPS: guia passo a passo

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 fazer deploy de uma aplicação Go em VPS é simples e eficiente

Go (Golang) é conhecido por seu desempenho e simplicidade. Uma das principais vantagens da linguagem é a compilação em um único binário estático, que não requer a instalação de runtimes adicionais no servidor. Isso torna o deploy de uma aplicação Go em VPS incrivelmente rápido e confiável. Neste artigo, vamos analisar o ciclo completo de implantação: desde a preparação do servidor até a configuração de reverse proxy e HTTPS. Você receberá um checklist pronto que pode ser usado para qualquer projeto Go.



1. Preparação do VPS e instalação do software necessário

Antes de enviar o código, é preciso preparar o servidor. Pressupõe-se que você tenha um VPS com Ubuntu 22.04 ou 24.04. Conecte-se via SSH e execute a atualização do sistema.

sudo apt update && sudo apt upgrade -y

Instalação do Go no servidor

Embora o Go compile para um binário, o compilador pode ser necessário no servidor para a build. Vamos instalar a versão mais recente:

wget https://go.dev/dl/go1.22.5.linux-amd64.tar.gzsudo tar -C /usr/local -xzf go1.22.5.linux-amd64.tar.gzexport PATH=$PATH:/usr/local/go/binecho 'export PATH=$PATH:/usr/local/go/bin' >> ~/.profile

Verifique a instalação: go version.



Instalação do Git e Nginx

O Git será necessário para clonar o repositório, e o Nginx para o reverse proxy e arquivos estáticos.

sudo apt install git nginx -y


2. Build e execução da aplicação Go

Vamos analisar o processo usando um exemplo simples de servidor HTTP. Crie o arquivo main.go:

package main

import (\t"fmt"\t"net/http")

func handler(w http.ResponseWriter, r *http.Request) {\tfmt.Fprintf(w, "Hello from Go on VPS!")}

func main() {\thttp.HandleFunc("/", handler)\tfmt.Println("Server started on :8080")\thttp.ListenAndServe(":8080", nil)}

Compile o binário para Linux (mesmo que você esteja no Windows/Mac):

GOOS=linux GOARCH=amd64 go build -o myapp main.go

Agora, envie o binário para o servidor. Use SCP ou Rsync:

scp myapp user@your-server-ip:~/

No servidor, torne o arquivo executável e execute:

chmod +x ~/myapp./myapp &

Verifique o funcionamento: curl http://localhost:8080. Se você vir "Hello from Go on VPS!" — está tudo funcionando.



3. Configuração do systemd para inicialização automática

A execução manual não é uma boa prática. Vamos usar o systemd para que a aplicação inicie na inicialização do sistema e seja reiniciada em caso de falhas.

Crie o arquivo de serviço:

sudo nano /etc/systemd/system/myapp.service

Insira a configuração:

[Unit]Description=Go Application ServiceAfter=network.target

[Service]Type=simpleUser=www-dataWorkingDirectory=/home/userExecStart=/home/user/myappRestart=alwaysRestartSec=5

[Install]WantedBy=multi-user.target

Substitua /home/user pelo seu caminho. Ative e inicie o serviço:

sudo systemctl daemon-reloadsudo systemctl enable myappsudo systemctl start myappsudo systemctl status myapp

Agora sua aplicação Go funcionará como um daemon.



4. Configuração do Nginx como reverse proxy e HTTPS

Para que a aplicação fique acessível pelo domínio e pela porta 443, vamos configurar o Nginx.

Configuração do reverse proxy

Remova a configuração padrão e crie a sua:

sudo rm /etc/nginx/sites-enabled/defaultsudo nano /etc/nginx/sites-available/myapp

Adicione:

server {    listen 80;    server_name yourdomain.com www.yourdomain.com;

location / { proxy_pass http://127.0.0.1:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_h

Blogs

Book Recommendations