Estou tentando configurar um servidor RhodeCode no Ubuntu 12.04. Eu tenho tudo instalado em um virtualenv e tudo funciona corretamente quando eu o executo a partir do console ( paster serve production.ini
).
Eu escrevi um script init.d para iniciá-lo na inicialização, mas parece que não funciona. Quando executo sudo /etc/init.d/rhodecode start
manualmente, vejo "Iniciando o RhodeCode" ecoado no console e tudo funciona. No entanto, se eu reiniciar, ou se eu usar sudo service rhodecode start
, vejo a mensagem ecoada no console, mas os processos do Python não estão em execução.
Eu instalei o script usando update-rc.d rhodecode defaults
.
Depois de pesquisar como alcançar isso, as fontes que encontrei sugeriram que eu não precise executar source /usr/rhode/venv
se eu executar o python diretamente do diretório virtualenv. Executar com sucesso isso a partir do console sem ativar qualquer virtualenv primeiro parece apoiar esta teoria. A página virtualenv parece confirmar isso :
If you directly run a script or the python interpreter from the virtualenv's bin/ directory (e.g. path/to/env/bin/pip or /path/to/env/bin/python script.py) there's no need for activation.
Para mais detalhes sobre como eu configurei o servidor, esta Gist mostra minhas anotações sobre o que eu fiz até agora: Instalando o RhodeCode 1.3.6 no Ubuntu Server 12.04
/etc/init.d/rhodecode
#!/bin/sh
### BEGIN INIT INFO
# Provides: rhodecode
# Required-Start: $all
# Required-Stop: $all
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Starts RhodeCode
### END INIT INFO
USER=rhodeuser
VENV_DIR=/usr/rhode/venv
DATA_DIR=/usr/rhode/data
CELERY_ARGS="$VENV_DIR/bin/paster celeryd $DATA_DIR/production.ini"
RHODECODE_ARGS="$VENV_DIR/bin/paster serve $DATA_DIR/production.ini"
CELERY_PID_FILE=/var/run/celeryd.pid
RHODECODE_PID_FILE=/var/run/rhodecode.pid
start_celery() {
/sbin/start-stop-daemon \
--start \
--background \
--chuid $USER \
--pidfile $CELERY_PID_FILE \
--exec $VENV_DIR/bin/python -- $CELERY_ARGS
}
start_rhodecode() {
/sbin/start-stop-daemon \
--start \
--background \
--chuid $USER \
--pidfile $RHODECODE_PID_FILE \
--exec $VENV_DIR/bin/python -- $RHODECODE_ARGS
}
stop() {
/sbin/start-stop-daemon \
--stop \
--user $USER
}
case "$1" in
start)
echo "Starting Celery"
start_celery
echo "Starting RhodeCode"
start_rhodecode
;;
stop)
echo "Stopping RhodeCode and Celery"
stop
;;
restart)
echo "Stopping RhodeCode and Celery"
stop
echo "Starting Celery"
start_celery
echo "Starting RhodeCode"
start_rhodecode
;;
*)
exit 2
;;
esac
exit 0