您的Kotlin代码在本地运行良好。接下来呢?
您用Kotlin编写了一个很棒的应用程序。它在您的笔记本电脑上完美运行,测试通过,端点响应迅速。但真正的魔力只有在应用程序上线——部署到真实服务器,让用户看到它时,才会开始。
部署Kotlin应用程序不仅仅是“把jar文件扔到服务器上”。这是一门完整的科学,包括选择基础设施、配置环境、确保安全性和容错性。在本文中,我们将分析三种最流行的方法:经典的VPS、现代的Docker和灵活的云平台。您将了解如何在每种方案上部署Kotlin应用程序,获得现成的代码示例,并明白哪种路径更适合您的项目。
准备工作:部署Kotlin前需要了解什么
在我们深入细节之前,让我们确保我们具备基础知识。要部署Kotlin应用程序,您需要:
- 构建好的工件——通常是JAR文件(用于Spring Boot、Ktor)或WAR文件(用于旧的Java EE项目)。Kotlin编译为JVM字节码,因此所有标准的Java工具都能很好地工作。
- Java运行时环境(JRE)——至少版本11,最好使用17或21。Kotlin积极使用新版本Java的特性。
- 构建系统——Gradle或Maven。我们将使用Gradle,因为它实际上是Kotlin项目的标准。
构建Kotlin应用程序的最简单命令示例:
./gradlew clean build执行后,在build/libs/文件夹中会出现一个JAR文件,准备运行。
在VPS上部署Kotlin:行之有效的经典方法
虚拟专用服务器(VPS)就像您自己的公寓。您对环境拥有完全控制权,但也要承担所有清理和安全责任。这种方法非常适合小型项目、初创公司,或者当您需要最大灵活性时。
选择VPS并配置服务器
对于Kotlin应用程序,任何带有Linux(Ubuntu 22.04 LTS 是一个很好的选择)的VPS都适用。最低要求:1-2 GB RAM,20-30 GB SSD。我们推荐支持良好的提供商:DigitalOcean、Vultr、Hetzner或Timeweb(适用于俄罗斯用户)。
购买服务器后,首先要更新包并安装Java:
sudo apt update && sudo apt upgrade -ysudo apt install openjdk-17-jre-headless -yjava -version现在,创建一个用于运行应用程序的普通用户(切勿以root身份运行!):
sudo useradd -m -s /bin/bash kotlinappsudo passwd kotlinapp在VPS上运行Kotlin应用程序
通过SCP或SFTP将JAR文件复制到服务器:
scp build/libs/myapp-1.0.0.jar kotlinapp@您的服务器:/home/kotlinapp/app.jar现在运行应用程序。为简单起见,我们使用nohup,以便在关闭SSH时进程不会终止:
nohup java -jar /home/kotlinapp/app.jar --server.port=8080 &但这只是第一步。在实际生产环境中,您需要:
- Systemd服务——用于在崩溃后和服务器启动时自动重启应用程序。
- Nginx——作为反向代理,用于HTTPS、负载均衡和静态文件服务。
- 监控——至少是简单的日志记录和正常运行时间检查。
Kotlin应用程序的systemd服务示例(/etc/systemd/system/kotlinapp.service):
[Unit]Description=Kotlin ApplicationAfter=network.target
[Service]User=kotlinappWorkingDirectory=/home/kotlinappExecStart=/usr/bin/java -jar /home/kotlinapp/app.jar --server.port=8080Restart=alwaysRestartSec=10
[Install]WantedBy=multi-user.targe