Question

Les gars GitHub a récemment lancé son application de traitement d'arrière-plan qui utilise Redis: http://github.com/defunkt/resque http://github.com/blog/542-introducing-resque

Je l'ai travaille localement, mais je me bats pour le faire fonctionner dans la production. Quelqu'un at-il un:

  1. recette Capistrano de déployer des travailleurs (numéro de contrôle des travailleurs, les redémarrant, etc.)
  2. travailleurs détachés à la machine séparée (s) où l'application principale est en cours d'exécution, quels paramètres ont besoin d'ici?
  3. pour survivre Redis acquis un redémarrage sur le serveur (j'ai essayé de le mettre dans Cron, mais pas de chance)
  4. Comment avez-vous resque Web (leur excellente application de surveillance) dans votre Déployez?

Merci!

P.S. J'ai posté une question sur Github à ce sujet mais pas encore de réponse. En espérant certains gourous peux aider sur celui-ci que je ne suis pas très expérimenté dans les déploiements. Merci!

Était-ce utile?

La solution 3

La réponse de Garrett a vraiment aidé, je voulais juste faire un peu plus de détails. Il a fallu beaucoup de bricoler pour y arriver ...

J'utilise aussi passager, mais nginx au lieu de apache.

Tout d'abord, ne pas oublier que vous devez installer sinatra, cela m'a jeté pendant un certain temps. sudo gem install sinatra

Ensuite, vous devez créer un répertoire pour la chose à courir, et il doit avoir un dossier public et tmp. Ils peuvent être vides, mais le problème est que git ne sauvera pas un répertoire vide dans le repo. Le répertoire doit avoir au moins un fichier, donc je fait quelques fichiers inutiles comme des espaces réservés. C'est une étrange fonctionnalité / bogue dans git.

J'utilise le plugin resque, donc je fait le répertoire là (où le config.ru par défaut est). On dirait que Garrett a fait un nouveau répertoire « resque » dans son RAILS_ROOT. Soit on doit travailler. Pour moi ...

cd MY_RAILS_APP/vendor/plugins/resque/
mkdir public 
mkdir tmp
touch public/placeholder.txt
touch tmp/placeholder.txt

Alors je MY_RAILS_APP/vendor/plugins/resque/config.ru modifié de sorte qu'il ressemble à ceci:

#!/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

Ne pas oublier de changer ADD_SOME_PASSWORD_HERE au mot de passe que vous souhaitez utiliser pour protéger l'application.

Enfin, j'utilise Nginx Voici donc ce que j'ai ajouté à mon nginx.conf

server {
  listen   80;
  server_name  resque.seoaholic.com;
  root /home/admin/public_html/seoaholic/current/vendor/plugins/resque/public;
  passenger_enabled on;
}

Et il se redémarrée sur votre Déploie, probablement quelque chose comme ça dans votre deploy.rb

run "touch #{current_path}/vendor/plugins/resque/tmp/restart.txt"

Je ne suis pas sûr que ce soit la meilleure façon, je ne l'ai jamais en rack de configuration / apps avant sinatra. Mais cela fonctionne.

Ceci est juste pour obtenir l'application de surveillance continue. Ensuite, je dois comprendre la partie dieu.

Autres conseils

Je suis un peu en retard à la fête, mais je pensais que je poste ce qui a fonctionné pour moi. Essentiellement, j'ai installé dieu pour surveiller et Redis resque. Si elles ne sont pas en cours d'exécution plus, Dieu les commence vers le haut. Ensuite, j'ai une tâche de râteau qui est lu après un deploy Capistrano qui quitte mes travailleurs Resque. Une fois que les travailleurs quittent, Dieu commencera nouveaux travailleurs de façon à ce qu'ils utilisent la dernière base de code.

Voici mon plein writeup de la façon dont je l'utilise resque dans la production:

http://thomasmango.com/2010/05/27/resque- de production

Je viens de comprendre ce hier soir, pour Capistrano, vous devez utiliser san_juan , j'aime l'utilisation de Dieu pour gérer le déploiement des travailleurs. Quant à survivre à un redémarrage, je ne suis pas sûr, mais je redémarre tous les 6 mois, donc je ne suis pas trop inquiet.

Bien qu'il suggère différentes façons de le commencer, voici ce qui a fonctionné plus facile pour moi. (Au sein de votre deploy.rb)

require 'san_juan'
after "deploy:symlink", "god:app:reload"
after "deploy:symlink", "god:app:start"

Pour gérer où il fonctionne, sur un autre serveur, etc, il couvre que dans la section de configuration du README.

J'utilise passager sur ma tranche, il était relativement facile, je juste besoin d'avoir un fichier config.ru comme ceci:

require 'resque/server'

run Rack::URLMap.new \
  "/" => Resque::Server.new

Pour mon fichier VirtualHost je:

<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>

En outre, une note rapide. Assurez-vous OVERIDE la tâche râteau resque:setup, il vous permettra d'économiser beaucoup de temps pour le frai de nouveaux travailleurs avec Dieu.

Je suis tombé sur beaucoup de problèmes, donc si vous avez besoin de plus d'aide, poster un commentaire.

Utilisez ces étapes au lieu de la configuration avec le niveau de prise de serveur web et plug-in d'édition:

#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 

https://gist.github.com/1060167

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top