我正在尝试使用capistrano部署play2应用程序,但在成功部署后我无法弄清楚如何(重新)启动play2应用程序.只是触发“播放开始”将导致进程挂起,等待我按下ctrl D.
#!/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 clean compile stage
然后运行它
$target / start
要停止它,请查看文档:
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