Skip to content

Instantly share code, notes, and snippets.

@StefanieD
Created July 3, 2015 15:17
Show Gist options
  • Save StefanieD/5407df6b086b38c4f887 to your computer and use it in GitHub Desktop.
Save StefanieD/5407df6b086b38c4f887 to your computer and use it in GitHub Desktop.
Install and use Supervisord with AWS Elastic Beanstalk, Symfony 2 and RabbitMq Bundle
  • Place the supervisord.conf under .ebextensions/supervisor/

  • Place the supervisor.config under .ebextensions/

  • Place the data_import_consumer.conf under .ebextensions/supervisor/

[program:data_import_consumer]
process_name= %(process_num)s
command= /usr/bin/php /var/app/current/api/app/console rabbitmq:multiple-consumer -m 30 import_data
autostart=true
autorestart=unexpected
stderr_logfile=/var/log/app/rabbitmq/data_import_consumer.err.log
stdout_logfile=/var/log/app/rabbitmq/data_import_consumer.out.log
numprocs=3
exitcodes=1
startsecs=0
commands:
11install_supervisor:
test : '[ ! /etc/supervisor ] && echo "supervisor not installed"'
command: "easy_install supervisor"
container_commands:
14insert_supervisor_main_config:
command: ". /opt/elasticbeanstalk/support/envvars && cat .ebextensions/supervisor/supervisord.conf > /etc/supervisor/supervisord.conf"
leader_only: true
15insert_supervisor_main_config_to_etc:
command: ". /opt/elasticbeanstalk/support/envvars && cat .ebextensions/supervisor/supervisord.conf > /etc/supervisord.conf"
leader_only: true
16insert_data_import_supervisor_config:
command: ". /opt/elasticbeanstalk/support/envvars && cat .ebextensions/supervisor/data_import_consumer.conf > /etc/supervisor/conf.d/data_import_consumer.conf"
leader_only: true
files:
"/opt/elasticbeanstalk/hooks/appdeploy/post/490-supervisor_install.sh":
mode: "000755"
owner: root
group: root
content: |
#!/usr/bin/env bash
. /opt/elasticbeanstalk/support/envvars
if [ ! -f /usr/local/bin/supervisord ]; then
echo "install supervisor and create directories"
easy_install supervisor
else
echo "supervisor already installed"
fi
if [ ! -d /etc/supervisor ]; then
mkdir /etc/supervisor
echo "create supervisor directory"
fi
if [ ! -d /etc/supervisor/conf.d ]; then
mkdir /etc/supervisor/conf.d
echo "create supervisor configs directory"
fi
"/opt/elasticbeanstalk/hooks/appdeploy/post/500-supervisor_update.sh":
mode: "000755"
owner: root
group: root
content: |
#!/usr/bin/env bash
. /opt/elasticbeanstalk/support/envvars
if ps aux | grep -q "[/]usr/local/bin/supervisord"; then
echo "supervisor is running"
else
echo "start supervisor"
/usr/bin/python /usr/local/bin/supervisord --pidfile /var/run/supervisord.pid
fi
supervisorctl reread
supervisorctl update
cd /var/app/current/api
app/console rabbitmq:setup-fabric --env=$SYMFONY_ENV
echo "$(date +'%Y%m%d %T') Check for supervisor update" >> /var/log/directory-hooks-executor.log
[unix_http_server]
file=/tmp/supervisor.sock ; (the path to the socket file)
[supervisord]
logfile=/tmp/supervisord.log ; (main log file;default $CWD/supervisord.log)
logfile_maxbytes=50MB ; (max main logfile bytes b4 rotation;default 50MB)
logfile_backups=10 ; (num of main logfile rotation backups;default 10)
loglevel=info ; (log level;default info; others: debug,warn,trace)
pidfile=/tmp/supervisord.pid ; (supervisord pidfile;default supervisord.pid)
nodaemon=false ; (start in foreground if true;default false)
minfds=1024 ; (min. avail startup file descriptors;default 1024)
minprocs=200 ; (min. avail process descriptors;default 200)
environment=SYMFONY_ENV=prod
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
[supervisorctl]
serverurl=unix:///tmp/supervisor.sock ; use a unix:// URL for a unix socket
[include]
files = /etc/supervisor/conf.d/*.conf
[inet_http_server]
port = 9000
username = user
password = pw
@StefanieD
Copy link
Author

@johnyvelho Cool, thanx for the update and your work.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment