Chiliproject / Redmine: Thin kann beim Init nicht gestartet werden

Chiliproject / Redmine: Thin kann beim Init nicht gestartet werden

Ich wurde damit beauftragt, eine Chiliproject-Instanz wieder online zu bringen. Sie läuft auf einem CentOS 6-Server (64 Bit). Das Problem ist, dass ich absolut keine Ahnung von Ruby habe und meine Linux-Kenntnisse auch nicht viel weiter fortgeschritten sind. Ich habe absolut keine Ahnung, wo ich anfangen soll.

Wenn ich die Seite in einem Browser lade, wird Folgendes geschrieben /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"

Ich habe von #chiliproject im IRC etwas Hilfe bekommen:

thinist ein App-Server, der (in Ihrem Fall) die Aufgabe zu haben scheint, den eigentlichen Chiliproject-Code auszuführen. Er muss separat von nginx gestartet werden und sollte dann (gemäß Ihrer Konfiguration) einen Listening-Socket unter /var/run/redmine/sockets/thin.3.sock erstellen, an den Ihr nginx Verbindungen weiterleitet. Möglicherweise haben Sie bereits ein separates Init-Skript für Thin. Oder Sie müssen es möglicherweise mit script/server oder der Thin-ausführbaren Datei in Ihrem Chiliproject-Verzeichnis starten. Sie haben wahrscheinlich irgendwo eine Thin-Konfigurationsdatei (so etwas wie redmine.yml, z. B. in /etc/thin), die (in menschenlesbarer Form) einige Konfigurationseinstellungen für Thin enthalten sollte, einschließlich des Socket-Speicherorts, Ihres Chiliproject-Verzeichnisses und anderer Dinge. Sie können Thin starten, indem Sie Folgendes ausführen:thin start -C /etc/thin/redmine.yml

Hier ist meine /etc/thin/redmine.yml(die einzige Datei in diesem Verzeichnis):

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

Und hier ist /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

:

Es ist keine /usr/local/rvm/bin/bootup_thinDatei vorhanden.

Ich starte die Maschine neu und beim Ausführen ps aux | grep thinwird mir nichts angezeigt (außer dem grep selbst).

Wenn ich es ausführe, start -C /etc/thin/redmine.ymlerhalte ich eine Textausgabe auf dem Bildschirm und Thin startet und ich kann die Site durchsuchen. Wenn ich den Computer neu starte, wird der Dienst trotz der init.dDatei nicht richtig geladen. Diese Datei wird ausgeführt, weil ich eine touch /var/log/testZeile in die start)Klausel eingefügt habe und die Datei erstellt wird. Ich habe auch > /var/log/thin_outputan das Ende der Startzeile angehängt, aber es wird eine leere Datei erstellt und die thinProtokolle zeigen nicht, dass sie gestartet wird.

Auch das Einschließen start -C /etc/thin/redmine.ymlam Ende /etc/rc.localhat keine Auswirkung.

Die Ausgabe von type thinist

thin ist /usr/local/rvm/gems/ruby-1.9.2-p290/bin/thin

Wenn ich es eingebe, /etc/init.d/thin startbeginnt es mit einer normalen Ausgabe:

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

Ich wurde im Chat gebeten, die Ausgabe von einzufügen find -L /etc/ -samefile /etc/init.d/thin. Sie lautet:

/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

sudo chkconfig thin onIch habe es wie in einer Antwort hier vorgeschlagen durchgeführt und chkconfig -l thindie Ergebnisse

dünn 0:aus 1:aus 2:an 3:an 4:an 5:an 6:aus

und die Ausgabe find -L /etc/ -samefile /etc/init.d/thinändert sich zu /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; aber wenn ich neu starte, läuft Thin immer noch nicht.

Jemand hat mir vorgeschlagen, die Umgebungsvariablen auf verschiedenen Runlevels zu vergleichen. Ich habe also printenv > /var/log/printenv.logeine Zeile von eingefügt /etc/rc.d/init.d/thinund sie mit der Ausgabe von printenvauf der CLI verglichen. Hier sind die Ergebnisse:

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

Und

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

Antwort1

Ihre Umgebungsvariablen scheinen darauf hinzudeuten, dass Ihr Server dieRuby Version Manager:

Ruby Version Manager, oft als RVM abgekürzt, ist eine Unix-ähnliche Softwareplattform zur Verwaltung mehrerer Ruby-Installationen auf demselben Gerät.

Die gesamte Ruby-Umgebung inklusive Ruby-Interpreter, installierten RubyGems und Dokumentation ist partitioniert. Die verschiedenen Versionen können dann umgeschaltet werden, um einem Entwickler die Arbeit an mehreren Projekten mit unterschiedlichen Versionsanforderungen zu ermöglichen.

Offenbar ist RVM nicht in Ihrer Boot-Umgebung enthalten. Sie können das Problem leicht lösen, indem Sie den Dienst erneut installieren:

Aktualisieren Sie zunächst Ihr RVM auf die neueste Version

RVM stabilisieren

Führen Sie dann diese Schritte aus

  1. init.d-Eintrag für Thin erstellen

     sudo thin install 
    
  2. Richten Sie einige Standardeinstellungen ein

     sudo /usr/sbin/update-rc.d -f thin defaults 
    
  3. Generieren Sie eine Boot-Konfiguration für Ihre Rails-App

     sudo thin config -C /etc/thin/<appname>.yml -c /var/rails/<appdir> --servers 4 -e production
    
  4. RVM-Wrapper-Skript generieren

     rvm wrapper <rubyversion>@<gemset> bootup thin
    
  5. Wenn Sie ein globales Gemset verwenden, können Sie einfach

     rvm wrapper ruby-1.9.2-p125 bootup thin
    
  6. thin init bearbeiten

     sudo nano /etc/init.d/thin
    
  7. Ändern Sie den ursprünglichen Loader

     DAEMON=/usr/local/rvm/gems/ruby-<rubyversion>-<rubyrevision>@<gemset>/bin/thin
    
  8. um stattdessen auf den RVM-Wrapper zu verweisen

     DAEMON=/usr/local/bin/bootup_thin
    
  9. Fang an

     sudo /etc/init.d/thin start
    

Jetzt sollte es beim Hochfahren Ihres Systems starten.

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

verwandte Informationen