引言:为什么部署Kotlin应用程序需要特殊方法
\n用Kotlin开发只是成功的一半。另一半是在远程服务器上正确部署您的应用程序。没有这一步,您的代码将只是一个本地项目,用户无法访问。
\n在本指南中,我们将介绍在VPS(虚拟专用服务器)上部署Kotlin应用程序的完整流程。您将学习如何将项目构建为可执行的JAR文件、配置服务器环境、将应用程序作为服务运行,并确保其稳定运行。本文面向已具备Kotlin和Linux基础知识的开发者。
\n\n1. 项目准备与JAR文件构建
\n在将代码上传到服务器之前,需要将应用程序构建为单一工件。对于使用Spring Boot或Ktor编写的Kotlin项目,标准格式是JAR文件(Java Archive)。
\n\n1.1. 配置build.gradle.kts
\n确保您的build.gradle.kts文件中包含用于构建可执行JAR的插件。对于Spring Boot,配置如下:
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\n对于纯Ktor(不使用Spring),请使用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. 构建项目
\n在项目的根文件夹中执行构建命令:
\n./gradlew clean build\n构建成功后,在build/libs/目录下会生成app-0.0.1-SNAPSHOT.jar文件(名称取决于配置)。将其复制到您的本地计算机。
src/main/resources/application.conf文件中指定了正确的端口(通常为8080)和运行模式。2. 配置VPS服务器
\n部署需要一个安装了Ubuntu 22.04 LTS操作系统的VPS。假设您已拥有SSH访问权限和超级用户(sudo)权限。
\n\n2.1. 安装Java(JRE)
\nKotlin编译为JVM字节码,因此服务器上必须安装Java Runtime Environment(JRE)17或更高版本:
\nsudo apt update\nsudo apt install openjdk-17-jre -y\njava -version\n\n2.2. 为应用程序创建用户
\n出于安全考虑,不建议以root身份运行应用程序。我们将创建一个单独的用户:
\nsudo useradd -m -s /bin/bash kotlinapp\nsudo passwd kotlinapp\n\n2.3. 将JAR文件上传到服务器
\n使用SCP将文件从本地计算机复制到VPS:
\nscp build/libs/app-0.0.1-SNAPSHOT.jar kotlinapp@your-server-ip:/home/kotlinapp/app.jar\n\n3. 启动应用程序并配置Systemd
\n为了确保应用程序在系统启动时自动运行,并且在SSH连接断开时不会崩溃,我们将将其配置为Systemd服务。
\n\n3.1. 手动启动(用于测试)
\n以kotlinapp用户身份连接到服务器并执行:
cd /home/kotlinapp\njava -jar app.jar\n如果应用程序启动并在8080端口响应,则进入下一步。停止进程(Ctrl+C)。
\n\n3.2. 创建Systemd Unit文件
\n创建服务文件:
\nsudo nano /etc/systemd/system/kotlin-app.service\n粘贴以下内容:
\n[Unit]\nDescription=Kotlin Application Service\nAfter=net