好的,我是经验丰富的客户端开发人员,现在已经成功地创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