如何在启动时自动启动clojure应用程序

时间:2013-01-16 05:07:46

标签: clojure

我只是想在启动时运行一个响铃服务器。我正在使用ubuntu 12.04,并想知道其他人如何部署他们的应用程序。

2 个答案:

答案 0 :(得分:3)

您需要生成init或upstart脚本。 leiningen wiki提及lein-init-script,可自动生成和安装脚本。

答案 1 :(得分:2)

新贵的食谱非常令人生畏......但它比我想象的要容易。新手脚本实际上很容易编写。

以下是我采取的步骤:

(1)在project.clj中,将:main关键字指向要运行的类。例如:

(defproject lapis "0.1.0-SNAPSHOT"
  :dependencies ...
  ... rest of file ...
  :main lapis.app)

(2)然后在类中,向命名空间添加:gen-class指令以及-main函数:

(ns lapis.app
  (:gen-class)
  (:use ....)
  (:require...))

(defn -main [&args]
  ......)

(3)使用lein uberjar生成jar文件:

$ lein uberjar
> Including fs-1.3.2.jar
> Including jetty-io-7.6.1.v20120215.jar
> ........
> Including jetty-continuation-7.6.1.v20120215.jar

> Created /home/example/lapis/target/lapis-0.1.0-SNAPSHOT-standalone.jar

(4)确保.jar文件运行:

$ java -jar target/lapis-0.1.0-SNAPSHOT-standalone.jar

并在项目目录之外进行测试,因为您可能不知道resources目录中的文件存在问题:

$ cd ~
$ java -jar /home/example/lapis/target/lapis-0.1.0-SNAPSHOT-standalone.jar

(5)如果一切正常,则将upstart文件放在/etc/init/.conf中。

我的剧本是5行:

$ cat /etc/init/lapis.conf
> -------------
> start on started

> script
>  exec /usr/bin/java -jar  /home/example/lapis/target/lapis-0.1.0-SNAPSHOT-standalone.jar >> /var/log/lapis/lapis.log 2>&1
> end script
> --------------

(6)测试服务是否有效:

$ sudo start lapis
>  lapis start/running, process 2543

$ sudo stop lapis
> lapis stop/waiting