GitHubの連中は最近、Redisを使用するバックグラウンド処理アプリをリリースしました: http://github.com/defunkt/resquehttp://github.com/blog/542-introducing-resque
ローカルで動作していますが、本番環境で動作させるのに苦労しています。誰かが持っています:
ありがとう!
追伸これについてGithubに問題を投稿しましたが、まだ応答がありません。 SO gurusが配備の経験があまりないので、これを手伝ってくれることを願っています。ありがとうございます!
ギャレットの答えは本当に役に立ちました、もう少し詳細を投稿したかっただけです。それを正しくするために多くのいじくりが必要でした...
私もパッセンジャーを使用していますが、Apacheの代わりにnginxを使用しています。
まず、sinatraをインストールする必要があることを忘れないでください。 Sudo gem install sinatra
次に、事物を実行するためのディレクトリを作成する必要があります。これには、パブリックフォルダーとtmpフォルダーが必要です。空でもかまいませんが、問題はgitが空のディレクトリをリポジトリに保存しないことです。ディレクトリには少なくとも1つのファイルが必要なので、プレースホルダーとしていくつかのジャンクファイルを作成しました。これは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
# Set the AUTH env variable to your basic auth password to protect Resque.
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"
これが最善の方法であるかどうかは本当にわかりません。これまでラック/シナトラアプリをセットアップしたことがありません。しかし、それは機能します。
これは、監視アプリを実行するためのものです。次に、神の部分を理解する必要があります。
パーティーには少し遅れますが、うまくいったことを投稿したいと思いました。基本的に、私はredisとresqueを監視するための神の設定をしています。それらがもう実行されていない場合、神はそれらをバックアップし始めます。次に、capistranoのデプロイ後に実行される熊手タスクがあり、レスキューワーカーが終了します。ワーカーが終了すると、godは新しいワーカーを起動し、最新のコードベースを実行します。
これが、本番環境でのresqueの使用方法に関する私の完全な記事です。
昨夜これを理解しました。カピストラーノの場合は san_juan を使用する必要があります。次に、ワーカーの展開を管理するために God を使用するのが好きです。再起動の存続についてはわかりませんが、6か月ごとに再起動しているのであまり心配していません。
彼はそれを開始するさまざまな方法を提案していますが、これが私にとって最も簡単に機能したものです。 (deploy.rb内)
require 'san_juan'
after "deploy:symlink", "god:app:reload"
after "deploy:symlink", "god:app:start"
別のサーバーなどで実行する場所を管理するために、彼はREADME
の- 構成セクション でそれをカバーしています。
私はスライスにPassengerを使用しているので、比較的簡単でした。config.ru
ファイルは次のようになります。
require 'resque/server'
run Rack::URLMap.new \
"/" => Resque::Server.new
私のVirtualHostファイルの場合:
<VirtualHost *:80>
ServerName resque.server.com
DocumentRoot /var/www/server.com/current/resque/public
<Location />
AuthType Basic
AuthName "Resque Workers"
AuthUserFile /var/www/server.com/current/resque/.htpasswd
Require valid-user
</Location>
</VirtualHost>
また、簡単なメモ。 resque:setup
レーキタスク、それはあなたに神と一緒に新しい労働者を生み出すための多くの時間を節約します。
私は多くのトラブルに遭遇したので、さらに助けが必要な場合は、コメントを投稿してください。
Webサーバーレベルで設定を行い、プラグインを編集する代わりに、次の手順を使用します。
#The steps need to be performed to use resque-web with in your application
#In routes.rb
ApplicationName::Application.routes.draw do
resources :some_controller_name
mount Resque::Server, :at=> "/resque"
end
#That's it now you can access it from within your application i.e
#http://localhost:3000/resque
#To be insured that that Resque::Server is loaded add its requirement condition in Gemfile
gem 'resque', :require=>"resque/server"
#To add basic http authentication add resque_auth.rb file in initializers folder and add these lines for the security
Resque::Server.use(Rack::Auth::Basic) do |user, password|
password == "secret"
end
#That's It !!!!! :)
#Thanks to Ryan from RailsCasts for this valuable information.
#http://railscasts.com/episodes/271-resque?autoplay=true