Я пытался перебрать документы и примеры, чтобы мой Django работал через upstart, чтобы он мог работать постоянно, но я не могу.
Вот мой файл конфигурации upstart, расположенный по адресу/etc/init/myapp.conf
:
start on startup
#expect daemon
#respawn
console output
script
chdir /app/env/bin
exec source activate
exec /app/env/bin/python /app/src/manage.py runserver 0.0.0.0:8000 > /dev/null 2>&1 &
end script
Когда я набираю sudo service myapp start
, консоль говорит, что она запустилась, но, похоже, не работает.
Можно ли увидеть некоторую отладкувывод, чтобы увидеть, что идет не так?Мне нужно запустить мое приложение Django от имени другого пользователя - т.е. djangouser
.Как я могу это сделать?
(я комментировал некоторые строки, чтобы проверить, где работает служба).Это не для производственного использования, а только для внутреннего использования.
Спасибо.
Правка №1:
Я обернул обе свои команды в простой скриптна /app/run.sh
#!/bin/bash
cd /app/env/bin
source activate
cd /app/src
python manage.py runserver 0.0.0.0:8000 > /dev/null 2>&1 &
.. и я изменил свой /etc/init/myapp.conf
на
start on startup
expect daemon
exec su - djangouser -c "bash /app/run.sh"
При выполнении sudo service myapp start
- приложение запускается, но PID неверен, и яне могу убить его с помощью sudo service myapp stop
Есть идеи?