Implantação de aplicação Java em VPS: guia passo a passo do início ao fim
\n\nDesenvolver 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\n1. Preparação do VPS e instalação do software necessário
\n\nO primeiro passo é conectar-se ao seu VPS via SSH e instalar o Java Runtime Environment (JRE) e o Git.
\n\nConexão ao servidor
\nssh root@seu-ip-do-servidor\n\nAtualização de pacotes e instalação do Java (OpenJDK 17)
\nPara o Spring Boot 3.x, recomenda-se Java 17. Vamos instalar o OpenJDK.
\napt update && apt upgrade -y\napt install openjdk-17-jdk git -y\njava -version\nVocê deve ver as informações da versão do Java 17.
\n\nInstalação do Nginx (para reverse proxy)
\napt install nginx -y\nsystemctl start nginx\nsystemctl enable nginx\n\n2. Compilação da aplicação Java (Maven/Gradle)
\n\nNa 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\nOpção A: Compilação local e cópia para o servidor
\nSuponha 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\nEm seguida, copie-o para o servidor via SCP:
\nscp target/my-app-0.0.1-SNAPSHOT.jar root@seu-ip:/opt/myapp/\n\nOpção B: Compilação diretamente no servidor
\nClone o repositório e compile o projeto:
\ncd /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\n3. Configuração da configuração de produção e criação do serviço systemd
\n\nPara 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\nCriação do script de inicialização
\nCrie um diretório para a aplicação (se ainda não o fez):
\nmkdir -p /opt/myapp\n# Mova o arquivo JAR para este diretório, se ainda não estiver lá\n\nCriação do serviço systemd
\nCrie o arquivo /etc/systemd/system/myapp.service:
nano /etc/systemd/system/myapp.service\nInsira 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\nExplicaçã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
Inicialização e verificação do serviço
\nsystemctl daemon-reload\nsystemctl start myapp\nsystemctl status myapp\nsystemctl enable myapp # Inicialização automática na inicialização\nVerifique se a aplicação responde localmente:
\ncurl http://localhost:8080/actuator/health\nVocê deve receber uma resposta JSON com o status UP.
4. Configuração do Reverse Proxy via Nginx
\n\nO acesso direto à aplicação pela porta 8080 não é seguro. Vamos configurar o Nginx como servidor proxy, que receberá as requisições na