Implantação de aplicação Java 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

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

\n\n

Desenvolver uma aplicação Java é apenas metade do trabalho. A segunda parte, igualmente importante, é sua implantação (deploy) em um servidor de produção. Neste guia, percorreremos o ciclo completo de implantação de uma aplicação Java (Spring Boot) em um Servidor Virtual Privado (VPS) com sistema operacional Ubuntu 22.04. Você aprenderá como configurar o servidor, compilar o projeto, executá-lo como um serviço do sistema e garantir acesso seguro através de um servidor web.

\n\n

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

\n\n

O primeiro passo é conectar-se ao seu VPS via SSH e instalar o Java Runtime Environment (JRE) e o Git.

\n\n

Conexão ao servidor

\n
ssh root@seu-ip-do-servidor
\n\n

Atualização de pacotes e instalação do Java (OpenJDK 17)

\n

Para o Spring Boot 3.x, recomenda-se Java 17. Vamos instalar o OpenJDK.

\n
apt update && apt upgrade -y\napt install openjdk-17-jdk git -y\njava -version
\n

Você deve ver as informações da versão do Java 17.

\n\n

Instalação do Nginx (para reverse proxy)

\n
apt install nginx -y\nsystemctl start nginx\nsystemctl enable nginx
\n\n

2. Compilação da aplicação Java (Maven/Gradle)

\n\n

Na sua máquina local (ou diretamente no servidor, se você clonar o repositório), é necessário compilar o arquivo JAR. Vamos considerar ambas as opções.

\n\n

Opção A: Compilação local e cópia para o servidor

\n

Suponha que você tenha um projeto Spring Boot com Maven.

\n
# Na máquina local\nmvn clean package -DskipTests\n# O arquivo aparecerá em target/my-app-0.0.1-SNAPSHOT.jar
\n

Em seguida, copie-o para o servidor via SCP:

\n
scp target/my-app-0.0.1-SNAPSHOT.jar root@seu-ip:/opt/myapp/
\n\n

Opção B: Compilação diretamente no servidor

\n

Clone o repositório e compile o projeto:

\n
cd /opt\ngit clone https://github.com/seu-usuario/seu-repositorio.git myapp\ncd myapp\n./mvnw clean package -DskipTests\n# Ou, se o Maven estiver instalado globalmente:\nmvn clean package -DskipTests
\n\n

3. Configuração da configuração de produção e criação do serviço systemd

\n\n

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

\n\n

Criação do script de inicialização

\n

Crie um diretório para a aplicação (se ainda não o fez):

\n
mkdir -p /opt/myapp\n# Mova o arquivo JAR para este diretório, se ainda não estiver lá
\n\n

Criação do serviço systemd

\n

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

\n
nano /etc/systemd/system/myapp.service
\n

Insira o seguinte conteúdo (substitua os caminhos e parâmetros conforme seu projeto):

\n
[Unit]\nDescription=My Java Spring Boot Application\nAfter=syslog.target network.target\n\n[Service]\nUser=root\nWorkingDirectory=/opt/myapp\nExecStart=/usr/bin/java -Xms256m -Xmx512m -jar /opt/myapp/my-app-0.0.1-SNAPSHOT.jar --server.port=8080\nSuccessExitStatus=143\nRestart=always\nRestartSec=10\n\n[Install]\nWantedBy=multi-user.target
\n

Explicação dos parâmetros:

\n
    \n
  • -Xms256m -Xmx512m — tamanho inicial e máximo da heap do Java.
  • \n
  • --server.port=8080 — porta na qual a aplicação será executada.
  • \n
  • Restart=always — reinicialização automática em caso de falha.
  • \n
\n\n

Inicialização e verificação do serviço

\n
systemctl daemon-reload\nsystemctl start myapp\nsystemctl status myapp\nsystemctl enable myapp  # Inicialização automática na inicialização
\n

Verifique se a aplicação responde localmente:

\n
curl http://localhost:8080/actuator/health
\n

Você deve receber uma resposta JSON com o status UP.

\n\n

4. Configuração do Reverse Proxy via Nginx

\n\n

O acesso direto à aplicação pela porta 8080 não é seguro. Vamos configurar o Nginx como servidor proxy, que receberá as requisições na

Blogs

Book Recommendations