Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js Centos:在启动时设置全局环境变量_Node.js_Amazon Web Services_Amazon Ec2_Environment Variables_Centos7 - Fatal编程技术网

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

Node.js Centos:在启动时设置全局环境变量,node.js,amazon-web-services,amazon-ec2,environment-variables,centos7,Node.js,Amazon Web Services,Amazon Ec2,Environment Variables,Centos7,我确信这个问题已经以不同的形式被问过很多次了,但就我的一生而言,我没有看到一个明确的答案,只有零碎的和相互矛盾的评论 我希望我的AWS CentOS 7 EC2服务器使用一组特定的变量=值启动,以供我的应用程序(特别是Node.js应用程序)使用 如何创建一个可以在启动时自动执行(稍后,例如在CodeDeploy期间随意执行)的文件,使这些变量可用于任何流程和概要文件?完整的程序是什么 MY_ENV=production MY_OTHER_VAR=something with spaces fo

我确信这个问题已经以不同的形式被问过很多次了,但就我的一生而言,我没有看到一个明确的答案,只有零碎的和相互矛盾的评论

我希望我的AWS CentOS 7 EC2服务器使用一组特定的变量=值启动,以供我的应用程序(特别是Node.js应用程序)使用

如何创建一个可以在启动时自动执行(稍后,例如在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);
}

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

export MY_ENV=prodcution
export MY_OTHERVAR=somevalue
nohup node index.js & > server.log
当您使用此脚本启动服务器时,这些变量将在启动前导出,并在流程环境中可用


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

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

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

cat <<EOF >> /etc/environment
MY_ENV=production
MY_OTHERVAR=x
EOF
cat/etc/environment
MY_ENV=生产
MY_OTHERVAR=x
EOF
这将确保您的变量在实例初始化后对所有进程和用户shell都可用,并且在重新启动之间保持不变

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


很抱歉,这似乎是一个不完整的答案,问题与我发布问题的理由类似。“编写启动脚本”-如何,将其放置在何处,如何使其可执行,它是否适用于所有配置文件(例如,Windows中的
PATH
变量)。请记住,我们讨论的是在运行任何实际应用程序文件之前设置Linux环境,以便它们可以自由使用变量。我会考虑一个大于零碎的答案,它实际上可以作为指导。谢谢测试和修改工作;接受您的答案,但编辑以修复语法,并根据heredoc更正换行符。非常感谢关于EC2用户数据的提示;这对我也有帮助。谢谢你的编辑。为防止覆盖现有设置,应使用>>附加运算符将heredoc附加到文件中。我已经做了编辑。