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 startvà sau đó chạy ps -aux | grep paster, tôi có thể thấy paster serve production.inilệ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/pidchí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 --pidfilechỉ 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-pidfiletùy chọn bắt buộc