Implantação de aplicação Java 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 VPS é a escolha ideal para aplicações Java

Fazer deploy de uma aplicação Java em um servidor virtual privado (VPS) é o padrão ouro para desenvolvedores que desejam controle total sobre o ambiente de execução. Diferente da hospedagem compartilhada, o VPS fornece recursos dedicados (CPU, RAM, disco), permite configurar a Java Virtual Machine (JVM), instalar quaisquer bibliotecas e configurar o servidor para as necessidades específicas do projeto.

Neste artigo, abordaremos o ciclo completo de deploy: desde a preparação do VPS e instalação do JDK até a execução da aplicação em modo produção usando systemd. Todas as etapas são acompanhadas de exemplos de código e comandos para Linux (Ubuntu 22.04 LTS).

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

1.1. Conexão ao servidor

Após adquirir o VPS, você receberá um endereço IP e a senha root. Conecte-se via SSH:

ssh root@seu_IP_do_servidor

Recomenda-se criar imediatamente um usuário não privilegiado para o trabalho diário:

adduser deployer
usermod -aG sudo deployer

1.2. Instalação do Java (JDK 17 LTS)

Para aplicações Java modernas, o OpenJDK 17 é a melhor escolha. Execute:

sudo apt update
sudo apt install openjdk-17-jdk -y

Verifique a instalação:

java -version
# Saída: openjdk version "17.0.10" 2024-01-16 LTS

1.3. Instalação do Git e Maven/Gradle

Para compilar o projeto a partir do repositório:

sudo apt install git maven -y
# Ou para Gradle:
# sudo apt install gradle -y

2. Compilação e preparação da aplicação

2.1. Clonagem do repositório

Suponha que sua aplicação Spring Boot esteja no GitHub:

cd /opt
sudo git clone https://github.com/sua_conta/my-java-app.git
cd my-java-app

2.2. Compilação do arquivo JAR

Para Maven:

mvn clean package -DskipTests

Como resultado, o arquivo my-app-0.0.1-SNAPSHOT.jar aparecerá em target/. Verifique se ele executa:

java -jar target/my-app-0.0.1-SNAPSHOT.jar --server.port=8080

Teste o funcionamento: abra no navegador http://seu_IP:8080.

2.3. Otimização do JAR para produção

Adicione parâmetros de produção no application.properties:

server.port=8080
spring.datasource.url=jdbc:postgresql://localhost:5432/mydb
spring.datasource.username=app_user
spring.datasource.password=secure_password
spring.jpa.hibernate.ddl-auto=validate

Nunca armazene senhas reais no código — use variáveis de ambiente ou Vault.

3. Configuração do banco de dados e ambiente

3.1. Instalação do PostgreSQL

sudo apt install postgresql postgresql-contrib -y
sudo systemctl start postgresql
sudo systemctl enable postgresql

Crie o banco e o usuário:

sudo -u postgres psql
CREATE DATABASE mydb;
CREATE USER app_user WITH PASSWORD 'secure_password';
GRANT ALL PRIVILEGES ON DATABASE mydb TO app_user;
\q

3.2. Configuração das variáveis de ambiente

Crie o arquivo /etc/environment.d/java-app.conf:

DB_URL=jdbc:postgresql://localhost:5432/mydb
DB_USER=app_user
DB_PASSWORD=secure_password
JAVA_OPTS="-Xms256m -Xmx512m"

Recarregue o ambiente:

source /etc/environment.d/java-app.conf

4. Execução da aplicação como serviço systemd

4.1. Criação do arquivo unit

Crie o arquivo /etc/systemd/system/java-app.service:

[Unit]
Description=Java Spring Boot Application
After=network.target postgresql.service

[Service]
User=deployer
WorkingDirectory=/opt/my-java-app
ExecStart=/usr/bin/java $JAVA_OPTS -jar /opt/my-java-app/target/my-app-0.0.1-SNAPSHOT.jar
SuccessExitStatus=143
Restart=always
Rest                

Blogs

Book Recommendations