【问题标题】:fabric restarting my supervisord service kills the service重新启动我的supervisord服务的结构会终止该服务
【发布时间】:2013-07-17 21:50:22
【问题描述】:

我有一个使用 supervisord 运行的 Tornado Web 应用程序。我从 ssh 手动启动、停止和重新启动 Supervisord 服务,它工作正常。我正在使用本地机器上的结构来执行以下操作:

  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")

完成此操作后,我的 Web 应用程序已关闭。关于为什么会发生这种情况的任何想法?

【问题讨论】:

  • 主管日志中有什么内容?
  • 为什么要重启 supervisord 而不仅仅是 web 应用程序?
  • @ThomasFenzl 我不熟悉 Supervisord 的工作方式。如果 Supervisord 是启动应用程序的人,我将如何重新启动应用程序?
  • @twil 我是一名主管菜鸟,我的日志当然是空的。
  • 使用命令行工具supervisorctl重启服务:sudo supervisorctl restart <service name>

标签: python fabric supervisord


【解决方案1】:

Supervisor是一个管理服务的工具,不需要为了重启它控制的东西而重启它。

它带有一个命令行工具来管理进程,supervisorctl。您可以将其用作 CLI 界面或交互式 shell。

如果您想重新启动服务supervisorctl restart <service name>(具有适当的权限,那么可能使用sudo 可以做到这一点。如果您更改了服务的配置,请使用supervisorctl update 重新启动受影响的进程。这样您就可以使用来自主管的日志文件,以防您的进程无法启动。

【讨论】:

  • 当我运行 sudo supervisorctl restart Platform 时出现以下错误:Platform: ERROR (abnormal termination)
  • Platform 是我的应用程序的名称
  • 检查日志文件,通常在/var/log/supervisor/。有一个 supervisord.log 和两个 Platform-std... 文件,带有标准输出和标准错误。
  • 好的,谢谢,我是最愚蠢的家伙。我有应用程序错误。但是您的回答确实对supervisorctl 界面有所帮助。谢谢!
【解决方案2】:

主管在 init.d 脚本中有错误。不要这样做restart。执行stop,然后执行start

【讨论】:

  • 没有骰子...当我手动登录机器时,重启功能正常工作,启动和停止也是如此,但在我的结构文件中都不起作用。
猜你喜欢
  • 1970-01-01
  • 2021-04-14
  • 2016-06-29
  • 1970-01-01
  • 2019-05-16
  • 1970-01-01
  • 2019-04-25
  • 2017-03-20
  • 1970-01-01
相关资源
最近更新 更多