Pregunta

Estoy ejecutando Unicorn y estoy intentando que los reinicios sin tiempo de inactividad funcionen.

Hasta ahora todo es una salsa increíble, el proceso maestro bifurca e inicia 4 nuevos trabajadores, luego mata al anterior, todos están felices.

Nuestros scripts envían el siguiente comando para reiniciar Unicorn:

kill -s USR2 `cat /www/app/shared/pids/unicorn.pid`

A primera vista, todo se ve muy bien, pero resulta que Unicorn no está recargando Production.rb.(Cada vez que implementamos cambiamos el config.action_controller.asset_host valor a un nuevo punto final de contenedor CDN con nuestros activos precompilados en él).

Después de reiniciar Unicorn de esta manera, el host del activo todavía apunta a la versión anterior.haciendo un real reiniciar (es decir:detenga el proceso maestro, luego inicie unicorn nuevamente desde cero) recoge los nuevos cambios de configuración.

preload_app se establece en true en nuestro archivo de configuración de unicornio.

¿Alguna idea?

¿Fue útil?

Solución

Supongo que tus unicornios se están reiniciando en el antiguo directorio de producción en lugar del nuevo directorio de producción; en otras palabras, si tu directorio de trabajo en unicorn.rb es <capistrano_directory>/current, debes asegurarte de que se realice el enlace simbólico antes de intentar reiniciar los unicornios.

Esto explicaría por qué funciona detenerlos e iniciarlos manualmente:Presumiblemente, estás haciendo eso después de la implementación, lo que hace que se inicien en el directorio correcto.

¿En qué etapa de su proceso de implementación reinicia los unicornios?Debe asegurarse de que la señal USR2 se envíe después de que el directorio de la nueva versión tenga un enlace simbólico como actual.

Si esto no ayuda, ingrese su unicorn.rb y desplegar.rb;Hará que sea mucho más fácil depurar este problema.

Otros consejos

Manten eso en mente:su directorio de trabajo en unicorn.rb debería ser:/tu/cap/directorio/actual

NO ser:Archivo.expand_path("../..", ARCHIVO)

Porque el error de bifurcación del enlace suave de Unicorn y Linux:El enlace suave no puede funcionar bien.

Por ejemplo:

cd current #current es un enlace suave a otro directorio

... ...

cuando obtenemos nuestro directorio de trabajo, obtenemos la ruta absoluta, no la ruta en "actual"

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