-
Place the supervisord.conf under .ebextensions/supervisor/
-
Place the supervisor.config under .ebextensions/
-
Place the data_import_consumer.conf under .ebextensions/supervisor/
-
-
Save StefanieD/5407df6b086b38c4f887 to your computer and use it in GitHub Desktop.
| [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 |
Thank you this gist post!.
please, how can i stop supervisor on deploy wity symfony ?
@kprosper Maybe you could try to create a pre-deploy file i.e. /opt/elasticbeanstalk/hooks/appdeploy/pre/100-stop-supervisor.sh which stops supervisor.
Like I did it in supervisor.config for updating supervisor.
I am getting this error
/bin/sh: /opt/elasticbeanstalk/support/envvars: No such file or directory
in amazon linux 2.
Any Replace of the line?
Hi danishmirza,
unfortunately this gist is very old. I think in the meantime AWS changed the structure in their Elastic Beanstalk instances. Do you have a chance to find out the directory for the environment variables on AWS instance?
Then you need to replace /opt/elasticbeanstalk/support/envvars with the current path.
Or you need to create the envvars file first.
See https://aws.amazon.com/premiumsupport/knowledge-center/view-environment-properties-elastic-beanstalk/
@danishmirza
I just found an article in stackoverflow for Amazon Linux 2 instances. It's a little bit different from Amazon 1 instances.
You need to do something like this:
export $(cat /opt/elasticbeanstalk/deployment/env | xargs)
See https://stackoverflow.com/questions/63280543/aws-eb-deploy-doesnt-load-environment-variables
Good morning everybody, thank you for your good work. please I want to ask how can i Restart supervisor main process which has started by /usr/bin/python /usr/local/bin/supervisord --pidfile /var/run/supervisord.pid. thank you for your answer.
Hi @kprosper, you can create a new pre- or post-deploy script (see supervisor.config for examples)
In this script you can try to run service supervisor restart or
supervisorctl restart <name>
See here: https://www.onurguzel.com/supervisord-restarting-and-reloading/
For those struggling to make it running in 2021: https://gist.github.com/johnyvelho/6a457d5e0500ca0c1faa2e6c5eab7ced
@johnyvelho Cool, thanx for the update and your work.
Thank you, this was very useful!