0

我想为我用 PHP 和 Ruby 编写的不同应用程序添加一个 linux 环境变量。

它的目标是区分“生产”和“开发”Linux 环境。

如何拥有可以使用 PHP 和 Ruby 访问的 linux 环境变量(例如:APPLICATION_ENV='production')?

谢谢

编辑 1:

我的第一个解决方案是:

对于 vhost 中的 Apache/PHP:

SetEnv APPLICATION_ENV 'production'

对于红宝石:

export APPLICATION_ENV='production'
puts ENV['APPLICATION_ENV']

但是,这是两个相同值的地方......没有解决方案将它合并到一个地方吗? 使用 /etc/environment 的示例

编辑 :

我的问题的答案在这里详细说明:在 Apache 中插入变量标头

4

3 回答 3

3

为变量设置中心位置的简单解决方案是将其放入并将其/etc/environment包含在/etc/init.d/httpd.

$ vim /etc/environment
APPLICATION_ENV=production

$ vim /etc/init.d/httpd
if [ -f /etc/environment ]; then
  . /etc/environment
fi

然后重启apache,/etc/init.d/httpd restart应该没问题。

如果您使用的是 ubuntu 16.04 或类似版本,请替换/etc/init.d/httpd/etc/init.d/apache2

如果您不想将环境文件包含到 apache 中,您可以直接将代码放入/etc/apache2/envvars例如文件末尾: export HELLO='dear'

于 2013-06-28T14:54:45.023 回答
1

对于命令行,执行

export APPLICATION_ENV='production'

在调用您的代码之前,就像 Domon 建议的那样。您可以编写一个简短的包装器 bash 脚本来在一行中完成所有这些操作,就像这样

#!/bin/bash
export APPLICATION_ENV='production'
ruby /path/to/your/script.rb

对于 apache,确保 mod_env 已加载,并包含该行

SetEnv APPLICATION_ENV production

在站点的虚拟主机配置或 .htaccess 中。

最后,您可以在系统上全局设置 APPLICATION_ENV(使用您的发行版支持的任何内容),然后使用简单地将值传递给您的网络应用程序

PassEnv APPLICATION_ENV
于 2013-06-27T08:56:51.563 回答
0

最简单的方法是直接在 shell 命令中指定环境变量。然后您可以通过ENVRuby 中的对象访问它们。

例如,创建一个名为env.rb

puts ENV['APPLICATION_ENV']

并像这样在 shell 中运行它:

APPLICATION_ENV='production' ruby env.rb

它应该打印出“生产”一词。

或者,使用以下export命令:

export APPLICATION_ENV='production'
ruby env.rb

您可能希望将该export行添加到某个配置文件中。例如,如果您使用 bash,请将其添加到~/.bashrc,并且每次启动新 shell 时都会执行它。

于 2013-06-27T08:36:34.827 回答