Garrett的回答真的很有帮助,只想再附加几个细节。要做得正确需要很多调试...
我也使用passenger,但是是nginx而不是apache。
首先,不要忘记您需要安装sinatra,这让我纠结了一段时间。
sudo gem install sinatra
然后,您需要为运行程序创建一个目录,并且必须拥有public和tmp文件夹。它们可以为空,但问题是git不会在存储库中保存空目录。该目录必须至少有一个文件,因此我制作了一些占位符垃圾文件。这是git中的奇怪特性/错误。
我正在使用resque插件,所以我在那里创建了该目录(默认的config.ru所在位置)。看起来Garrett在他的rails_root中新建了一个'resque'目录。两者都可以工作。对我来说...
cd MY_RAILS_APP/vendor/plugins/resque/
mkdir public
mkdir tmp
touch public/placeholder.txt
touch tmp/placeholder.txt
然后我编辑了MY_RAILS_APP/vendor/plugins/resque/config.ru
文件,使其看起来像这样:
#!/usr/bin/env ruby
require 'logger'
$LOAD_PATH.unshift File.expand_path(File.dirname(__FILE__) + '/lib')
require 'resque/server'
use Rack::ShowExceptions
AUTH_PASSWORD = "ADD_SOME_PASSWORD_HERE"
if AUTH_PASSWORD
Resque::Server.use Rack::Auth::Basic do |username, password|
password == AUTH_PASSWORD
end
end
run Resque::Server.new
不要忘记将ADD_SOME_PASSWORD_HERE
更改为您想要用来保护应用程序的密码。
最后,我正在使用Nginx,这是我在nginx.conf中添加的内容:
server {
listen 80;
server_name resque.seoaholic.com;
root /home/admin/public_html/seoaholic/current/vendor/plugins/resque/public;
passenger_enabled on;
}
因此,在您的部署中重新启动,可能会像在您的deploy.rb文件中一样执行以下操作:
run "touch #{current_path}/vendor/plugins/resque/tmp/restart.txt"
我不确定这是否是最佳方法,因为我以前从未设置过rack/sinatra应用程序。但它可以工作。
这只是为了启动监控应用程序。接下来我需要弄清楚god部分。