在 AWS AMI Linux 上设置主管

在 AWS AMI Linux 上设置主管

我正在尝试让主管工作以确保我的队列系统始终运行。

以下是我采取的步骤,是我从各种来源拼凑起来的:(以 root 或超级用户身份运行)

  1. 冉:

    # easy_install supervisor
    # echo_supervisord_conf > /etc/supervisord.conf
    # vi supervisord.conf
    
  2. 将以下内容粘贴至文件末尾:

    command=/usr/bin/php /path/to/AppName/artisan --env=production --timeout=240 queue:listen
    
  3. 冉:

    # supervisord -c /etc/supervisord.conf
    # supervisorctl
    supervisor> status
    supervisor>
    

    它没有显示任何东西。

  4. 冉:

    # service supervisord reload
    supervisord: unrecognized service
    

答案1

要让supervisord作为服务运行,你需要一个/etc/init.d/supervisord文件。我用https://raw.githubusercontent.com/Supervisor/initscripts/master/redhat-init-equeffelec 使用 mods 来匹配 easy_install 放置二进制文件的路径(/usr/local/bin/)并找到 pid 和日志/var/run/,然后/var/log/

答案2

我刚刚花了几个小时尝试让主管和 Amazon Linux AMI 正常运行。我遇到了您提到的症状。

一些怪癖:

  • 继续在任何或命令中包含-c /etc/supervisord.conf(或任何您的路径),并确保每次都从同一个用户运行。supervisordsupervisorctl
  • 在您的中/etc/supervisord.conf,当您附加命令时,请确保在名称前加上“program:”,如下所示:

    [program:queue]
    command=/usr/bin/php /path/to/AppName/artisan --env=production --timeout=240 queue:listen
    

一旦我完成上述操作,supervisorctl 最终识别了队列进程/程序。

我还没有sudo service supervisor restart意识到 Supervisor 是一项服务 - 我怀疑这是因为我没有在很多地方提到过的 Upstart 脚本。目前我不确定我是否需要它。

我使用的一些调试技巧:

  • ps aux | grep super看看它是否正在运行
  • sudo vim 编辑/etc/supervisord.confsudo /usr/local/bin/supervisorctl -c /etc/supervisord.conf然后availreloadupdate进行更新(而不是每次编辑 .ebextensions 并推送到 elastic beanstalk)

相关内容