servidor rails proyecto modelo instalar iniciar ejecutar descargar crear ruby-on-rails ruby-on-rails-3 faye

ruby on rails - proyecto - Ejecute automáticamente el servidor Faye cuando inicie el servidor Rails



rails s (4)

En Ubuntu, debe usar el sistema de inicio de los sistemas operativos - Upstart.

user@host:~$ cat /etc/init/faye.conf description "Faye Upstart script" start on startup stop on shutdown respawn script env RAILS_ENV=production exec sudo -u deployuser -i /home/deployuser/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/bin/rackup /var/www/booko.com.au/booko/faye.ru -s thin -E production end script

No estoy contento con el método de llamar a Ruby ya que cambiará. Pero las ventajas son que se iniciará cuando se inicie el sistema y reaparecerá si muere o si lo MATAS.

Deje que Upstart se encargue de demonizar un proceso y asegurarse de que siga funcionando.

Actualmente tengo a Faye trabajando con mi aplicación Rails 3.0.9. Sin embargo tengo dos pestañas separadas abiertas en mi terminal. Una para el servidor Faye, y otra para el servidor Rails. ¿Cómo puedo integrarlos y ejecutar automáticamente el servidor Faye cuando se inicia Rails?

Para iniciar el servidor Faye, estoy ejecutando:

rackup faye.ru -s thin -E production

faye.ru

require ''faye'' faye_server = Faye::RackAdapter.new(:mount => ''/faye'') run faye_server

Por favor, hágamelo saber si necesita más información.


Escribí este script de shell en config / thin_example.sh

#!/bin/sh set -e # Feel free to change any of the following variables for your app: TIMEOUT=${TIMEOUT-60} APP_ROOT=/home/deployer/apps/example/current PID=$APP_ROOT/tmp/pids/thin.pid CMD="cd $APP_ROOT; bundle exec rackup -D -P $PID $APP_ROOT/config/faye.ru -s thin -E production" AS_USER=deployer set -u startme() { run "$CMD" } stopme() { run "pkill -f $PID" } run () { if [ "$(id -un)" = "$AS_USER" ]; then eval $1 else su -c "$1" - $AS_USER fi } case "$1" in start) startme ;; stop) stopme ;; restart) stopme; startme ;; *) echo "usage: $0 start|stop|restart" >&2 exit 1 ;; esac

Modificado libremente de las secuencias de comandos de unicornio que Ryan Bates utilizó en su despliegue de VPS (solo para profesionales) .

Hazlo ejecutable

chmod +x config/thin_example.sh

Necesitará un enlace simbólico a init.d (después de chmod + x ''ing para hacerlo ejecutable)

sudo ln -nfs /home/deployer/apps/example/current/config/thin_example.sh /etc/init.d/thin_example

Entonces si quieres que se inicie con el servidor.

sudo update-rc.d thin_example defaults

De lo contrario, debería poder /etc/init.d/thin_example [start|stop|restart] . Un punto importante que se debe tener en cuenta es que le estoy diciendo a un acumulador que comience en modo daemon (-D) y que configure explícitamente el PID para poder eliminarlo más tarde.


Hoy en día, solo uso Foreman para esto: https://github.com/ddollar/foreman

Al crear un Procfile, puede especificar qué demonios deben ejecutarse (con control de cuántos de cada uno de los que desea), y mantiene todo en una ventana de terminal (con una excelente codificación de colores de cada proceso). Incluso puede exportar a scripts upstart o init.d para producción, si su entorno está basado en debian.

Una vez que haya configurado todo el Procfile, todo lo que debe hacer es ejecutar: foreman start y usted está listo para las carreras. Lo uso para resque y faye.