Подтвердить что ты не робот

Как запустить sidekiq на рабочем сервере?

У меня есть сервер с apache + пассажиром.

Как я буду запускать sidekiq в процессе производства? Любая конфигурация, необходимая для запуска

bundle exec sidekiq

Спасибо

4b9b3361

Ответ 1

bundle exec sidekiq -d -L log/sidekiq.log -C config/sidekiq.yml -e production

-d, процесс Daemonize

-L, путь к записываемому файлу журнала

-C, путь к файлу конфигурации YAML

-e, прикладная среда

Ответ 2

Вы можете запустить Sidekiq в качестве фонового процесса (daemon), передав аргумент -d при его запуске:

bundle exec sidekiq -d.

Хотя этот ответ должен работать для вас сейчас, помните, что , если процесс sidekiq аварийно завершает работу, по какой-либо причине процесс должен быть перезагружен вручную. Хорошим стартовым местом для поиска более надежных способов запуска sidekiq в производстве является: https://github.com/mperham/sidekiq/wiki/Deployment

Ответ 3

Лучшим решением, чем использование флага daemonization -d, является использование супервизора процесса, предоставляемого вашей ОС. Это также рекомендация, предоставленная вики-сайтом sidekiq:

Я настоятельно рекомендую людям не использовать флаг -d, а вместо этого использовать диспетчер процессов, такой как systemd или upstart, для управления Sidekiq (или любым другим демоном сервера). Это гарантирует, что Sidekiq будет немедленно перезагружен, если он по какой-то причине сработает.

В wiki приводятся примеры файлов конфигурации для upstart и systemd, найденных в "examples" каталоге репо.

Примечание На моем сервере CentOS 7 я использую rvm (Ruby Version Manger). Мне пришлось выполнить дополнительный шаг, чтобы гарантировать, что мой systemd script (/etc/systemd/system/sidekiq.service) может надежно запустить и остановить sidekiq, даже в том случае, когда мои пути ruby ​​и/или gemset меняются в будущем, Наиболее важной директивой является "ExecStart", которая выглядит следующим образом в моем script:

ExecStart=/usr/local/rvm/wrappers/surveil/bundler exec sidekiq -e production -L log/sidekiq.log -C config/sidekiq.yml

Часть пути "/usr/local/rvm/wrappers/surveillanceil" на самом деле является символической ссылкой, которую я воссоздаю при помощи 'rvm alias ' во время развертывания, чтобы гарантировать, что он всегда указывает на рубиновую версию приложения и gemset, оба из которых могут существенно измениться с одного развертывания на другое. Это достигается путем создания задачи rake, которая выполняется во время развертывания и имеет эквивалент следующего:

rvm alias delete surveil
rvm alias create surveil ruby-#{new_ruby_version}@#{new_gemset_name}

Установив этот псевдоним/символическую ссылку во время развертывания, я могу спокойно оставить systemd script нетронутым, и он будет работать нормально. Это связано с тем, что путь "/usr/local/rvm/wrappers/surveillance/bundler" всегда указывает на правильную версию связки и, таким образом, извлекает из магии связки, которая заставляет ее задачи запускаться в окружении Ruby/gem, настроенной на приложение.