Implantação de aplicação Kotlin em VPS: guia passo a passo
Desenvolver em Kotlin é apenas metade do trabalho. Para que sua aplicação se torne acessível aos usuários, é necessário implantá-la em um servidor. Neste guia, abordaremos detalhadamente o processo de implantação de uma aplicação Kotlin (JVM) em uma VPS (Virtual Private Server). Você aprenderá como preparar o servidor, compilar a aplicação, configurar a inicialização automática e garantir uma conexão HTTPS segura. O artigo é voltado para desenvolvedores familiarizados com os fundamentos de Kotlin e Linux.
1. Preparação do servidor e ambiente
Antes de carregar o código, é necessário preparar a VPS. Usaremos Ubuntu 22.04 LTS. Conecte-se ao servidor via SSH:
ssh root@seu-ip-do-servidorAtualize os pacotes e instale os componentes necessários:
sudo apt update && sudo apt upgrade -ysudo apt install openjdk-17-jdk git nginx certbot python3-certbot-nginx -yVerifique a versão do Java:
java -versionAgora vamos criar um usuário para a aplicação (executar processos como root não é seguro):
sudo useradd -m -s /bin/bash kotlinappsudo usermod -aG sudo kotlinappsu - kotlinappCertifique-se de que o usuário pode executar Java.
2. Compilação e upload da aplicação Kotlin
Vamos considerar dois frameworks populares: Ktor e Spring Boot. Ambos são compilados em um arquivo JAR executável. Exemplo para Ktor:
// build.gradle.kts (fragmento)plugins { kotlin("jvm") version "1.9.22" application id("io.ktor.plugin") version "2.3.7"}
application { mainClass.set("com.example.ApplicationKt")}
ktor { fatJar { archiveFileName.set("myapp.jar") }}Compile o fat JAR localmente:
./gradlew buildFatJarFaça upload do JAR para o servidor via SCP (execute na máquina local):
scp build/libs/myapp.jar kotlinapp@seu-ip:/home/kotlinapp/app/No servidor, crie a estrutura:
mkdir -p /home/kotlinapp/app/logs3. Configuração do systemd para inicialização automática
Para que a aplicação inicie automaticamente na inicialização do servidor e seja reiniciada em caso de falhas, criaremos um serviço systemd. Crie o arquivo /etc/systemd/system/kotlinapp.service:
sudo nano /etc/systemd/system/kotlinapp.serviceInsira a seguinte configuração:
[Unit]Description=Kotlin Application ServiceAfter=network.target
[Service]User=kotlinappGroup=kotlinappWorkingDirectory=/home/kotlinapp/appExecStart=/usr/bin/java -jar myapp.jarRestart=alwaysRestartSec=10StandardOutput=append:/home/kotlinapp/app/logs/out.logStandardError=append:/home/kotlinapp/app/logs/err.logEnvironment="PORT=8080"
[Install]WantedBy=multi-user.targetAtive e inicie o serviço:
sudo systemctl daemon-reloadsudo systemctl enable kotlinappsudo systemctl start kotlinappVerifique o status:
sudo systemctl status kotlinappOs logs podem ser visualizados com o comando:
journalctl -u kotlinapp -f4. Configuração do Nginx e HTTPS (SSL)
O servidor proxy Nginx redirecionará as requisições da porta 80/443 para a porta 8080 da sua aplicação Kotlin. Crie a configuração:
sudo nano /etc/nginx/sites-available/kotlinappExemplo de configuração:
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_header X-Forwarded-Proto $scheme; }}Ative o site e obtenha o certificado SSL:
sudo ln -s /etc/ngin