Chiliproject/redmine: no se puede iniciar de forma delgada en el inicio

Chiliproject/redmine: no se puede iniciar de forma delgada en el inicio

Se me asignó la tarea de volver a poner en línea una instancia de chiliproject. Se ejecuta en un servidor CentOS 6 (64 bits). El problema es que no conozco absolutamente nada de Ruby y mi conocimiento de Linux no es mucho más avanzado que eso; No tengo absolutamente ninguna idea de por dónde empezar.

Cuando cargo la página en un navegador, se escribe lo siguiente en /var/log/nginx/redmine-proxy-error:

2014/01/13 11:52:06 [crit] 1865#0: *675 connect() to unix:/var/run/redmine/sockets/thin.3.sock failed (2: No such file or directory) while connecting to upstream, client: IPADDRESSHERE, server: REDACTED.com.br, request: "GET / HTTP/1.1", upstream: "http://unix:/var/run/redmine/sockets/thin.3.sock:/", host: "REDACTED.com.br"
2014/01/13 11:52:06 [crit] 1865#0: *675 connect() to unix:/var/run/redmine/sockets/thin.0.sock failed (2: No such file or directory) while connecting to upstream, client: IPADDRESSHERE, server: REDACTED.com.br, request: "GET / HTTP/1.1", upstream: "http://unix:/var/run/redmine/sockets/thin.0.sock:/", host: "REDACTED.com.br"
2014/01/13 11:52:06 [crit] 1865#0: *675 connect() to unix:/var/run/redmine/sockets/thin.1.sock failed (2: No such file or directory) while connecting to upstream, client: IPADDRESSHERE, server: REDACTED.com.br, request: "GET / HTTP/1.1", upstream: "http://unix:/var/run/redmine/sockets/thin.1.sock:/", host: "REDACTED.com.br"
2014/01/13 11:52:06 [crit] 1865#0: *675 connect() to unix:/var/run/redmine/sockets/thin.2.sock failed (2: No such file or directory) while connecting to upstream, client: IPADDRESSHERE, server: REDACTED.com.br, request: "GET / HTTP/1.1", upstream: "http://unix:/var/run/redmine/sockets/thin.2.sock:/", host: "REDACTED.com.br"

Recibí ayuda de #chiliproject en IRC:

thines un servidor de aplicaciones que (en su caso) parece tener la tarea de ejecutar el código real de chiliproject. Debe iniciarse por separado desde nginx y luego (de acuerdo con su configuración) debe crear un conector de escucha en /var/run/redmine/sockets/thin.3.sock a donde su nginx reenvía las conexiones. Es posible que ya tenga un script de inicio separado para Thin. De lo contrario, es posible que tengas que iniciarlo usando un script/servidor o el ejecutable delgado dentro de tu directorio chiliproject. Probablemente tenga un archivo de configuración delgado en algún lugar (algo como redmine.yml, por ejemplo, en /etc/thin), debería contener (en forma legible por humanos) algunas configuraciones para delgado, incluida la ubicación del socket, su directorio chiliproject y otras cosas. Puedes empezar delgado corriendothin start -C /etc/thin/redmine.yml

Aquí está mi /etc/thin/redmine.yml(el único archivo en este directorio):

--- 
chdir: /srv/www/redmine/chiliproject
environment: production
timeout: 30
log: /var/log/redmine/thin.log
pid: /var/run/redmine/pids/thin.pid
max_conns: 1024
max_persistent_conns: 100
require: []

wait: 30
servers: 4
socket: /var/run/redmine/sockets/thin.sock
daemonize: true
user: redmine
group: redmine

Y aquí está /etc/rc.d/init.d/thin:

#!/usr/bin/env sh
### BEGIN INIT INFO
# Provides:          thin
# Required-Start:    $local_fs $remote_fs
# Required-Stop:     $local_fs $remote_fs
# Default-Start:     2 3 4 5
# Default-Stop:      S 0 1 6
# Short-Description: thin initscript
# Description:       thin
### END INIT INFO

# Original author: Forrest Robertson

# Do NOT "set -e"

