当前位置:  开发笔记 > 后端 > 正文

如何在生产服务器中运行sidekiq?

如何解决《如何在生产服务器中运行sidekiq?》经验,为你挑选了3个好方法。

我有一个apache + passenger服务器.

我将如何sidekiq在生产中运行?运行所需的任何配置

bundle exec sidekiq

谢谢



1> 小智..:

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

-d,Daemonize过程

-L,可写日志文件的路径

-C,YAML配置文件的路径

-e,应用环境


杀死ps ps | grep sidekiq | grep -v grep | awk'{print $ 2}'然后,捆绑exec sidekiq -d -L log/sidekiq.log -Cconfig/sidekiq.yml -e production

2> Brian Warren..:

比使用daemonization -d标志更好的解决方案是利用操作系统提供的进程管理器.这也是sidekiq gem的维基给出的建议:

我强烈建议人们不要使用-d标志,而是使用像systemd或upstart这样的进程管理器来管理Sidekiq(或任何其他服务器守护进程).这样可以确保Sidekiq在出于某种原因崩溃时立即重启.

wiki为repo的"examples"目录中的 upstart和systemd提供了示例配置文件.

注意 在我的CentOS 7服务器上,我使用rvm(Ruby Version Manger).我必须执行额外的步骤以确保我的systemd脚本(/etc/systemd/system/sidekiq.service)可以可靠地启动和停止sidekiq,即使在我的ruby和/或gemset路径将来发生变化的情况下也是如此.最重要的指令是"ExecStart",它在我的脚本中如下所示:

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

路径"/ usr/local/rvm/wrappers/surveil"的一部分实际上是一个符号链接,我在部署期间借助'rvm别名'重新创建,以确保它始终指向应用程序的ruby版本和gemset,这两者都可以从一个部署变为另一个部署.这是通过创建在部署期间运行的rake任务来实现的,并执行以下等效操作:

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

通过在部署期间设置此别名/符号链接,我可以安全地保持systemd脚本不受影响,并且它将继续正常工作.这是因为路径"/ usr/local/rvm/wrappers/surveil/bundler"始终指向正确版本的bundler,因此从捆绑器魔法中获益,导致其目标在应用程序配置的ruby/gem环境中运行.



3> alexpls..:

您可以通过在启动时传递-d参数来启动Sidekiq作为后台进程(守护进程):

bundle exec sidekiq -d.

虽然这个答案现在适合您,但请注意,如果sidekiq进程因任何原因崩溃,则必须手动重新启动该进程.这里有一个很好的起点,可以找到更有效的方法来运行sidekiq:https://github.com/mperham/sidekiq/wiki/Deployment

推荐阅读
雨天是最美
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有