大神使用sudo在.bash_profile文件中找不到环境参数SECRET_KEY_BASE
God using sudo fails to find the environment parameter SECRET_KEY_BASE in the .bash_profile file
我将这些行添加到 /home/web/.bash_profile
。网络是 Rails 应用程序的用户。
SECRET_KEY_BASE=xxxxxxxxxxxxxxxxxxxxx
export SECRET_KEY_BASE
我将这一行添加到 /etc/sudoers
。
Defaults env_keep += "SECRET_KEY_BASE"
此命令returns 预期结果。
sudo ruby -e 'puts ENV["SECRET_KEY_BASE"]'
如果我运行没有上帝的独角兽,它可以从环境中找到SECRET_KEY_BASE,并正常执行。
bundle exec unicorn_rails -c config/unicorn.rb -E production -D
运行 Unicorn 在没有 God 的情况下使用 sudo 也表现正常。
sudo bundle exec unicorn_rails -c config/unicorn.rb -E production -D
但是当我 运行 Unicorn with God 使用 sudo 时,它找不到 SECRET_KEY_BASE 并且出错。
sudo god start my_app
my_app.god中的启动命令是这样的
God.watch do |w|
w.start = "cd #{rails_root} && bundle exec unicorn_rails -c config/unicorn.rb -E #{rails_env} -D"
w.uid = 'web'
w.gid = 'web'
...
end
看来问题出在上帝身上,而不是.bash_profile和独角兽身上。除了我应该尝试什么?
我将这一行添加到 my_app.god
ENV["SECRET_KEY_BASE"] = 'xxxxxxxxxxxxxxxxxxxxxxxx'
我知道这不是一个很酷的解决方案,但它确实有效。 SECRET_KEY_BASE 未作为源代码包含在 Git 存储库中。
我将这些行添加到 /home/web/.bash_profile
。网络是 Rails 应用程序的用户。
SECRET_KEY_BASE=xxxxxxxxxxxxxxxxxxxxx
export SECRET_KEY_BASE
我将这一行添加到 /etc/sudoers
。
Defaults env_keep += "SECRET_KEY_BASE"
此命令returns 预期结果。
sudo ruby -e 'puts ENV["SECRET_KEY_BASE"]'
如果我运行没有上帝的独角兽,它可以从环境中找到SECRET_KEY_BASE,并正常执行。
bundle exec unicorn_rails -c config/unicorn.rb -E production -D
运行 Unicorn 在没有 God 的情况下使用 sudo 也表现正常。
sudo bundle exec unicorn_rails -c config/unicorn.rb -E production -D
但是当我 运行 Unicorn with God 使用 sudo 时,它找不到 SECRET_KEY_BASE 并且出错。
sudo god start my_app
my_app.god中的启动命令是这样的
God.watch do |w|
w.start = "cd #{rails_root} && bundle exec unicorn_rails -c config/unicorn.rb -E #{rails_env} -D"
w.uid = 'web'
w.gid = 'web'
...
end
看来问题出在上帝身上,而不是.bash_profile和独角兽身上。除了我应该尝试什么?
我将这一行添加到 my_app.god
ENV["SECRET_KEY_BASE"] = 'xxxxxxxxxxxxxxxxxxxxxxxx'
我知道这不是一个很酷的解决方案,但它确实有效。 SECRET_KEY_BASE 未作为源代码包含在 Git 存储库中。