DAEMON=/usr/local/rvm/gems/ruby-1.9.2-p290/bin/thin
#DAEMON=/usr/local/rvm/bin/bootup_thin
SCRIPT_NAME=/etc/init.d/thin
#CONFIG_PATH=/etc/thin
CONFIG_PATH=/etc/thin/redmine.yml

# Exit if the package is not installed
[ -x "$DAEMON" ] || exit 0

case "$1" in
  start)
    #$DAEMON start --all $CONFIG_PATH
    $DAEMON start -C /etc/thin/redmine.yml
    ;;
  stop)
    $DAEMON stop --all $CONFIG_PATH
    ;;
  restart)
    $DAEMON restart --all $CONFIG_PATH
    ;;
  *)
    echo "Usage: $SCRIPT_NAME {start|stop|restart}" >&2
    exit 3
    ;;
esac

:

No hay ningún /usr/local/rvm/bin/bootup_thinarchivo.

Reinicio la máquina y la ejecuto, ps aux | grep thinno me muestra nada (aparte del propio grep).

Si ejecuto, start -C /etc/thin/redmine.ymlobtengo una salida de texto en la pantalla y comienzos finos y puedo navegar por el sitio. Si reinicio la máquina, el servicio no se cargará correctamente, a pesar del init.darchivo. Este archivo se está ejecutando porque he colocado una touch /var/log/testlínea en la start)cláusula y se crea el archivo. También lo agregué > /var/log/thin_outputal final de la línea de inicio, pero crea un archivo vacío y los thinregistros no muestran que se haya iniciado.

Incluir start -C /etc/thin/redmine.ymlal final de /etc/rc.localtampoco tiene ningún efecto.

La salida de type thines

delgado es /usr/local/rvm/gems/ruby-1.9.2-p290/bin/thin

Si escribo, /etc/init.d/thin startcomenzará con una salida normal:

Starting server on /var/run/redmine/sockets/thin.0.sock ...
Starting server on /var/run/redmine/sockets/thin.1.sock ...
Starting server on /var/run/redmine/sockets/thin.2.sock ...
Starting server on /var/run/redmine/sockets/thin.3.sock ...

Me pidieron en el chat que pegara el resultado de find -L /etc/ -samefile /etc/init.d/thin, es:

/etc/rc2.d/K50thin
/etc/rc0.d/K50thin
/etc/rc5.d/K50thin
/etc/init.d/thin
/etc/rc.d/rc2.d/K50thin
/etc/rc.d/rc0.d/K50thin
/etc/rc.d/rc5.d/K50thin
/etc/rc.d/init.d/thin
/etc/rc.d/rc3.d/K50thin
/etc/rc.d/rc1.d/K50thin
/etc/rc.d/rc4.d/K50thin
/etc/rc.d/rc6.d/K50thin
/etc/rc3.d/K50thin
/etc/rc1.d/K50thin
/etc/rc4.d/K50thin
/etc/rc6.d/K50thin

Realicé sudo chkconfig thin onlo sugerido en una respuesta aquí, y chkconfig -l thinlos resultados

delgado 0: apagado 1: apagado 2: encendido 3: encendido 4: encendido 5: encendido 6: apagado

y la salida de find -L /etc/ -samefile /etc/init.d/thincambios a /etc/rc2.d/S50thin /etc/rc0.d/K50thin /etc/rc5.d/S50thin /etc/init.d/thin /etc/rc.d/rc2.d/S50thin /etc/rc.d/rc0.d/K50thin /etc/rc.d/rc5.d/S50thin /etc/rc.d/init.d/thin /etc/rc.d/rc3.d/S50thin /etc/rc.d/rc1.d/K50thin /etc/rc.d/rc4.d/S50thin /etc/rc.d/rc6.d/K50thin /etc/rc3.d/S50thin /etc/rc1.d/K50thin /etc/rc4.d/S50thin /etc/rc6.d/K50thin; pero cuando reinicio, Thin todavía no se ejecuta.

Alguien me sugirió comparar las variables de entorno en diferentes niveles de ejecución, así que incluí printenv > /var/log/printenv.loguna línea de /etc/rc.d/init.d/thiny la comparé con la salida de printenven la CLI. Aquí están los resultados:

