2

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

4

2 回答 2

3

您需要生成 init 或 upstart 脚本。leiningen wiki提到了自动生成和安装脚本的lein-init-script 。

于 2013-01-16T07:38:38.117 回答
2

新贵的食谱非常令人生畏……但比我想象的要容易。新贵的脚本实际上写起来很简单。

以下是我为使其工作而采取的步骤:

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

(defproject 青金石“0.1.0-SNAPSHOT”
  : 依赖...
  ...文件的其余部分...
  :main lapis.app)

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

(ns lapis.app
  (:gen-class)
  (:采用 ....)
  (:要求...))

(defn -main [&args]
  ……)

(3)使用lein uberjar in生成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
于 2013-01-22T03:59:48.087 回答