Pregunta

Los chicos de GitHub liberados recientemente su aplicación para el proceso de fondo que utiliza Redis: http://github.com/defunkt/resque http://github.com/blog/542-introducing-resque

Tengo que trabajar localmente, pero estoy luchando para conseguir que funcione en la producción. Tiene a nadie a:

  1. Capistrano receta para desplegar trabajadores (Número de control de los trabajadores, el reinicio de ellos, etc)
  2. trabajadores desplazados a máquina separada (s) desde donde se está ejecutando la aplicación principal, lo que los ajustes se necesita aquí?
  3. Redis conseguido sobrevivir a un reinicio del servidor (He intentado poner en cron, pero sin suerte)
  4. ¿Cómo trabajó resque web (su excelente aplicación de supervisión) en su despliegue?

Gracias!

P.S. He publicado un problema en Github sobre esto, pero no hay respuesta todavía. Con la esperanza de algunos gurús SO puede ayudar en este caso, ya que no tengo mucha experiencia en implementaciones. Gracias!

¿Fue útil?

Solución 3

La respuesta de Garrett ayudó mucho, sólo quería publicar algunos detalles más. Se tomó una gran cantidad de retoques para hacerlo bien ...

Estoy usando pasajeros también, pero nginx en lugar de Apache.

En primer lugar, no olvide que usted necesita instalar Sinatra, esto me tiró por un tiempo. sudo gem install sinatra

Luego hay que hacer un directorio para el que hay que ejecutar, y tiene que tener una carpeta pública y tmp. Pueden ser vacío pero el problema es que git no guardará un directorio vacío en el repositorio. El directorio tiene que tener al menos un archivo en el mismo, así que hice algunos archivos basura como marcadores de posición. Esta es una característica extraña / error en git.

Estoy usando el plugin resque, por lo que hizo el directorio allí (en el que el defecto es config.ru). Parece que Garrett hizo un nuevo directorio 'resque' en su RAILS_ROOT. Cualquiera de los dos debería funcionar. Para mí ...

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

A continuación, he editado MY_RAILS_APP/vendor/plugins/resque/config.ru por lo que se ve así:

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

No se olvide de cambiar ADD_SOME_PASSWORD_HERE a la contraseña que desea utilizar para proteger la aplicación.

Por último, estoy usando Nginx Así que aquí es lo que he añadido a mi nginx.conf

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

Y así se reinicia en sus despliega, probablemente algo como esto en su deploy.rb

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

No estoy muy seguro de si se trata de la mejor manera, nunca he bastidor configuración / aplicaciones Sinatra antes. Pero funciona.

Esto es sólo para obtener la aplicación de monitoreo de ir. A continuación, tengo que averiguar la parte dios.

Otros consejos

Estoy un poco tarde a la fiesta, pero pensé que había puesto lo que funcionó para mí. Esencialmente, he fijado dios para controlar Redis y resque. Si no se están ejecutando ya, Dios los comienza a subir. Entonces, tengo una tarea rake que se ejecute después de un despliegue Capistrano que sale de mis trabajadores resque. Una vez que los trabajadores se dejan, dios comenzará a nuevos trabajadores para que estén ejecutando la última base de código.

Aquí está mi valoración crítica completa de cómo uso en la producción resque:

http://thomasmango.com/2010/05/27/resque- en-producción

Yo sólo di cuenta de esto la noche anterior, para Capistrano se debe utilizar san_juan , entonces me gusta el uso de Dios para administrar la implementación de los trabajadores. En cuanto a sobrevivir a un reinicio, no estoy seguro, pero reanudo cada 6 meses así que no estoy demasiado preocupado.

A pesar de que sugieren diferentes formas de ponerlo en marcha, esto es lo que funcionó más fácil para mí. (Dentro de su deploy.rb)

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

Para gestionar cuando se ejecuta, en otro servidor, etc, que cubre que en el href="https://github.com/resque/resque#configuration" rel="nofollow noreferrer"> sección de la README.

Yo uso de pasajeros en mi corte, por lo que fue relativamente fácil, sólo es necesario tener un archivo config.ru este modo:

require 'resque/server'

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

Para mi archivo de host virtual que tengo:

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

Además, una nota rápida. Asegúrese de que la tarea overide resque:setup rastrillo, que le ahorrará un montón de tiempo para el desove nuevos trabajadores con Dios.

Me encontré con un montón de problemas, por lo que si necesita más ayuda, simplemente enviar un comentario.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top