重启fabric会导致我的supervisord服务停止运行

3
我有一个使用supervisord运行的tornado Web应用程序。我通过ssh手动启动、停止和重启Supervisord服务,它可以正常工作。我正在使用来自本地机器的fabric执行以下操作:
  1. 运行单元测试
  2. 提交/推送到我的git服务器
  3. 从开发服务器上拉取更改
  4. 重新启动Supervisord服务以更新应用程序
当我运行fabfile时,没有出现任何错误,但是我的服务器在运行后失效了。以下是我的fabfile代码:
from fabric.api import *
from fabric.context_managers import settings

def prepare_deploy():
    local('py.test')
    local('git add .')
    x = raw_input('what would you like your commit message to be?   ')
    local('git diff --quiet --exit-code --cached || git commit -m "' + x + '"')
    local('git push origin master')

def dev():
    prepare_deploy()
    x = raw_input('Please enter the location of your keyFile for the dev server ')
    if x == '':
        key = 'key_file'
    else:
        key = x
    with settings(
            host_string='dev_server_name',
            user='user_name',
            Key_filename=key,
            use_ssh_config = True):
        code_dir='~/path/to/code/'
        with cd(code_dir):
            run("git pull origin master")
            run("sudo python setup.py install")
            run("sudo service supervisord restart")

完成这个步骤后,我的网页应用程序无法访问。你有什么想法是为什么会出现这种情况?

1
主管日志中有什么内容? - twil
为什么您要重新启动Supervisord而不是仅重启Web应用程序? - Thomas Fenzl
@ThomasFenzl 我对Supervisord的工作方式还不熟悉。如果是Supervisord启动的应用程序,我该如何只重启该应用程序呢? - Charlie Andrews
@twil 我是一个Supervisord新手,我的日志当然是空的。 - Charlie Andrews
使用命令行工具supervisorctl来重启服务:sudo supervisorctl restart <service name> - Thomas Fenzl
2个回答

4
Supervisor是一个管理服务的工具,无需重启即可重新启动其控制下的内容。
它配备了一个命令行工具supervisorctl来管理进程。您可以将其用作CLI界面或交互式shell。
如果要重新启动服务,请使用supervisorctl restart <service name>(使用适当的权限,因此可能需要使用sudo)。如果更改了服务的配置,请使用supervisorctl update来重新启动受影响的进程。这样,如果您的进程无法启动,就可以使用supervisor的日志文件。

当我运行sudo supervisorctl restart Platform命令时,我会得到以下错误:Platform: ERROR (abnormal termination) - Charlie Andrews
平台是我的应用程序的名称。 - Charlie Andrews
请检查日志文件,通常在/var/log/supervisor/目录下。有一个supervisord.log文件和两个名为Platform-std...的文件,分别记录标准输出和标准错误。 - Thomas Fenzl
好的,谢谢。我是最笨的人。我的应用程序出错了。但是你的答案确实帮助了我使用supervisorctl界面。谢谢! - Charlie Andrews

0

Supervisor 的 init.d 脚本有 bug。不要使用 restart 命令,应该先执行 stop,再执行 start


不行啊... 当我手动登录到机器上时,重启功能可以正常工作,启动和停止也是如此,但从我的fabric文件中无法正常工作。 - Charlie Andrews

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接