Capistrano和PlayFramework

Capistrano和PlayFramework,playframework,capistrano,Playframework,Capistrano,我正在努力让capistrano发布我的PlayFramework应用程序,但是我在运行命令时遇到了一些问题 发生的情况是cap运行play start命令,它似乎正在启动,但当我执行 ps aux | grep java 没有正在运行的播放应用程序 如果我从cap输出中复制命令并在服务器上本地运行它,它将正常工作 capistrano run命令是否会终止播放生成的子进程 如何防止capistrano终止进程 我的deploy.rb default_run_options[:pty] = t

我正在努力让capistrano发布我的PlayFramework应用程序,但是我在运行命令时遇到了一些问题

发生的情况是cap运行play start命令,它似乎正在启动,但当我执行

ps aux | grep java
没有正在运行的播放应用程序

如果我从cap输出中复制命令并在服务器上本地运行它,它将正常工作

capistrano run命令是否会终止播放生成的子进程

如何防止capistrano终止进程

我的deploy.rb

default_run_options[:pty] = true
set :application, "Intranet"
set :domain, "intranet.example.com"
set :deploy_to, "/srv/#{domain}"
set :play_path, "/usr/local/play/play"
set :shared_path, "#{deploy_to}/shared"
set :app_pid, "#{shared_path}/pids/server.pid"
set :app_path, "#{deploy_to}/current"

set :scm, :git
set :user, "myuser"
set :repository, "git@store.example.com:intranet.git"

ssh_options[:forward_agent] = true
set :deploy_via, :remote_cache
set :keep_releases, 3

role :web, domain
role :app, domain
role :db, domain, :primary => true

namespace :deploy do
  task :start do
    run "rm -f #{app_pid};#{play_path} start #{app_path} --deps --pid_file=#{app_pid} --%prod"
  end

  task :restart do
    stop
    start
  end

  task :stop do
    run "#{play_path} stop #{app_path} --pid_file=#{app_pid}"
  end
end

namespace :play do
  desc "view running play apps"
  task :viewprocess do
    run "#{sudo} ps -ef | grep 'play/framework'"
  end

  desc "kill play processes"
  task :kill do
    run "#{sudo} ps -ef | grep 'play/framework' | grep -v 'grep' | awk '{print $2}'| xargs -i kill {} ; echo ''"
  end

  desc "view logfiles"
  task :tail_logs, :roles => :app do
    run "tail -f #{shared_path}/log/system.out" do |channel, stream, data|
      puts  # for an extra line break before the host name
      puts "#{channel[:host]}: #{data}"
      break if stream == :err
    end
  end

end

我只是想告诉你,我通过调整你的脚本并添加其他内容成功地远程启动了play。
您的问题是必须在nohup+中启动远程进程,但由于未知原因,&在Capistrano中不起作用。我找到了一条路。
我很有动力,所以决定制作一个游戏模块。

它的第一个版本就在那里:

太棒了!最后,我可以得到一行部署:)并感谢您的脚本,因为如果没有它,我尝试编写几行Ruby代码的时间会更长;)