Implantação de aplicação Kotlin em VPS: nível avançado

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 Kotlin em VPS: guia passo a passo para avançados



Desenvolver em Kotlin é apenas metade do trabalho. A verdadeira maestria se revela quando sua aplicação começa a funcionar em ambiente de produção em seu próprio servidor VPS. Neste artigo, abordaremos técnicas avançadas de implantação de aplicações Kotlin: desde a compilação de um fat JAR até a configuração de operação ininterrupta com systemd, proxy reverso via Nginx e automação via CI/CD. O material é voltado para desenvolvedores que já conhecem os fundamentos do Kotlin e desejam alcançar um nível profissional.



1. Preparação da compilação de produção da aplicação Kotlin



O primeiro passo é criar uma compilação otimizada. Usamos o plugin shadow para Gradle, que empacota todas as dependências em um único arquivo JAR executável (fat JAR).



Adicione ao build.gradle.kts:



plugins {    kotlin("jvm") version "1.9.22"    id("com.github.johnrengelman.shadow") version "8.1.1"    application}

application { mainClass.set("com.example.MainKt")}

tasks.shadowJar { archiveBaseName.set("app") archiveClassifier.set("") archiveVersion.set("") minimize()}


Compile o JAR com o comando:



./gradlew shadowJar


Como resultado, você obterá o arquivo build/libs/app.jar. Para produção, recomenda-se desabilitar logs de depuração e configurar o nível de log por meio de variáveis de ambiente.



Exemplo de configuração logback.xml para produção:



<configuration>    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">        <file>/var/log/app/app.log</file>        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">            <fileNamePattern>/var/log/app/app.%d{yyyy-MM-dd}.log</fileNamePattern>            <maxHistory>30</maxHistory>        </rollingPolicy>        <encoder>            <pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern>        </encoder>    </appender>

<root level="INFO"> <appender-ref ref="FILE"/> </root></configuration>


2. Criação de serviço systemd para inicialização automática



Para que a aplicação inicie automaticamente na inicialização do sistema e seja reiniciada em caso de falhas, usamos o systemd. Crie o arquivo /etc/systemd/system/kotlin-app.service:



[Unit]Description=Kotlin Application ServiceAfter=network.target

[Service]Type=simpleUser=appuserGroup=appuserWorkingDirectory=/opt/kotlin-appExecStart=/usr/bin/java -Xms512m -Xmx1024m -jar /opt/kotlin-app/app.jarRestart=on-failureRestartSec=10StandardOutput=journalStandardError=journalEnvironment="APP_ENV=production"Environment="DB_URL=jdbc:postgresql://localhost:5432/mydb"

[Install]WantedBy=multi-user.target


Após criar o arquivo, execute:



sudo systemctl daemon-reloadsudo systemctl enable kotlin-appsudo systemctl start kotlin-app


Verifique o status:



sudo systemctl status kotlin-app


Os logs podem ser visualizados através de journalctl -u kotlin-app -f.



3. Configuração do Nginx como proxy reverso com SSL



O Nginx fornecerá balanceamento de carga, cache e HTTPS. Instale o Nginx e o Certbot:



sudo apt updatesudo apt install nginx certbot python3-certbot-nginx


Crie a configuração /etc/nginx/sites-available/kotlin-app:



server {    listen 80;    server_name yourdomain.com;    return 301 https://$server_name$request_uri;}

server { listen 443 ssl http2; server_name yourdomain.com;

ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem; ssl_certificate_key /etc/letse

Blogs

Book Recommendations