【问题标题】:How to run delayed_job in production?如何在生产中运行delayed_job?
【发布时间】:2016-02-24 16:04:39
【问题描述】:

我正在尝试使用 $ RAILS_ENV=production bin/delayed_job start 在生产(Elastic Beanstalk,AWS)中运行延迟作业,但是我收到以下权限错误:

/opt/rubies/ruby-2.2.3/lib/ruby/gems/2.2.0/gems/delayed_job-4.1.1/lib/delayed/command.rb:85:in `mkdir': Permission denied @ dir_s_mkdir - /var/app/current/tmp/pids (Errno::EACCES)
    from /opt/rubies/ruby-2.2.3/lib/ruby/gems/2.2.0/gems/delayed_job-4.1.1/lib/delayed/command.rb:85:in `daemonize'
    from bin/delayed_job:5:in `<main>'

这可能不是延迟作业的问题,但我无法在任何地方找到此权限问题的答案,我希望有人可能知道我可以做些什么来使其在生产中工作。

非常感谢任何帮助!谢谢!

【问题讨论】:

    标签: ruby-on-rails ruby delayed-job


    【解决方案1】:

    这是一个缺少的文件夹,而不是权限问题。您应该使用ssh 登录到远程并在那里运行:

    sudo mkdir -p /var/app/current/tmp/pids
    sudo chmod +xw /var/app/current/tmp/pids
    

    如果出现偏执,也可以将chown 发送给用户,这实际上会在那里运行 ruby​​ 代码,但在这种情况下没有必要,因为这完全是为了存储 PID。

    【讨论】:

    • 谢谢,我尝试了这个然后尝试再次运行delayed_job,但出现另一个权限错误:/opt/rubies/ruby-2.2.3/lib/ruby/gems/2.2.0/gems/ daemons-1.2.3/lib/daemons/pidfile.rb:92:in 'initialize': Permission denied @ rb_sysopen - /var/app/current/tmp/pids/delayed_job.pid (Errno::EACCES) 知道我是什么可以在这里做,或者你能解释一下我如何使用chown 来解决这个问题?还不是命令行专家!
    • 在这种情况下您不需要chown。看来您那里已经有 pid 文件了。尝试运行sudo rm -rf /var/app/current/tmp/pids/* 并重新启动delayed_job。它应该会有所帮助。
    • 我做了你的第一个 mkdir 命令,然后是 chown,这就是它起作用的原因。非常感谢!
    【解决方案2】:
    1. 检查 delay_job 从哪个用户开始
    2. 检查/var/app/current/tmp/pids权限,该权限必须适合用户。
    3. 如果pids不存在,检查/var/app/current/tmp权限

    【讨论】:

      猜你喜欢
      • 2010-11-23
      • 2013-07-04
      • 1970-01-01
      • 2021-01-06
      • 2021-04-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-03
      相关资源
      最近更新 更多