Chiliproject / redmine:无法在初始化时启动精简版

Chiliproject / redmine:无法在初始化时启动精简版

我的任务是将 chiliproject 实例重新上线。它运行在 CentOS 6(64 位)服务器上。问题是,我对 Ruby 一无所知,而且我的 Linux 知识也并不比这更高级;我完全不知道从哪里开始。

当我在浏览器上加载页面时,以下内容被写入/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"

我从 IRC 上的 #chiliproject 获得了一些帮助:

thin是一个应用服务器,(就您而言)似乎负责运行实际的 chiliproject 代码。它必须与 nginx 分开启动,然后(根据您的配置)在 /var/run/redmine/sockets/thin.3.sock 处创建一个监听套接字,您的 nginx 将连接转发到该套接字。您可能已经有一个单独的 Thin 初始化脚本。或者您可能必须使用脚本/服务器或 chiliproject 目录中的 Thin 可执行文件来启动它。您可能在某个地方有一个 Thin 配置文件(类似于 redmine.yml,例如在 /etc/thin 中),它应该包含(以人类可读的形式)一些 Thin 的配置设置,包括套接字位置、您的 chiliproject 目录和其他内容。您可以通过运行来启动 Thinthin start -C /etc/thin/redmine.yml

这是我的/etc/thin/redmine.yml(此目录中唯一的文件):

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

下面是/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

:

没有/usr/local/rvm/bin/bootup_thin文件。

我重新启动机器并运行,ps aux | grep thin但没有显示任何内容(除了 grep 本身)。

如果我执行,start -C /etc/thin/redmine.yml屏幕上会显示文本输出,Thin 启动,我可以浏览网站。如果我重新启动机器,尽管有文件,服务也无法正确加载init.d。此文件正在执行,因为我已touch /var/log/teststart)子句上放置一行,并且已创建文件。我还在> /var/log/thin_output启动行的末尾附加了内容,但它创建了一个空文件,日志thin未显示它已启动。

包括start -C /etc/thin/redmine.yml末尾的/etc/rc.local也没有任何效果。

的输出type thin

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

如果我输入,/etc/init.d/thin start它将以正常输出开始:

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

在聊天中,我被要求粘贴的输出find -L /etc/ -samefile /etc/init.d/thin是:

/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 on按照这里的答案中的建议进行了操作,并且chkconfig -l thin输出

细 0:关闭 1:关闭 2:打开 3:打开 4:打开 5:打开 6:关闭

并且输出find -L /etc/ -samefile /etc/init.d/thin更改为/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;但是当我重新启动时,thin 仍然没有运行。

有人建议我比较不同运行级别的环境变量,所以我添加了printenv > /var/log/printenv.log一行/etc/rc.d/init.d/thin并将其与 CLI 上的输出进行了比较printenv。结果如下:

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

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

答案1

您的环境变量似乎表明您的服务器正在使用Ruby 版本管理器

Ruby 版本管理器,通常缩写为 RVM,是一个类似 Unix 的软件平台,旨在管理同一设备上的多个 Ruby 安装。

整个 ruby​​ 环境(包括 Ruby 解释器、已安装的 RubyGems 和文档)均已分区。然后可以在不同版本之间切换,以便开发人员能够处理具有不同版本要求的多个项目。

显然,RVM 不包含在您的启动环境中。您可以通过重新安装服务轻松解决此问题:

首先,将你的 RVM 更新到最新版本

rvm 趋于稳定

然后执行以下步骤

  1. 为 Thin 创建 init.d 条目

     sudo thin install 
    
  2. 设置一些默认值

     sudo /usr/sbin/update-rc.d -f thin defaults 
    
  3. 为你的 Rails 应用生成启动配置

     sudo thin config -C /etc/thin/<appname>.yml -c /var/rails/<appdir> --servers 4 -e production
    
  4. 生成 rvm 包装器脚本

     rvm wrapper <rubyversion>@<gemset> bootup thin
    
  5. 如果你使用全局 gemset,你可以使用

     rvm wrapper ruby-1.9.2-p125 bootup thin
    
  6. 编辑薄初始化

     sudo nano /etc/init.d/thin
    
  7. 更改原始加载程序

     DAEMON=/usr/local/rvm/gems/ruby-<rubyversion>-<rubyrevision>@<gemset>/bin/thin
    
  8. 指向 rvm 包装器

     DAEMON=/usr/local/bin/bootup_thin
    
  9. 启动它

     sudo /etc/init.d/thin start
    

现在它应该在您的系统启动时启动。

来源:https://stackoverflow.com/a/3376785/792066

相关内容