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

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 confiável

Go (Golang) é uma das linguagens mais eficientes para criar aplicações server-side. Sua principal vantagem é a compilação em um único binário estático, que não requer a instalação de interpretador ou máquina virtual no servidor. Isso torna o deploy de uma aplicação Go em VPS (Virtual Private Server) incrivelmente simples e rápido em comparação com Python, Node.js ou Java.

Neste artigo, vamos implantar uma aplicação Go em VPS passo a passo: desde a configuração inicial do servidor até a execução via systemd e publicação via Nginx com HTTPS. Você aprenderá como minimizar riscos e garantir a operação estável do seu serviço 24/7.



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

Antes de iniciar o deploy, certifique-se de ter acesso ao VPS (por exemplo, Ubuntu 22.04 LTS) via SSH. Usaremos um conjunto básico de ferramentas.



1.1. Configuração inicial do servidor

Conecte-se ao servidor e execute a atualização de pacotes:

ssh root@seu-ip-do-servidorapt update && apt upgrade -y

Crie um usuário separado para a aplicação (não trabalhe como root):

adduser deployerusermod -aG sudo deployersu - deployer


1.2. Instalação do Go (se precisar compilar no servidor)

Embora na maioria das vezes o binário seja compilado localmente, às vezes é conveniente compilar diretamente no VPS. Instale a versão mais recente do Go:

wget https://go.dev/dl/go1.22.2.linux-amd64.tar.gzsudo tar -C /usr/local -xzf go1.22.2.linux-amd64.tar.gzecho 'export PATH=$PATH:/usr/local/go/bin' >> ~/.bashrcsource ~/.bashrcgo version


1.3. Instalação do Git e Nginx

O Git será necessário para clonar o repositório, e o Nginx para proxy reverso e SSL:

sudo apt install git nginx -y


2. Compilação da aplicação Go e preparação para deploy

2.1. Exemplo de uma aplicação Go simples

Vamos criar um servidor HTTP mínimo em Go. Você pode usar seu próprio projeto, mas para demonstração este código serve (main.go):

package main

import ( "fmt" "net/http" "os")

func main() { port := os.Getenv("PORT") if port == "" { port = "8080" }

http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "Hello from Go! Server time: %s", time.Now().Format(time.RFC1123)) })

fmt.Printf("Server starting on port %s", port) http.ListenAndServe(":"+port, nil)}


2.2. Compilação do binário para Linux

Na sua máquina local (ou no servidor), compile o binário para a arquitetura alvo do VPS (geralmente amd64):

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

Verifique se o binário é estático e não requer bibliotecas:

ldd myapp  # Deve exibir "not a dynamic executable"


2.3. Upload para o servidor

Copie o binário para o VPS via SCP:

scp myapp deployer@seu-ip-do-servidor:/home/deployer/

No servidor, mova-o para um diretório adequado e conceda permissão de execução:

sudo mkdir -p /opt/myappsudo mv /home/deployer/myapp /opt/myapp/sudo chmod +x /opt/myapp/myapp


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

systemd é o gerenciador de serviços padrão no Linux. Ele permitirá que sua aplicação inicie na inicialização do sistema e reinicie automaticamente em caso de falhas.



3.1. Criação do arquivo unit

Crie o arquivo /etc/systemd/system/myapp.service:

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

Insira a seguinte configuração:

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

[Service]Type=simpleUser=deployerGroup=deployerWorkingDirectory=/opt/myappExecStart=/opt/myapp/myappRestart=alwaysRestartSec=5Environment=PORT=80

Blogs

Book Recommendations