运行一个服务器程序

好的,我是经验丰富的客户端开发人员,现在已经成功地创build了一个服务器端应用程序,使用Java / MongoDB API和NodeJS进行公共html响应。

一切都好,除了疑虑。

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

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

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

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

现在,我可以分离screen并closuresssh

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

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

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

就个人而言,我认为devise不当的守护进程(服务器软件/服务)应该要求像屏幕或监视器这样的包装/监视器才能正常运行。 他们应该照顾自己像大多数其他与Linux相关的东西(认真,看看它)。

如果使用屏幕启动应用程序,则不能在重新启动时自动重新启动它们。 下面是一个systemd脚本的示例代码,它将一个jar应用程序作为一个服务运行。 你可以把它放在/etc/systemd/system/test.service然后用systemctl start test启动服务

此脚本已在RHEL 7上进行了testing

 [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