[英]How To Start Jetty Properly
这可能是一个非常愚蠢的问题,因为似乎没有人有这个问题。 在Jetty文档中,它说jar -jar start.jar
启动Jetty,它确实如此。 但是当我关闭我的SSH控制台时,显然它已经死了。
我该如何正确运行?
这是否可以在生产机器上运行,该生产机器实际上将在Jetty下运行应用程序? 我认为情况就是这样,因为你要求正确启动它。
如果是这样,你需要一个适当的工艺监督体系,如runit , daemontools的 , monit的 , 暴发户 , systemd ,或好醇” 的SysV init.d中 (如提及W / 梗概 )。 使用哪种方法取决于您的偏好,业务需求以及您的底层操作系统。
我使用并喜欢runit 。 它建立在坚实的原则 (daemontools) 之上 ,对于我喜欢的发行版(Debian和Ubuntu),它由作者自己很好地 打包 。
尽管在其他答案中被推荐,并在评论中提到,在screen / tmux中开始长时间运行的过程,或者通过nohup是次优的。 您无法真正控制该过程。 如果它死了它将不会重新启动。 您必须手动查找其PID,否则手动管理服务。 你必须做更多的手工工作来获取日志输出(重定向,发送到一些随机文件等)。 您不能可靠地使其依赖于其他进程,或者让其他进程依赖于它。 体面的过程监控系统默认为您提供所有这些功能。
如果您的目标完全不同,那么请更新问题以更具体地说明您的用例。
java -jar start.jar &
(在后台运行)也应该可以工作,虽然日志记录不会像w / nohup一样好转。
这是因为杀死启动进程的shell(例如通过注销)会杀死进程,除非它们是后台进程。 屏幕也起作用,因为它在后台运行,并且屏幕有效地保持会话在您附加/分离时运行。
如果您使用的是* nix系统,最好的解决方案可能是使用/etc/init.d
的脚本(或者系统的等效系统)。 有一个在https://gist.github.com/404672 。
否则,从命令行使用nohup
或screen
将至少让您在注销时不会死亡。 因此,将使用&
将过程置于后台。
一种方法是使用nohup
nohup java -jar start.jar
这具有将stdout和stderr写入文件的优点
另一种方法是使用screen
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.