perakitan sbt: jalankan server web secara independen dari sesi ssh

Saya ingin menjadikan sbt independen dari sesi ssh saya. Saya telah menginstal sbt-assembly

Saya berhasil memiliki itu mengeluarkan toples lemak setelah menjalankan tes.

[info] Assembly up to date: /home/../target/scala-2.11/root-assembly-0.1.jar
[success] Total time: 6 s, completed Aug 10, 2015 2:43:06 PM

Namun, saya tidak berhasil memahami apa yang akan terjadi selanjutnya. Seperti inilah build.sbt saya.

lazy val root = (project in file(".")).
        settings(
                organization  := "hidethis",
                version       := "0.1",
                scalaVersion  := "2.11.6",
                scalacOptions := Seq("-unchecked", "-deprecation", "-encoding", "utf8"),
                unmanagedBase := baseDirectory.value / "custom_lib",
                mainClass in Compile := Some("webserver.Root")
        )

libraryDependencies ++= {
  val akkaV = "2.3.9"
  val sprayV = "1.3.3"
  Seq(
    "io.spray"            %%  "spray-can"     % sprayV,
    "io.spray"            %%  "spray-routing" % sprayV,
    "io.spray"            %%  "spray-json"    % "1.3.2",
    "io.spray"            %%  "spray-testkit" % sprayV  % "test",
    "com.typesafe.akka"   %%  "akka-actor"    % akkaV,
    "com.typesafe.akka"   %%  "akka-testkit"  % akkaV   % "test",
    "org.specs2"          %%  "specs2-core"   % "2.3.11" % "test",
    "org.scalikejdbc" %% "scalikejdbc" % "2.2.7",
    "org.postgresql" % "postgresql" % "9.4-1200-jdbc41"
  )
}

Revolver.settings

Ada contoh di halaman sbt-assembly tutorial yang terlihat seperti ini:

lazy val app = (project in file("app")).
  settings(commonSettings: _*).
  settings(
    // your settings here
  )

tapi saya tidak yakin bagaimana cara kerjanya.


person NoIdeaHowToFixThis    schedule 10.08.2015    source sumber
comment
Dalam pertanyaan yang Anda sebutkan ada baris kedua kode nohup scala ./target/scala-2.10/trafficgenerator_2.10-1.0.jar & Bukankah itu yang Anda inginkan?   -  person Tyth    schedule 10.08.2015
comment
Saya memahami bahwa nohup adalah alternatif agar sbt-assembly mengurus semua langkah.   -  person NoIdeaHowToFixThis    schedule 10.08.2015
comment
Tidak, sbt-assembly hanya memungkinkan Anda membuang sbt di server peluncuran, mengemas semua dependensi ke dalam satu toples. Saya kira Anda bisa menggunakan nohup sbt run saja, tetapi saya sendiri belum pernah mencobanya.   -  person Tyth    schedule 10.08.2015
comment
sudo nohup sbt run & exit mengembalikan [1] 14747 logout berikut tetapi server sepertinya sedang down   -  person NoIdeaHowToFixThis    schedule 10.08.2015


Jawaban (1)


Sebagai alternatif dari nohup, Anda dapat menggunakan screen. Ini akan membuat terminal virtual yang dapat Anda lepaskan, seperti:

$ echo $FOO
>
$ screen
$ FOO="bar"
$ echo $FOO
> bar

Sekarang, Anda mengetik Ctrl-a-d untuk melepaskan layar

[detached]
$ echo $FOO
>

Pada titik ini, Anda dapat mengakhiri sesi Anda. Saat Anda ssh kembali ke mesin, Anda dapat memulihkannya.

$ screen -r # this recovers your screen
$ echo $FOO
bar

Dalam kasus Anda, Anda akan melakukan ssh ke mesin, screen, lalu memulai program Anda dengan sbt atau dengan java my-big-jar. Setelah berjalan, lepaskan layar dan tutup sesi ssh. Program ini akan terus berjalan.

person Adama    schedule 13.08.2015