在VPS上部署Kotlin应用程序:从A到Z的分步指南

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

在VPS上部署Kotlin应用程序:从A到Z的分步指南



您用Kotlin(Ktor、Spring Boot或只是一个控制台服务)编写了一个很棒的应用程序,现在需要将其部署到真实服务器上。在本文中,我们将分析在VPS上部署Kotlin应用程序的完整流程:从购买服务器和配置SSH,到通过systemd启动以及连接带HTTPS的域名。所有示例均为实际可用,并在Ubuntu 22.04上经过验证。



1. 准备VPS并连接



首先,租用一个VPS(例如,来自Timeweb、Selectel或DigitalOcean)。最低要求:1 vCPU、1 GB RAM、20 GB SSD。操作系统为Ubuntu 22.04 LTS。



获取IP地址和root密码后,通过SSH连接:



ssh root@your_server_ip


立即更新系统并创建一个非特权用户(以root身份操作是不良实践):



apt update && apt upgrade -yadduser kotlinuserusermod -aG sudo kotlinusersu - kotlinuser


配置SSH密钥以便安全便捷地登录:



ssh-keygen -t ed25519 -C "your_email@example.com"ssh-copy-id kotlinuser@your_server_ip


现在,在/etc/ssh/sshd_config中禁用密码登录(将PasswordAuthentication行改为no)并重启SSH:sudo systemctl restart sshd。



2. 安装Java(JRE/JDK)并构建应用程序



Kotlin应用程序运行在JVM上。安装OpenJDK 17或21(推荐用于现代项目):



sudo apt install openjdk-17-jdk -yjava -version


现在,在您的本地开发计算机上,将应用程序构建为JAR文件。对于Gradle(Ktor或Spring Boot):



./gradlew clean build


构建好的JAR文件将位于build/libs/目录中。例如,myapp-1.0.0.jar。将其上传到服务器:



scp build/libs/myapp-1.0.0.jar kotlinuser@your_server_ip:~/app/


在服务器上创建文件夹结构:



mkdir -p ~/app/logs ~/app/config


将配置文件(application.conf、application.yml)放入~/app/config/目录。手动测试应用程序是否能启动:



cd ~/appjava -jar myapp-1.0.0.jar --spring.config.location=file:./config/


如果一切正常,则继续设置自动启动。



3. 配置systemd以实现自动启动



为了确保应用程序在服务器重启后自动启动,并且在出错时不会崩溃,我们将创建一个systemd服务。



创建文件/etc/systemd/system/kotlin-app.service:



sudo nano /etc/systemd/system/kotlin-app.service


粘贴以下内容(将路径替换为您自己的):



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

[Service]Type=simpleUser=kotlinuserWorkingDirectory=/home/kotlinuser/appExecStart=/usr/bin/java -jar /home/kotlinuser/app/myapp-1.0.0.jar --spring.config.location=file:/home/kotlinuser/app/config/Restart=on-failureRestartSec=10StandardOutput=append:/home/kotlinuser/app/logs/app.logStandardError=append:/home/kotlinuser/app/logs/error.log

[Install]WantedBy=multi-user.target


关键参数说明:

  • User — 以哪个用户身份运行(非root);
  • ExecStart — 包含配置文件的完整启动命令;
  • Restart=on-failure — 崩溃时自动重启;
  • StandardOutput/Error — 将日志记录到文件。


激活服务:



sudo systemctl daemon-reloadsudo systemctl enable kotlin-app.servicesudo systemctl start kotlin-app.service


检查状态:



sudo systemctl status kotlin-app.service

博客

书籍推荐