EDIT: Vì một số lý do, một nửa bài đăng của tôi bị cắt ngắn, không chắc chuyện gì đã xảy ra. Tôi sẽ cập nhật sớm và sẽ đăng rằng nó được cập nhật ở trên cùng.
EDIT: Tôi đã cập nhật bài viết một lần nữa, xin lỗi vì câu hỏi chưa hoàn chỉnh.
EDIT (8:55 PM EST 10/10/2011): Tôi đã cập nhật /srv/rhodecode/start.sh như Steven đề xuất, vẫn không có niềm vui. Nó tiếp tục treo như vậy:
[lpeabody@vcs rhodecode]$ sudo /etc/init.d/rhodecode-server start
Starting rhodecode-server:
Tôi đã cập nhật các tập lệnh bên dưới để hiển thị các thay đổi.
Tôi chưa bao giờ viết shell hay script bash trong đời. Tôi đang cố gắng cài đặt RhodeCode trên CentOS và có các tập lệnh init cho Debian và Gentoo, nhưng không phải cho RedHat / CentOS, điều đó thật điên rồ với tôi. Vì vậy, tôi cần phải viết một vì môi trường máy chủ của chúng tôi bị hạn chế chạy CentOS 5. Nguồn cho dự án có thể được tìm thấy tại Bitbucket tại đây .
Ý tưởng là chạy RhodeCode w / Celery và RabbitMQ. Tất cả được viết bằng Python và tôi có môi trường trong bộ chứa ảo riêng biệt bằng virtualenv. Tôi có ý tưởng cho kịch bản shell ở đây .
Tôi đã tạo một người dùng hệ thống có tên rhodecode và tạo thư mục / var / run / rhodecode và nó thuộc sở hữu của rhodecode. Tôi cũng đã tạo / var / www / rhodecode nơi sản xuất.ini, cũng như /srv/rhodecode/start.sh, tất cả đều thuộc sở hữu của rhodecode.
Quyền:
[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
Tôi có các tập lệnh bash và shell sau đây.
/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
Khi tôi chạy sudo /etc/init.d/rhodecode-server start
và sau đó chạy ps -aux | grep paster
, tôi có thể thấy paster serve production.ini
lệnh từ /srv/rhodecode/start.sh đã đi qua và đang chạy với id người dùng của rhodecode (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
Tuy nhiên, không có tệp pid nào được tạo, vì vậy tôi không thể dừng máy chủ khỏi tập lệnh init của mình. Tôi không chắc tại sao daemon không tạo ra pidfile. Đường dẫn đến tệp pid là hợp lệ và quyền là chính xác. Suy nghĩ?
/var/run/rhodecode/pid
chính xác cho người dùng này đang chạy như? Đối với vấn đề đó, biến đó có đúng hay không /var/run/rhodecode.pid
?
sh -x /etc/init.d/rhodecode-server start
?
daemon --pidfile
chỉ xác định nơi tập tin pid là. các chức năng trong CentOS dường như không có --make-pidfile
tùy chọn bắt buộc