Запустить Python Server при запуске

Запустить Python Server при запуске

У меня есть несколько серверов на основе Python, которые мне нужно запустить, и я хотел бы, чтобы они запускались автоматически при запуске моего Ubuntu Server box. Каков наилучший способ запустить их таким образом?

Я надеялся, что смогу написать скрипт Bash и использовать Screen, чтобы запустить их в фоновом режиме, где я смогу время от времени проверять их, но где же

echo screen -d -m python

работает просто отлично,

echo screen -d -m `sudo python /home/matt/tornadoServer/tornadoDeploy.py`

не работает, без сообщений об ошибках. Это как-то связано с пробелами? Хотя я заключил его в обратные кавычки? Я также пробовал:

WEB="screen -d -m `sudo python /home/matt/tornadoServer/tornadoDeploy.py`"
echo $WEB

Как способ избежать пробелов, но не повезло. Какой способ скриптования Bash позволяет это сделать?

И, если скрипт Bash заработал, куда его можно поместить, чтобы он выполнялся при запуске?

решение1

Он терпит неудачу, потому что sudoзапрашивает пароль. Поскольку TTY не открыт, он просто ждет, когда вы его введете, или может, на самом деле, немедленно рухнуть. Если вы запускаете это как root, вам не нужно запускать его как sudo.

Однако, скорее всего, вам захочется изменить tornadoDeploy.py, чтобы он стал демоном, то есть отсоединился, чтобы он не запускался с открытым сеансом.библиотека python-daemonizeпредоставляет простые инструменты, позволяющие вам это сделать. Это устраняет необходимость иметь дело с экраном, при этом позволяя вам демонизировать процесс.

решение2

Помещать

sudo -n python /home/matt/tornadoServer/tornadoDeploy.py &

в файл /etc/rc.d/rc.local. Или любой другой эквивалент для вашего дистрибутива.

Предположим, что ваш скрипт — это хорошо работающий демон и вы настроили sudo так, чтобы для запуска скрипта не требовался пароль.

Читатьэтото скриптах запуска иэтото библиотеке демона python. Также, разве вам не нужно запускать tornadoза реальным http-сервером?

решение3

В Ubuntu (и Debian) способ заставить приложения запускаться во время загрузки — превратить их в системные службы с помощью update-rc.d. Инструкции см. здесь:http://www.debuntu.org/how-to-manage-services-with-update-rc.d

Помните, что все, что работает от имени root, представляет собой потенциальную уязвимость безопасности, особенно если другие пользователи могут вносить в него изменения.

решение4

Если вы запускаете его из rc.local, вам также необходимо отредактировать /etc/sudoers и закомментировать эту строку:

Требуются значения по умолчанию

Связанный контент