系统重启时重启我的网络服务器

系统重启时重启我的网络服务器

我使用构建系统 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 权限)。重新启动以检查它是否有效。希望这有帮助,如果有用,请告诉我!

相关内容