我一直负责将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单独启动,然后应该(根据你的configuration)在/var/run/redmine/sockets/thin.3.sock创build一个监听套接字,你的nginx将转发连接。 您可能已经有一个单独的初始化脚本已经精简。 否则,您可能必须使用脚本/服务器或chiliproject目录中的瘦可执行文件启动它。 你可能有一个很薄的configuration文件(比如redmine.yml,例如/ etc / thin),它应该包含一些configuration设置(包括套接字位置,chiliproject目录和其他东西)。 您可以通过运行thin 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 ps aux | grep thin它显示我什么(除了grep本身)。
如果我执行start -C /etc/thin/redmine.yml我得到一个文本输出在屏幕上,瘦开始,我可以浏览该网站。 如果我重新启动机器,尽pipe有init.d文件,服务将无法正常加载。 该文件正在执行,因为我已经在start)子句中放置了一个touch /var/log/test行并创build了该文件。 我还在开始行的末尾添加了> /var/log/thin_output ,但它创build并清空文件,并且thin日志不显示正在启动。
在/etc/rc.local的末尾joinstart -C /etc/thin/redmine.yml也没有效果。
type thin的输出是
薄是/usr/local/rvm/gems/ruby-1.9.2-p290/bin/thin
如果我input/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的输出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
按照这里的答案build议,我执行了sudo chkconfig thin on ,并inputchkconfig -l thin
薄0:关1:关2:开3:开4:开5:开6:关
并且find -L /etc/ -samefile /etc/init.d/thin的输出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 ; 但是当我重新启动时,瘦仍然没有运行。
有人build议我比较不同运行级别的环境variables,因此我在/etc/rc.d/init.d/thin行中包含了printenv > /var/log/printenv.log ,并将它与printenv的输出进行比较CLI。 结果如下:
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
你的environmetvariables似乎表明你的服务器正在使用Ruby版本pipe理器 :
Ruby版本pipe理器(通常缩写为RVM)是一个类似Unix的软件平台,用于在同一设备上pipe理多个Ruby的安装。
包括Ruby解释器,安装的RubyGems和文档在内的整个ruby环境都是分区的。 然后可以切换不同的版本,使开发人员能够处理具有不同版本要求的多个项目。
显然,RVM不包含在引导环境中。 您可以轻松解决它重新安装服务:
首先,将您的RVM更新到最新版本
rvm稳定
然后,执行这些步骤
为精简创buildinit.d条目
sudo thin install
设置一些默认值
sudo /usr/sbin/update-rc.d -f thin defaults
为您的rails应用程序生成启动configuration
sudo thin config -C /etc/thin/<appname>.yml -c /var/rails/<appdir> --servers 4 -e production
生成rvm包装器脚本
rvm wrapper <rubyversion>@<gemset> bootup thin
如果您使用的是全局gemset,则可以使用
rvm wrapper ruby-1.9.2-p125 bootup thin
编辑瘦初始化
sudo nano /etc/init.d/thin
更改原始的加载器
DAEMON=/usr/local/rvm/gems/ruby-<rubyversion>-<rubyrevision>@<gemset>/bin/thin
指向rvm包装
DAEMON=/usr/local/bin/bootup_thin
启动它
sudo /etc/init.d/thin start
现在应该在系统启动时启动。
来源: https : //stackoverflow.com/a/3376785/792066