我使用构建系统 Gradle 通过 Ktor 制作了一个简单的 Web 服务器。我的build.gradle
文件应用了该application
插件:
application {
mainClass.set("io.ktor.server.netty.EngineMain")
}
所以我可以用来./gradlew run
运行网络服务器
这可行,但我想将我的 Web 服务器作为服务部署在我的 VPS 上,因为我希望当 Ubuntu 重新启动时 Web 应用程序自动重新启动。
我不太了解 Linux 内部结构,在 Google 上搜索后我感到很困惑,不知道该如何面对这个问题。
我认为我应该定义一个init.d
任务,但该怎么做呢?我可以编写一个运行的 bash 脚本吗~/MyApp/gradlew run
?我把它放在哪里?
init.d 是旧的、已弃用的守护进程启动系统;它已被 upstart 取代。Upstart 的优势在于配置起来更容易,并且允许对任务初始化进行正确的排序。
我知道我应该使用upstart
,但如何使用呢?
项目仅处于维护模式。没有开发新功能,一般建议是转移到另一个最小初始化系统或 systemd。
我知道我应该使用systemd
,但如何使用呢?
答案1
您可以使用 SystemD 来完成此操作。首先,将您的工作目录更改为/etc/systemd/system
。所有 SystemD 服务都位于此处。确保您的可执行文件可供 SystemD 访问。接下来,在当前目录中创建一个 .service 文件(使用 root 权限)。可能类似于webserver.service
。然后,编辑该文件(使用 root 权限),并写入类似以下内容:
[Unit]
Description=Service Description
Type=simple
ExecStart=/path/to/gradlew /path/to/executable
[Install]
WantedBy=multi-user.target
确保将描述更改为您可以识别的内容,并将设置/path/to/executable
为可执行文件。接下来,运行systemctl enable yourservicename
(使用 root 权限)。重新启动以检查它是否有效。希望这有帮助,如果有用,请告诉我!