편집 : 어떤 이유로 내 게시물의 절반이 잘 렸습니다. 무슨 일이 일어 났는지 확실하지 않습니다. 나는 곧 업데이트하고 여기에 맨 위에 업데이트된다고 게시 할 것입니다.
편집 : 게시물을 다시 업데이트했습니다. 불완전한 질문에 대해 죄송합니다.
편집 (8:55 PM EST 10/10/2011) : Steven이 제안한 것처럼 /srv/rhodecode/start.sh를 업데이트했지만 여전히 기쁨은 없습니다. 다음과 같이 계속 매달려 있습니다.
[lpeabody@vcs rhodecode]$ sudo /etc/init.d/rhodecode-server start
Starting rhodecode-server:
변경 사항을 표시하기 위해 아래 스크립트를 업데이트했습니다.
내 인생에서 쉘이나 bash 스크립트를 쓴 적이 없다. CentOS에 RhodeCode를 설치하려고하는데 데비안과 젠투에 대한 초기화 스크립트가 있지만 RedHat / CentOS에는 적합하지 않습니다. 서버 환경이 CentOS 5를 실행하도록 제한되어 있기 때문에 하나를 작성해야합니다. 프로젝트의 소스는 Bitbucket here 에서 찾을 수 있습니다 .
아이디어는 Celery 및 RabbitMQ와 RhodeCode를 실행하는 것입니다. 그것은 모두 파이썬으로 작성되었으며 virtualenv를 사용하는 별도의 가상 컨테이너에 환경이 있습니다. 나는 쉘 스크립트에 대한 아이디어를 가지고 여기를 .
rhodecode라는 시스템 사용자를 만들고 / var / run / rhodecode 디렉토리를 만들었으며 rhodecode가 소유하고 있습니다. 또한 production.ini가있는 / var / www / rhodecode와 /srv/rhodecode/start.sh를 만들었습니다. 모두 rhodecode가 소유하고 있습니다.
권한 :
[lpeabody@vcs run]$ ll -a /var/run/rhodecode
total 12
drwxr-xr-x 2 rhodecode rhodecode 4096 Oct 10 15:57 .
drwxr-xr-x 21 root root 4096 Oct 10 16:07 ..
[lpeabody@vcs run]$ ll -a /var/www/rhodecode
total 76
drwxr-xr-x 4 rhodecode rhodecode 4096 Oct 10 16:47 .
drwxr-xr-x 11 root root 4096 Oct 5 14:54 ..
drwxrwxr-x 3 rhodecode rhodecode 4096 Oct 5 19:40 data
-rw-r--r-- 1 rhodecode rhodecode 0 Oct 10 16:41 debug.log
-rw-r--r-- 1 rhodecode rhodecode 1466 Oct 10 16:41 error.log
-rw-rw-r-- 1 rhodecode rhodecode 6000 Oct 6 15:27 production.ini
drwxrwxr-x 2 rhodecode rhodecode 4096 Oct 5 18:37 repos
-rw-r--r-- 1 rhodecode rhodecode 44032 Oct 5 19:16 rhodecode.db
[lpeabody@vcs run]$ ll -a /srv/rhodecode/
total 16
drwxr-xr-x 2 rhodecode rhodecode 4096 Oct 10 16:40 .
drwxr-xr-x 4 root root 4096 Oct 7 14:40 ..
-rwxr-xr-x 1 rhodecode rhodecode 277 Oct 10 16:40 start.sh
다음 bash 및 shell 스크립트가 있습니다.
/srv/rhodecode/start.sh
#!/bin/bash
# run this as the rhodecode user!
WDIR=/var/www/rhodecode
VIRTUALENV_DIR=/opt/python_virtualenvironments/rhodecode-venv
export PYTHON_EGG_CACHE=/tmp/.python-eggs
source $VIRTUALENV_DIR/bin/activate
cd $WDIR
exec paster serve production.ini 1> debug.log 2> error.log
/etc/init.d/rhodecode-server
#!/bin/sh
#
# rhodecode-server RhodeCode server instance
#
#
# PATH=/sbin:/usr/sbin:/bin:/usr/bin
NAME=rhodecode-server
DESC=rhodecode-server
USER=rhodecode
PID_FILE=/var/run/rhodecode/pid
CMD=/srv/rhodecode/start.sh
LOCK_FILE=/var/lock/subsys/$NAME
. /etc/init.d/functions
RETVAL=0
remove_pid () {
rm -f ${PID_FILE}
}
start_rhodecode () {
daemon --user $USER --pidfile $PID_FILE $CMD
RETVAL=$?
[ $RETVAL -eq 0 ] && touch $LOCK_FILE
return $RETVAL
}
stop_rhodecode () {
killproc -p $PID_FILE
RETVAL=&?
rm -f $LOCK_FILE
rm -f $PID_FILE
return $RETVAL
}
restart_rhodecode () {
stop_rhodecode
start_rhodecode
RETVAL=$?
}
case "$1" in
start)
echo -n $"Starting $DESC: "
start_rhodecode
echo
;;
stop)
echo -n $"Stopping $DESC: "
stop_rhodecode
echo
;;
restart)
echo -n $"Restarting $DESC: "
restart_rhodecode
echo
;;
*)
echo $"Usage: $0 {start|stop|restart}"
RETVAL=1
;;
esac
exit $RETVAL
내가 실행 sudo /etc/init.d/rhodecode-server start
한 다음 실행 ps -aux | grep paster
하면 paster serve production.ini
/srv/rhodecode/start.sh 의 명령이 통과하여 rhodecode의 사용자 ID (102)로 실행되고 있음을 알 수 있습니다.
102 5222 0.7 7.8 144300 80988 ? Sl 16:08 0:00 /opt/python_virtualenvironments/rhodecode-venv/bin/python /opt/python_virtualenvironments/rhodecode-venv/bin/paster serve production.ini
그러나 pid 파일이 생성되지 않으므로 init 스크립트에서 서버를 중지 할 수 없습니다. 왜 데몬이 pidfile을 생성하지 않는지 잘 모르겠습니다. pid 파일의 경로가 유효하고 권한이 올바른지 생각?
/var/run/rhodecode/pid
현재 실행중인 사용자에게 올바른 권한 이 있습니까? 그 문제에 대해서는 그 변수가 정확 /var/run/rhodecode.pid
합니까?
sh -x /etc/init.d/rhodecode-server start
?
daemon --pidfile
pid 파일이있는 위치 만 지정합니다. CentOS의 기능에 필요한 --make-pidfile
옵션 이없는 것 같습니다