我确信这个问题已经多次被问过许多不同的格式,但对于我的生活,我没有看到明确的答案,只是点点滴滴和相互矛盾的评论。
我希望我的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);
}
答案 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的更多信息: