的Phusion乘客不读.zshrc环境变量
问题描述:
我使用Phusion客运5.1.8,并建立在我的.zshrc
的Phusion乘客不读.zshrc环境变量
export SECRET_KEY_BASE='secure_key_base'
export DATABASE_NAME='db_production'
export DATABASE_PASSWORD='secure_db_pass'
以下,然后我做了source ~/.zshrc
与sudo service nginx restart
nginx的重新启动。但是,我的应用程序抱怨它无法找到SECRET_KEY_BASE并且无法启动。如果我手动将这些放在config/secrets.yml
中,那么一切正常。
我config/secrets.yml
有以下几点:
production:
secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>
和我config/database.yml
文件有:
production:
<<: *default
database: <%= ENV['DATABASE_NAME'] %>
password: <%= ENV['DATABASE_PASSWORD'] %>
是否有人可以解释我是如何会去有关使用zsh的环境变量与乘客的Phusion?
谢谢!
答
所以问题是你在.zshrc中使用你的环境变量,你从systemd运行nginx。两者彼此没有联系。
你需要的是你的nginx应该有这些变量,它通过Systemd服务运行。您需要使用所谓的Drop-in
mkdir -p /etc/systemd/system/nginx.service.d
cat > /etc/systemd/system/nginx.service.d/90-nginx-myapp.conf <<EOF
[Service]
Environment=SECRET_KEY_BASE=XYZ
Environment=SECRET_KEY_BASE2=XYZ2
EnvironmentFile=-/etc/myapp/environment
EOF
您可以使用Environment=
来声明变量。或者你可以使用带有环境变量的文件。
一旦你添加了下拉式的,你需要重新加载systemd
$ systemctl daemon-reload
$ systemctl status nginx
● nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; disabled; vendor preset: enabled)
Drop-In: /etc/systemd/system/nginx.service.d
└─90-nginx-myapp.conf
Active: inactive (dead)
然后用systemctl restart nginx
现在nginx的应该得到你想要它有变量。
编辑-1
如果您需要在这两个NGINX和你的shell使用变量。在创建像beow
SECRET_KEY_BASE=XYZ
SECRET_KEY_BASE2=XYZ2
在您的下拉式使用的EnvironmentFile=
并在.bashrc
或.bash_profile
或.zshrc
添加以下行
# set -a will make sure that X=Y is equivalent to export X=Y
set -a
source /etc/myapp/environment
# disable auto export of variable
set +a
关机nginx的服务和运行'须藤nginx的用变量的文件'从终端看,看看它是否能正常工作 –
不是不行::(没有区别 – DaniG2k
没有sudo尝试 –