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

时间:2013-05-29 13:05:57

标签: clojure jetty ring

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

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

1 个答案:

答案 0 :(得分:5)

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

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

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

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