
나는 chilliproject 인스턴스를 다시 온라인에 두는 임무를 맡았습니다. 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
(귀하의 경우) 실제 chilliproject 코드를 실행하는 작업을 맡은 것으로 보이는 앱 서버입니다. nginx에서 별도로 시작해야 하며 그런 다음 (구성에 따라) nginx가 연결을 전달하는 /var/run/redmine/sockets/thin.3.sock에 청취 소켓을 만들어야 합니다. 이미 Thin에 대한 별도의 초기화 스크립트가 있을 수 있습니다. 아니면 스크립트/서버나 chilliproject 디렉토리 내의 씬 실행 파일을 사용하여 시작해야 할 수도 있습니다. 아마도 어딘가에(redmine.yml과 같은 /etc/thin에 있는) 얇은 구성 파일이 있을 것입니다. 여기에는 소켓 위치, chilliproject 디렉터리 및 기타 항목을 포함하여 Thin에 대한 일부 구성 설정이 (사람이 읽을 수 있는 형식으로) 포함되어야 합니다. 실행하여 얇게 시작할 수 있습니다.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
아무 것도 표시되지 않습니다(grep 자체 외에).
실행하면 start -C /etc/thin/redmine.yml
화면에 텍스트가 출력되고 씬 스타트(thin start)되며 사이트를 탐색할 수 있습니다. 컴퓨터를 재부팅하면 파일에도 불구하고 서비스가 제대로 로드되지 않습니다 init.d
. 절 touch /var/log/test
에 한 줄을 추가해 start)
파일이 생성되었기 때문에 이 파일이 실행되는 것입니다. > /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
한 줄에 포함하고 CLI /etc/rc.d/init.d/thin
의 출력과 비교했습니다 . 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
귀하의 환경 변수는 귀하의 서버가루비 버전 관리자:
종종 RVM으로 축약되는 Ruby 버전 관리자는 동일한 장치에서 여러 Ruby 설치를 관리하도록 설계된 유닉스 계열 소프트웨어 플랫폼입니다.
Ruby 인터프리터, 설치된 RubyGems 및 문서를 포함한 전체 Ruby 환경은 분할되어 있습니다. 그런 다음 개발자가 버전 요구 사항이 다른 여러 프로젝트에서 작업할 수 있도록 여러 버전을 전환할 수 있습니다.
분명히 RVM은 부팅 환경에 포함되어 있지 않습니다. 서비스를 다시 설치하면 쉽게 해결할 수 있습니다.
먼저 RVM을 최신 버전으로 업데이트하세요.
rvm이 안정되다
그런 다음 다음 단계를 수행하십시오.
Thin에 대한 init.d 항목 생성
sudo thin install
일부 기본값 설정
sudo /usr/sbin/update-rc.d -f thin defaults
Rails 앱의 부팅 구성 생성
sudo thin config -C /etc/thin/<appname>.yml -c /var/rails/<appdir> --servers 4 -e production
rvm 래퍼 스크립트 생성
rvm wrapper <rubyversion>@<gemset> bootup thin
전역 보석 세트를 사용하는 경우 다음을 사용할 수 있습니다.
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
이제 시스템이 부팅될 때 시작되어야 합니다.