Я хочу иметь возможность запускать и останавливать сервер nginx на экземпляре Ubuntu EC2 с Fabric.
В моем fabfile.py есть два скрипта:
def start_nginx():
sudo('/etc/init.d/nginx start')
#also tried this: run('sudo /etc/init.d/nginx start')
def stop_nginx():
sudo('/etc/init.d/nginx stop')
Похоже, start_nginx () работает без ошибок (* Запуск сервера Nginx ... / ... выполнено.), Но не запускает сервер (или сразу умирает).
Если я подключусь к экземпляру по SSH, это отлично запустит nginx:
sudo /etc/init.d/nginx start
Сценарий stop_nginx () Fabric удаленно останавливает сервер.
Я скомпилировал nginx из исходников, используя этот http://nginx.org/download/nginx-1.1.9.tar.gz и используя этот скрипт в /etc/init.d: https://github.com/JasonGiedymin/nginx-init-ubuntu/blob/master/nginx. Единственное, что я изменил, это эту строку:
DAEMON=/usr/local/sbin/nginx
к
DAEMON=/usr/sbin/nginx
потому что это путь, который я использовал, когда я ./configure-d свою компиляцию.
Кто-нибудь знает, почему сценарий инициализации ведет себя по-другому при вызове из Fabric?
Я обнаружил, что если я использую псевдотерминал на пульте дистанционного управления, он работает! Это правильный сценарий:
def start_nginx():
sudo('/etc/init.d/nginx start', pty=False)