如何使用Ubuntu的服务命令来管理Ring应用程序?

bde*_*ham 3 jetty clojure ring

我正在使用Ubuntu VPS来托管几个Ring网络应用程序.我为每个窗口都有一个单独的GNU Screen窗口,我分别使用lein run和开始和停止它们^C.这有效,但感觉很业余,如果出现任何问题,这些服务将不会自动重启.

我想设置一些东西,以便我可以使用Ubuntu的service命令启动和停止我的应用程序(我已经用它来启动和停止nginx).我可以使用某种快捷方式让这些应用程序使用该service命令吗?例如,是否有一些Leiningen或Ring友好的模板,我可以插入我的应用程序的路径?如果不这样,编写我自己的service脚本与Jetty集成的最佳实践是什么?

Ale*_*lex 5

这取决于您是希望您的服务直接从项目目录运行,还是要通过创建和安装构建工件的中间步骤.

当然,在开发过程中,lein run从项目目录中使用会更方便.为了重复性,我建议将第二种方法用于生产系统.

一般方法是使用该lein uberjar任务来创建独立的JAR文件.从那里开始,创建一个/etc/init.d可以直接运行JAR文件的脚本非常简单(虽然有点乏味),可以直接通过java也可以使用jsvc.

看起来有一个Leiningen插件(lein-init-script)来自动生成服务脚本的过程,尽管我没有任何经验.你可能想要检查一下.