如何通过.ebextension在Elastic Beanstalk中安装主管?

dav*_*lee 4 amazon-web-services supervisord amazon-elastic-beanstalk

我是否可以知道如何通过.ebextension将超级用户安装到Elastic Beanstalk中?以及如何通过.ebextension执行主管命令?

tam*_*yte 5

Supervisorctl和supervisor已存在于/ usr / local / bin目录中的elasticbeanstalk实例上。您可以使用ebextensions加载主管配置文件并以守护程序模式运行主管。

在.ebextensions文件夹中创建一个文件002_supervisor.config

该文件执行3件事:

  1. 在弹性beantalk实例上的/ usr / local / etc中创建supervisor.conf文件。
  2. 创建一个init.d脚本,以便主管在系统启动时作为守护程序运行
  3. 部署应用程序时在主管上运行重新启动
文件:
   /usr/local/etc/supervisord.conf:
    模式:“ 000755”
    所有者:root
    组:根
    内容:
        [unix_http_server]
        file = / tmp / supervisor.sock; (套接字文件的路径)

        [主管]
        logfile = / tmp / supervisord.log; (主日志文件;默认$ CWD / supervisord.log)
        logfile_maxbytes = 50MB; (最大主日志文件字节b4轮换;默认50MB)
        logfile_backups = 10; (主日志文件轮换备份的数量;默认为10)
        loglevel = info; (日志级别;默认信息;其他:调试,警告,跟踪)
        pidfile = / tmp / supervisord.pid; (supervisord pidfile;默认supervisord.pid)
        nodaemon = false; (如果为true,则从前台开始;默认为false)
        minfds = 1024; (最小可用启动文件描述符;默认为1024)
        minprocs = 200; (最小可用进程描述符;默认为200)

        [rpcinterface:主管]
        supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface

        [主管]
        serverurl = unix:///tmp/supervisor.sock; 将unix:// URL用于unix套接字

        [包括]
        文件= /usr/local/etc/*.conf

        [inet_http_server]
        端口= 127.0.0.1:9001
   /etc/init.d/supervisord:
    模式:“ 000755”
    所有者:root
    组:根
    内容:
        #!/ bin / bash

        #源函数库
        。/etc/rc.d/init.d/functions

        #源系统设置
        如果[-f / etc / sysconfig / supervisord];然后
            。/ etc / sysconfig / supervisord
        科幻

        #supervisorctl脚本的路径,服务器二进制文件,
        #和消息的简写形式。
        administratorctl = / usr / local / bin / supervisorctl
        超级用户= $ {SUPERVISORD- / usr / local / bin / supervisord}
        prog =主管
        pidfile = $ {PIDFILE- / tmp / supervisord.pid}
        lockfile = $ {LOCKFILE- / var / lock / subsys / supervisord}
        STOP_TIMEOUT = $ {STOP_TIMEOUT-60}
        OPTIONS =“ $ {OPTIONS--c /usr/local/etc/supervisord.conf}”
        RETVAL = 0

        start(){
            echo -n $“启动$ prog:”
            守护程序--pidfile = $ {pidfile} $ supervisord $ OPTIONS
            RETVAL = $?
            回声
            如果[$ RETVAL -eq 0]; 然后
                触摸$ {lockfile}
                $ supervisorctl $ OPTIONS状态
            科幻
            返回$ RETVAL
        }

        停() {
            echo -n $“停止$ prog:”
            killproc -p $ {pidfile} -d $ {STOP_TIMEOUT} $ supervisord
            RETVAL = $?
            回声
            [$ RETVAL -eq 0] && rm -rf $ {lockfile} $ {pidfile}
        }

        reload(){
            echo -n $“重新加载$ ​​prog:”
            LSB = 1 killproc -p $ pidfile $ supervisord -HUP
            RETVAL = $?
            回声
            如果[$ RETVAL -eq 7]; 然后
                失败$“ $ prog重新加载”
            其他
                $ supervisorctl $ OPTIONS状态
            科幻
        }

        重新开始() {
            停
            开始
        }

        案例“ $ 1”在
            开始)
                开始
                ;;
            停)
                停
                ;;
            状态)
                状态-p $ {pidfile} $ supervisord
                RETVAL = $?
                [$ RETVAL -eq 0] && $ supervisorctl $ OPTIONS状态
                ;;
            重新开始)
                重新开始
                ;;
            condrestart |尝试重新启动)
                如果status -p $ {pidfile} $ supervisord>&/ dev / null; 然后
                  停
                  开始
                科幻
                ;;
            强制重载|重载)
                重装
                ;;
            *)
                echo $“用法:$ prog {开始|停止|重新启动| condrestart |尝试重新启动|强制重新加载|重新加载}”
                RETVAL = 2
            埃萨克

            退出$ RETVAL

命令:
  01_start_supervisor:
    命令:“ / etc / init.d / supervisord restart”
    leader_only:是

希望这可以帮助!

  • 尝试部署时,我收到“正在启动主管:/bin/bash:/usr/local/bin/supervisord:没有这样的文件或目录” - 我还需要在 AWS 控制台中配置其他内容才能使其正常工作吗? (2认同)
  • 我只在使用亚马逊默认 python 图像设置的弹性豆茎机器上进行了测试。在这些机器上,supervisor 默认安装在 /usr/local/bin 下。 (2认同)