我尝试在CentOS中将敏感信息设置为环境变量,并将它们传递给主文件中使用的Flask配置文件,即 init .py。但它没有用。 Flask应用程序在Apache下运行。
我首先以root用户身份编辑/ etc / environment
MAIL_USERNAME="abcde@abc.com"
然后注销,再次登录 然后通过运行
验证MAIL_USERNAME是否已设置echo $MAIL_USERNAME
这很好用
在configuration.py中,这就是我设置MAIL_USERNAME的方式。
MAIL_USERNAME = os.environ.get('MAIL_USERNAME')
用于测试目的, 我打印出MAIL_USERNAME
in __init__.py
print(MAIL_USERNAME)
然后从终端,如果我跑
python3.4 __init__.py
打印出正确的MAIL_USERNAME
值但是,如果我在网络浏览器上测试过,那么MAIL_USERNAME就没有设置好。它显示无。我通过查看Apache日志来验证这一点。
任何关于如何运作的想法都会非常感激。
由于
答案 0 :(得分:1)
使用CLI,根据需要设置环境变量。在Linux和macOS上,这是通过export KEY=value
完成的。
之后,环境变量KEY
将通过os.environ.get('KEY')
用于您的Python脚本或Flask应用程序,如下所示:
import os
print os.environ.get('key')
>>> value
答案 1 :(得分:0)
我遇到了一个非常类似的问题,因为我使用PyCharm
终端来运行烧瓶。描述并解决了类似的问题here。
我的解决方案是切换到常规cmd(我在Windows 10上工作)并在那里运行所有内容:
>> set MAIL_USERNAME='bla@example.com'
... (other env variables sets)
>> py manage.py runserver (I run my flask app through a manage script)
我可以使用我的烧瓶应用程序成功发送电子邮件 - 应用程序中使用的所有环境变量都已正确读取。
在Linux上,您可以使用export
代替set
。
我希望它有所帮助。
答案 2 :(得分:0)
也许您可以使用Apache官方网络上记录here的Apache指令PassEnv
,该指南记录了如何使用环境变量。
有两种环境变量会影响Apache HTTP Server。
首先,存在由底层控制的环境变量 操作系统。这些是在服务器启动之前设置的。它们可以用于 扩展配置文件,可以选择将其传递给CGI脚本 和SSI使用 PassEnv 指令。
第二,Apache HTTP Server提供了一种用于存储信息的机制 在也称为环境变量的命名变量中。这个信息 可用于控制各种操作,例如日志记录或访问控制。 变量还用作与外部程序进行通信的机制 例如CGI脚本。本文档讨论了不同的操作方式和 使用这些变量。
尽管这些变量称为环境变量,但它们是 与底层控制的环境变量不同 操作系统。相反,这些变量是在中存储和处理的 内部Apache结构。它们仅成为实际的操作系统环境 变量提供给CGI脚本和Server Side Include脚本时。 如果您希望操纵服务器所在的操作系统环境 本身运行,必须使用标准的环境操纵机制 由您的操作系统外壳程序提供。
我将上面引用的某些文本加粗,以使事情更清楚,也可能更容易解释。
希望这会有所帮助。