【问题标题】:How to install supervisor in Elastic Beanstalk through .ebextension?如何通过 .ebextension 在 Elastic Beanstalk 中安装主管?
【发布时间】:2018-03-24 13:00:54
【问题描述】:

我可以知道如何通过 .ebextension 将主管安装到 Elastic Beanstalk 中吗?以及如何通过 .ebextension 执行主管命令?

【问题讨论】:

  • 嗨@davidlee。你能做到这一点吗?我正在寻找自己设置 dango-rq 的答案。没有运气。任何帮助将不胜感激。谢谢

标签: amazon-web-services amazon-elastic-beanstalk supervisord


【解决方案1】:

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

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

这个文件做了三件事:

  1. 在弹性 beanstalk 实例的 /usr/local/etc 中创建一个 supervisor.conf 文件。
  2. 创建一个 init.d 脚本,以便在系统启动时将主管作为守护进程运行
  3. 部署应用程序时在主管上运行重新启动
文件: /usr/local/etc/supervisord.conf: 模式:“000755” 所有者:根 组:根 内容:| [unix_http_server] 文件=/tmp/supervisor.sock ; (套接字文件的路径) [监督] 日志文件=/tmp/supervisord.log; (主日志文件;默认 $CWD/supervisord.log) logfile_maxbytes=50MB; (最大主日志文件字节 b4 轮换;默认 50MB) 日志文件备份=10; (主日志文件轮换备份的数量;默认 10) 日志级别=信息; (日志级别;默认信息;其他:调试、警告、跟踪) pidfile=/tmp/supervisord.pid ; (supervisord pidfile;默认 supervisord.pid) 节点守护进程=假; (如果为真则在前台开始;默认为假) minfds=1024 ; (最小可用启动文件描述符;默认 1024) minprocs=200 ; (最小可用进程描述符;默认 200) [rpc接口:主管] supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface [supervisorctl] serverurl=unix:///tmp/supervisor.sock ;对 unix 套接字使用 unix:// URL [包括] 文件 = /usr/local/etc/*.conf [inet_http_server] 端口 = 127.0.0.1:9001 /etc/init.d/supervisord: 模式:“000755” 所有者:根 组:根 内容:| #!/bin/bash # 源函数库 . /etc/rc.d/init.d/functions # 源系统设置 如果 [ -f /etc/sysconfig/supervisord ];然后 . /etc/sysconfig/supervisord 菲 # supervisorctl 脚本的路径,服务器二进制文件, # 和消息的简写形式。 supervisorctl=/usr/local/bin/supervisorctl supervisord=${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 开始() { 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} } 重载(){ 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|尝试重启) 如果状态 -p ${pidfile} $supervisord >&/dev/null;然后 停止 开始 菲 ;; 强制重新加载|重新加载) 重新加载 ;; *) echo $"用法:$prog {start|stop|restart|condrestart|try-restart|force-reload|reload}" RETVAL=2 经社理事会 退出 $RETVAL 命令: 01_start_supervisor: 命令:'/etc/init.d/supervisord 重启' 仅领导者:真

希望这会有所帮助!

【讨论】:

  • 我在尝试部署时收到 Starting supervisord: /bin/bash: /usr/local/bin/supervisord: No such file or directory - 我还需要在 AWS 控制台中配置其他内容以使其正常工作吗?
  • 尝试 ssh'ing 到您的 eb 机器上! eb ssh。然后导航到 /usr/local/bin 并查看哪些脚本挂在那里。如果您在该文件夹中没有 supervisord 和 supervisorctl,您可能需要安装 supervisor。
  • 如您所提到的,默认情况下未安装Supervisor ..您需要将其作为上述脚本的一部分安装...
  • 我只在使用亚马逊默认 python 图像设置的弹性豆茎机器上进行了测试。在这些机器上,supervisor 默认安装在 /usr/local/bin 下。
  • amazon linux 2 使用 Procfile 来运行服务。如何配置?有什么想法吗?
猜你喜欢
  • 2018-10-13
  • 2015-06-25
  • 2016-02-22
  • 2014-08-30
  • 2022-10-04
  • 2019-09-09
  • 2013-03-21
  • 2017-01-07
  • 2017-08-27
相关资源
最近更新 更多