Sidekiq部署失败,并显示“找不到密钥:“ MY_APP_DATABASE_PASSWORD”

时间:2018-12-18 13:04:30

标签: ruby-on-rails deployment sidekiq

这是我的菜鸟向社区提出的第一个问题。

背景

我尝试在我自己的Jessie Debian服务器上为与Phusion Passenger和用户“ deploy”一起使用的Rails 5.0.6应用程序部署Sidekiq。我已经安装并测试了Redis 3.2.6。我选择了Systemd守护程序来启动Sidekiq作为系统服务。 这是配置:

[Unit]
Description=sidekiq
After=syslog.target network.target

[Service]
Type=simple
WorkingDirectory=/var/www/my_app/code
ExecStart=/bin/bash -lc 'bundle exec sidekiq -e production -C config/sidekiq.yml'
User=deploy
Group=deploy
UMask=0002

# if we crash, restart
RestartSec=4
#Restart=on-failure
Restart=always

# output goes to /var/log/syslog
StandardOutput=syslog
StandardError=syslog

# This will default to "bundler" if we don't specify it
SyslogIdentifier=sidekiq

[Install]
WantedBy=multi-user.target

这是sidekiq.yml

---
:verbose: true
:concurrency: 4
:pidfile: tmp/pids/sidekiq.pid
:queues:
  - [critical, 2]
  - default
  - low

production:
  :concurrency: 15

最后#config / initializers / sidekiq.rb:

Sidekiq.configure_server do |config|
  config.redis = { url: "redis://#{ENV['SITE']}:6379/0", password: ENV['REDIS_PWD'] }
end

Sidekiq.configure_client do |config|
  config.redis = { url: "redis://#{ENV['SITE']}:6379/0", password: ENV['REDIS_PWD'] }
end

如何失败 我一直在尝试解决/ var / log / syslog中发现的以下错误:

Dec 18 00:13:39 jjflo systemd[1]: Started sidekiq.
Dec 18 00:13:48 jjflo sidekiq[8159]: Cannot load `Rails.application.database_configuration`:
Dec 18 00:13:48 jjflo sidekiq[8159]: key not found: "MY_APP_DATABASE_PASSWORD"

最终导致sidekiq失败,然后重试...

再尝试一次 我尝试了以下方法,并且这有效

cd /var/www/my_app/code
su - deploy
/bin/bash -lc 'bundle exec sidekiq -e production -C config/sidekiq.yml'

有人可以帮我把点子联系起来吗?

1 个答案:

答案 0 :(得分:0)

环境变量显然是问题所在。自从我使用

ExecStart=/bin/bash -lc 'bundle...

-l指的是bash交互式会话,我必须进入部署用户的.bashrc才能将导出行移动到文件顶部,而不是以前的底部是,或至少在.bashrc的这一行之前:

case $- in

This post对我有很大帮助。