这是一个食谱:
将环境变量写入文件/home/ubuntu/prog/.env。在export FLASK_APP=/home/ubuntu/prog/hello.py
export SECRET_KEY=ABCD
export DATABASE_PASSWORD=EFGH
使用dotenv的load_dotenv加载环境变量。在
^{pr2}$
写一个文件/etc/supervisor/hello.conf。在[program:hello]
command=/home/ubuntu/venv/bin/gunicorn -b localhost:8000 hello:app
directory=/home/ubuntu/prog
stdout_logfile=/home/ubuntu/prog/hello_out.log
stderr_logfile=/home/ubuntu/prog/hello_err.log
user=ubuntu
autostart=true
autorestart=true
stopasgroup=true
killasgroup=true
[supervisord]
logfile=/home/ubuntu/prog/hello_supervisord.log
pidfile=/tmp/supervisord.pid
加载环境并指向应用程序。在source /home/ubuntu/prog/.env
环境变量现在已加载$ export | grep SECRET
declare -x SECRET_KEY="ABCD"
它们将传递给子进程,而不会扰乱supervisord的{}。在
在前台启动supervisord,确认一切正常。在/usr/bin/supervisord -n -edebug -c /etc/supervisor/hello.conf
从另一个外壳确认一切正常。在$ curl localhost:8000
ABCDEFGH
杀死supervisord。既然它在前景中,只要按CTRL-c就足够了。在
作为守护程序启动supervisord。在/usr/bin/supervisord -c /etc/supervisor/hello.conf
注意三个日志文件prog/hello_out.log,prog/hello_err.log,和{}。在
使用{cd6}来避免{cd6}是最重要的。所以chatter建议它处理逗号、引号、制表符甚至换行符。从经验上讲,这并不成立(至少对于supervisord3.3.5),文档也不会以这种或那种方式解决它。两条线942-943
似乎是parsing发生的地方,如果有人愿意调查文档的不足。在