Introdução: Por que a implantação de aplicações Kotlin requer uma abordagem especial
\nDesenvolver em Kotlin é apenas metade do sucesso. A outra metade é a implantação (deploy) adequada da sua aplicação em um servidor remoto. Sem esta etapa, seu código permanecerá apenas um projeto local, inacessível aos usuários.
\nNeste guia, abordaremos o ciclo completo de implantação de uma aplicação Kotlin em VPS (Virtual Private Server). Você aprenderá como compilar o projeto em um arquivo JAR executável, configurar o ambiente do servidor, iniciar a aplicação como um serviço e garantir seu funcionamento estável. O artigo é voltado para desenvolvedores que já possuem conhecimentos básicos de Kotlin e Linux.
\n\n1. Preparação do projeto e compilação do arquivo JAR
\nAntes de enviar o código para o servidor, é necessário compilar a aplicação em um único artefato. Para projetos Kotlin escritos com Spring Boot ou Ktor, o formato padrão é o arquivo JAR (Java Archive).
\n\n1.1. Configuração do build.gradle.kts
\nCertifique-se de que seu arquivo build.gradle.kts contenha o plugin para compilar o JAR executável. Para Spring Boot, fica assim:
plugins {\n kotlin("jvm") version "1.9.22"\n id("org.springframework.boot") version "3.2.2"\n id("io.spring.dependency-management") version "1.1.4"\n}\n\ndependencies {\n implementation("org.springframework.boot:spring-boot-starter-web")\n implementation("com.fasterxml.jackson.module:jackson-module-kotlin")\n}\n\nPara Ktor puro (sem Spring), use o plugin application:
plugins {\n kotlin("jvm") version "1.9.22"\n application\n}\n\napplication {\n mainClass.set("com.example.ApplicationKt")\n}\n\n\n1.2. Compilação do projeto
\nExecute o comando de compilação na pasta raiz do projeto:
\n./gradlew clean build\nApós a compilação bem-sucedida, no diretório build/libs/ aparecerá o arquivo app-0.0.1-SNAPSHOT.jar (o nome depende da configuração). Copie-o para o seu computador local.
src/main/resources/application.conf esteja configurada a porta correta (geralmente 8080) e o modo de operação.2. Configuração do servidor VPS
\nPara a implantação, precisaremos de um VPS com o sistema operacional Ubuntu 22.04 LTS instalado. Presume-se que você tenha acesso via SSH e privilégios de superusuário (sudo).
\n\n2.1. Instalação do Java (JRE)
\nKotlin é compilado para bytecode JVM, portanto, o servidor deve ter o Java Runtime Environment (JRE) versão 17 ou superior instalado:
\nsudo apt update\nsudo apt install openjdk-17-jre -y\njava -version\n\n2.2. Criação de um usuário para a aplicação
\nPor questões de segurança, não é recomendado executar a aplicação como root. Vamos criar um usuário separado:
\nsudo useradd -m -s /bin/bash kotlinapp\nsudo passwd kotlinapp\n\n2.3. Upload do arquivo JAR para o servidor
\nUse SCP para copiar o arquivo da máquina local para o VPS:
\nscp build/libs/app-0.0.1-SNAPSHOT.jar kotlinapp@your-server-ip:/home/kotlinapp/app.jar\n\n3. Inicialização da aplicação e configuração do Systemd
\nPara que a aplicação inicie automaticamente na inicialização do sistema e não pare ao perder a conexão SSH, vamos configurá-la como um serviço Systemd.
\n\n3.1. Inicialização manual (para teste)
\nConecte-se ao servidor como usuário kotlinapp e execute:
cd /home/kotlinapp\njava -jar app.jar\nSe a aplicação iniciar e responder na porta 8080, prossiga para o próximo passo. Pare o processo (Ctrl+C).
\n\n3.2. Criação do arquivo Unit do Systemd
\nCrie o arquivo de serviço:
\nsudo nano /etc/systemd/system/kotlin-app.service\nInsira o seguinte conteúdo:
\n[Unit]\nDescription=Kotlin Application Service\nAfter=net