3

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

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

4

1 回答 1

5

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

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

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

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

于 2013-05-29T14:19:41.270 回答