-
-
Save ssaunier/44bbebb9c0fa01953860 to your computer and use it in GitHub Desktop.
| # Sidekiq interaction and startup script | |
| commands: | |
| create_post_dir: | |
| command: "mkdir -p /opt/elasticbeanstalk/hooks/appdeploy/post" | |
| ignoreErrors: true | |
| files: | |
| "/opt/elasticbeanstalk/hooks/appdeploy/post/50_restart_sidekiq.sh": | |
| mode: "000755" | |
| owner: root | |
| group: root | |
| content: | | |
| #!/usr/bin/env bash | |
| . /opt/elasticbeanstalk/support/envvars | |
| EB_APP_DEPLOY_DIR=$(/opt/elasticbeanstalk/bin/get-config container -k app_deploy_dir) | |
| EB_APP_PID_DIR=$(/opt/elasticbeanstalk/bin/get-config container -k app_pid_dir) | |
| EB_APP_USER=$(/opt/elasticbeanstalk/bin/get-config container -k app_user) | |
| EB_SCRIPT_DIR=$(/opt/elasticbeanstalk/bin/get-config container -k script_dir) | |
| EB_SUPPORT_DIR=$(/opt/elasticbeanstalk/bin/get-config container -k support_dir) | |
| . $EB_SUPPORT_DIR/envvars | |
| . $EB_SCRIPT_DIR/use-app-ruby.sh | |
| SIDEKIQ_PID=$EB_APP_PID_DIR/sidekiq.pid | |
| SIDEKIQ_CONFIG=$EB_APP_DEPLOY_DIR/config/sidekiq.yml | |
| SIDEKIQ_LOG=$EB_APP_DEPLOY_DIR/log/sidekiq.log | |
| cd $EB_APP_DEPLOY_DIR | |
| if [ -f $SIDEKIQ_PID ] | |
| then | |
| su -s /bin/bash -c "kill -TERM `cat $SIDEKIQ_PID`" $EB_APP_USER | |
| su -s /bin/bash -c "rm -rf $SIDEKIQ_PID" $EB_APP_USER | |
| fi | |
| . /opt/elasticbeanstalk/support/envvars.d/sysenv | |
| sleep 10 | |
| su -s /bin/bash -c "bundle exec sidekiq \ | |
| -e $RACK_ENV \ | |
| -P $SIDEKIQ_PID \ | |
| -C $SIDEKIQ_CONFIG \ | |
| -L $SIDEKIQ_LOG \ | |
| -d" $EB_APP_USER | |
| "/opt/elasticbeanstalk/hooks/appdeploy/pre/03_mute_sidekiq.sh": | |
| mode: "000755" | |
| owner: root | |
| group: root | |
| content: | | |
| #!/usr/bin/env bash | |
| . /opt/elasticbeanstalk/support/envvars | |
| EB_APP_USER=$(/opt/elasticbeanstalk/bin/get-config container -k app_user) | |
| EB_SCRIPT_DIR=$(/opt/elasticbeanstalk/bin/get-config container -k script_dir) | |
| EB_SUPPORT_DIR=$(/opt/elasticbeanstalk/bin/get-config container -k support_dir) | |
| . $EB_SUPPORT_DIR/envvars | |
| . $EB_SCRIPT_DIR/use-app-ruby.sh | |
| SIDEKIQ_PID=$EB_APP_PID_DIR/sidekiq.pid | |
| if [ -f $SIDEKIQ_PID ] | |
| then | |
| su -s /bin/bash -c "kill -USR1 `cat $SIDEKIQ_PID`" $EB_APP_USER | |
| fi |
On platform, "Ruby 2.7 running on 64bit Amazon Linux 2", initctl command from upstart does not work. Seems we need to use systemctl to manage the processes.
These scripts won't work for Sidekiq >6. Does any one come by chance with updated scripts?
It seems the new solution for Amazon Linux 2 is to use a Procfile to manage Sidekiq.
https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/ruby-platform-procfile.html
https://github.com/mperham/sidekiq/wiki/Heroku
If you don't want to use a Procfile then I think the Sidekiq project also provided an example of how to perform the setup using systemd
https://github.com/mperham/sidekiq/blob/main/examples/systemd/sidekiq.service
this gist was not working in elastic beanstalk for sidekiq.
It seems the new solution for Amazon Linux 2 is to use a
Procfileto manage Sidekiq.https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/ruby-platform-procfile.html https://github.com/mperham/sidekiq/wiki/Heroku
If you don't want to use a
Procfilethen I think the Sidekiq project also provided an example of how to perform the setup usingsystemdhttps://github.com/mperham/sidekiq/blob/main/examples/systemd/sidekiq.service
Amazon Linux 2 and don't support the Procfile feature.
We can't use Procfile.
Did you use systemd for sidekiq?
@ssaunier Thanks for update.
And I comment for someone who want to how to setup sidekiq on EB.
i found solution with predeploy, postdeploy
sidekiq/sidekiq#4307 (comment)
https://www.barot.us/running-sidekiq-on-amazon-linux-2/
It is working on Sidekiq 5.2.7 but not working on Sidekiq 6
/var/log/eb-activity.log (Sidekiq 5.2.7)
See
sidekiq/sidekiq#4045
sidekiq/sidekiq#4307