scala - 如何使用 capistrano 在远程机器上启动 play2 应用程序

标签 scala capistrano playframework-2.0

我正在尝试使用 capistrano 部署 play2 应用程序,但我不知道如何在成功部署后(重新)启动 play2 应用程序。只是触发“Play 开始”会导致进程挂起,等待我按 ctrl+D

我在 Play 应用程序根文件夹中创建了一个启动脚本

#!/bin/bash

nohup bash -c "/var/lib/play2/play start &>> /tmp/myapp.log 2>&1" &> /dev/null &

当我在服务器上运行它时效果很好。当我尝试通过 ssh 从我的本地机器调用它时,它也可以工作。但是当我使用 capistrano 时,它似乎没有任何作用。我的 capistrano 配置如下所示:
namespace :deploy do

  task :restart do
    stop
    sleep 1
    start
  end

  task :start do
    run "cd #{current_release}/trip-api && ./start.sh"
  end

  task :stop do
    run "cd #{current_release}/trip-api && ./stop.sh"
  end
end

在远程机器上启动 play2 应用程序的最佳方式是什么?如何让它与 capistrano 一起工作?

最佳答案

查看 deploying your application on production 上的 Play 文档

推荐的方法是打包您的应用程序

play clean compile stage

然后运行它

$目标/开始

要阻止它,请查看文档:

The server’s process id is displayed at bootstrap and written to the RUNNING_PID file. To kill a running Play server, it is enough to send a SIGTERM to the process to properly shutdown the application.



在此 quickstart for Openshift ,它显示了 start play as a service 的另一种方式以及如何操作 stop it .

基本上你做这样的事情开始:
APP_COMMAND="${OPENSHIFT_REPO_DIR}target/start $PLAY_PARAMS "\
"-Dhttp.port=${OPENSHIFT_INTERNAL_PORT} "\
"-Dhttp.address=${OPENSHIFT_INTERNAL_IP} "\
"-Dconfig.resource=openshift.conf"

echo $APP_COMMAND &>> $LOG_FILE
nohup bash -c "${APP_COMMAND} &>> ${LOG_FILE} 2>&1" &> /dev/null &

并阻止它
pid=`cat RUNNING_PID`
echo "Stopping play application" >> $LOG_FILE
kill -SIGTERM $pid

关于scala - 如何使用 capistrano 在远程机器上启动 play2 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10582515/

相关文章:

ruby-on-rails - 使用错误版本的 Ruby 部署 capistrano

ruby-on-rails - Capistrano gzip : stdin: unexpected end of file interruption

java - JQuery TokenInput 不显示搜索结果

http - Play 2.0——授权

Scala 无限迭代器 OutOfMemory

scala - 是否可以在 Akka 中编写 FSM?

scala - 使用 Spark Scala 进行间隔合并

ruby - 你如何在 Capistrano 中为不同的角色定义不同的相同任务?

scala - lazyMap其实不懒惰?

java - Play 2,启动时将数据加载到数据库