运行服务器程序

运行服务器程序

好的,我是一名经验丰富的客户端开发人员,现在已成功使用 Java/MongoDB 作为 API 并使用 NodeJS 作为公共 html 响应创建了服务器端应用程序。

一切都好,除了疑虑。

我应该如何运行服务器可执行文件?

目前,我正在使用 运行 mongodb systemd,因此在启动时它将自动启动。

然后,我screen使用程序打开并运行 NodeJS 应用程序supervisor,它将在崩溃时重新启动该应用程序。

在新选项卡上,我直接运行 Java 应用程序,使用java -jar main/application.jar

现在,我可以分离screen并关闭ssh

,我应该将这些可执行文件包装到服务中还是可以像我一样运行?

答案1

您应该使用 systemd 来启动和管理您的服务器应用程序。

答案2

服务器内容需要随服务器自动启动/停止并在后台运行... 在大多数现代 Linux 发行版中,现在可能已经完成了systemd(如 lain 所说)。较旧的发行版将是system V init脚本/etc/init.d(或类似脚本)或有时是upstart脚本/etc/init(Ubuntu)。

就我个人而言,我认为设计合理的守护进程(服务器软件/服务)不需要像屏幕或监控器这样的包装器/监控器才能正常运行。它们应该像 Linux 附带的大多数其他东西一样自行处理(认真看看)。

答案3

如果您使用 screen 启动应用程序,则无法在重启时自动重新启动它们。下面是 systemd 脚本的示例代码,该脚本将 jar 应用程序作为服务运行。您可以将其放入 /etc/systemd/system/test.service,然后使用 systemctl start test 启动服务

此脚本已在 RHEL 7 上测试

[Unit]
Description=java application descrption
#After=NetworkManager.service

[Service]
Type=simple
ExecStart=/usr/bin/java -jar /root/tmp/test.jar
ExecStop=pkill -f '/root/tmp/test.jar'
#ExecReload=
PIDFile=/var/run/jboss-as/test.jar.pid

[Install]
WantedBy=multi-user.target

相关内容