TERM=linux
PATH=/sbin:/usr/sbin:/bin:/usr/bin
RUNLEVEL=3
runlevel=3
PWD=/
LANGSH_SOURCED=1
LANG=pt_BR.UTF-8
PREVLEVEL=N
previous=N
CONSOLETYPE=vt
SHLVL=2
UPSTART_INSTANCE=
UPSTART_EVENTS=runlevel
UPSTART_JOB=rc
_=/usr/bin/printenv

y

rvm_bin_path=/usr/local/rvm/bin
HOSTNAME=redacted.com.br
GEM_HOME=/usr/local/rvm/gems/ruby-1.9.2-p290
TERM=xterm
SHELL=/bin/bash
HISTSIZE=1000
IRBRC=/usr/local/rvm/rubies/ruby-1.9.2-p290/.irbrc
SSH_CLIENT=REDACTED
OLDPWD=/etc
MY_RUBY_HOME=/usr/local/rvm/rubies/ruby-1.9.2-p290
SSH_TTY=/dev/pts/0
USER=root
LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lz=01;31:*.xz=01;31:*.bz2=01;31:*.tbz=01;31:*.tbz2=01;31:*.bz=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.axa=01;36:*.oga=01;36:*.spx=01;36:*.xspf=01;36:
__array_start=0
rvm_path=/usr/local/rvm
escape_flag=1
rvm_prefix=/usr/local
MAIL=/var/spool/mail/root
PATH=/usr/local/rvm/gems/ruby-1.9.2-p290/bin:/usr/local/rvm/gems/ruby-1.9.2-p290@global/bin:/usr/local/rvm/rubies/ruby-1.9.2-p290/bin:/usr/local/rvm/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
PWD=/
XMODIFIERS=@im=ibus
LANG=pt_BR.utf8
_second=1
HISTCONTROL=ignoredups
rvm_version=1.16.17 (stable)
SHLVL=1
HOME=/root
_first=0
LOGNAME=root
CVS_RSH=ssh
GEM_PATH=/usr/local/rvm/gems/ruby-1.9.2-p290:/usr/local/rvm/gems/ruby-1.9.2-p290@global
SSH_CONNECTION=REDACTED
LESSOPEN=|/usr/bin/lesspipe.sh %s
RUBY_VERSION=ruby-1.9.2-p290
G_BROKEN_FILENAMES=1
_=/usr/bin/printenv

Respuesta1

Las variables de su entorno parecen indicar que su servidor está utilizando elAdministrador de versiones de Ruby:

Ruby Version Manager, a menudo abreviado como RVM, es una plataforma de software similar a Unix diseñada para administrar múltiples instalaciones de Ruby en el mismo dispositivo.

Todo el entorno Ruby, incluido el intérprete Ruby, los RubyGems instalados y la documentación, está particionado. Luego, se pueden cambiar las diferentes versiones para permitir que un desarrollador trabaje en varios proyectos con diferentes requisitos de versión.

Aparentemente, RVM no está incluido en su entorno de arranque. Puedes solucionarlo fácilmente reinstalando el servicio nuevamente:

Primero, actualice su RVM a la última versión

rvm se estabiliza

Luego, realiza estos pasos.

  1. crear entrada init.d para delgada

     sudo thin install 
    
  2. configurar algunos valores predeterminados

     sudo /usr/sbin/update-rc.d -f thin defaults 
    
  3. generar configuración de arranque para su aplicación Rails

     sudo thin config -C /etc/thin/<appname>.yml -c /var/rails/<appdir> --servers 4 -e production
    
  4. generar script contenedor rvm

     rvm wrapper <rubyversion>@<gemset> bootup thin
    
  5. Si estás usando un conjunto de gemas global, puedes usar

     rvm wrapper ruby-1.9.2-p125 bootup thin
    
  6. editar inicio fino

     sudo nano /etc/init.d/thin
    
  7. cambiar el cargador original

     DAEMON=/usr/local/rvm/gems/ruby-<rubyversion>-<rubyrevision>@<gemset>/bin/thin
    
  8. para apuntar al contenedor rvm en su lugar

     DAEMON=/usr/local/bin/bootup_thin
    
  9. ponerlo en marcha

     sudo /etc/init.d/thin start
    

Ahora debería comenzar cuando su sistema se inicie.

Fuente:https://stackoverflow.com/a/3376785/792066

información relacionada