Centos:在启动时设置全局环境变量

时间:2018-02-01 02:58:47

标签: node.js amazon-web-services amazon-ec2 environment-variables centos7

我确信这个问题已经多次被问过许多不同的格式,但对于我的生活,我没有看到明确的答案,只是点点滴滴和相互矛盾的评论。

我希望我的AWS CentOS 7 EC2服务器能够使用我的应用程序(特别是Node.js应用程序)使用的某组variable =值启动。

如何制作一个可以在启动时自动执行的文件(以及稍后在CodeDeploy期间随意执行),这些文件可以使这些变量可用于任何进程和配置文件?什么是完整的程序?

MY_ENV=production
MY_OTHER_VAR=something with spaces for example

我的app.js:

function(){
   console.log('Hey, this is my variable: ', process.env.MY_ENV);
}

2 个答案:

答案 0 :(得分:0)

编写启动脚本以启动服务器。在启动服务器之前,在启动脚本中导出所有变量。也许是这样的: //startup.js

export MY_ENV=prodcution
export MY_OTHERVAR=somevalue
nohup node index.js & > server.log

当您使用此脚本启动服务器时,这些变量将在启动之前导出,并将在流程环境中可用。

另一种方法可能是使用像ansible这样的部署。这样,您可以在运行启动脚本之前使用任何其他文件导出变量。

答案 1 :(得分:0)

最简单的方法是使用用户数据脚本。

在您的用户数据中,您将在/ etc / environment文件中创建条目:

cat <<EOF >> /etc/environment
MY_ENV=production
MY_OTHERVAR=x
EOF

这将确保您的变量在实例初始化后可供所有进程和用户shell使用,并将在重新引导之间保持不变。

请参阅 https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html

另见以下有关Heredoc的更多信息:

How can I write a heredoc to a file in Bash script?