我希望能够使用 Fabric 在 Ubuntu EC2 实例上启动和停止 nginx 服务器。
我的 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 调用时初始化脚本的行为会有所不同?
答案1
我发现如果我在远程使用伪终端,它就可以工作!这是正确的脚本:
def start_nginx():
sudo('/etc/init.d/nginx start', pty=False)