使环境变量适用于所有脚本和编程语言

使环境变量适用于所有脚本和编程语言

我在同一台服务器上有一些 GO、Node 和 PHP 应用程序使用的变量。我试图将所有变量放入系统中,并使它们可供所有应用程序使用。

但是我尝试将变量放入 ~/.profile、etc/profile 和 /etc/environment 中,并且我可以通过终端访问它们,或者如果从终端运行脚本,但如果尝试使用主管运行,例如使用主管运行 go app 以及从 nginx 服务器运行的 PHP 脚本运行,似乎脚本找不到变量。

我是否遗漏了什么或者有更好的方法?

答案1

1. 个人资料和非交互式使用

profile-files 仅在交互式 shell/环境中加载,因此如果命令以非交互式方式运行(例如nginx在后台运行),则不会加载。因此,系统范围变量的唯一方法是/etc/environment

2.nginx具体问题

nginx实际上杀死了所有环境变量。nginx 文档

默认情况下,nginx 会删除从其父进程继承的除 TZ 变量之外的所有环境变量。

在您的nginx-config中,使用env variable=value;重新定义或env variable从系统继承它。

3.supervisor具体问题

所以:环境变量是从运行它的 shell 继承的,如果从来没有,那么您将必须定义它们。

添加EnvironmentFile=/etc/environmentsystemd的服务文件中supervisor。我假设您是这样运行它的?

相关内容