我正在使用Ubuntu VPS来托管几个Ring网络应用。我为每个窗口都有一个单独的GNU Screen窗口,我分别使用lein run
和^C
来启动和停止它们。这有效,但感觉很业余,如果出现任何问题,这些服务将不会自动重启。
我想设置一些内容,以便我可以使用Ubuntu的service
命令启动和停止我的应用程序(我已经用它来启动和停止nginx)。我可以用某种快捷方式让这些应用程序使用service
命令吗?例如,是否有一些Leiningen或Ring友好的模板,我可以插入我的应用程序的路径?如果不这样做,编写我自己的service
脚本与Jetty集成的最佳做法是什么?
答案 0 :(得分:5)
这取决于您是希望您的服务直接从项目目录运行,还是想要完成创建和安装构建工件的中间步骤。
当然,在开发过程中,从项目目录中使用lein run
会更方便。为了重复性,我建议在生产系统中使用第二种方法。
一般方法是使用lein uberjar
任务创建独立的JAR文件。从那里开始,创建一个可以直接通过/etc/init.d
或使用jsvc
运行JAR文件的java
脚本非常简单(虽然有点乏味)。
看起来有一个Leiningen插件(lein-init-script)来自动生成服务脚本的过程,尽管我没有任何经验。你可能想要检查一下。