例如,在我的my_application / settings.py文件中,我有几个print
语句,因此:
print( 'running settings.py: ALLOWED_HOSTS: ' )
print( '\n'.join( ALLOWED_HOSTS ) )
...此输出实际上在运行nginx和Gunicorn的远程服务器上的什么地方?
注意,我知道,就我所知,在任何地方打印ALLOWED_HOSTS
可能都是严重的安全漏洞。这仅是示例:我处于学习/实验阶段。
AKX回答后编辑我尝试了他链接的-R
选项,如下所示:/ etc / systemd / system / gunicorn-mysite.xyz.service:
[Unit]
Description=Gunicorn server for mysite.xyz
[Service]
Restart=on-failure
User=mike
WorkingDirectory=/home/mike/sites/mysite.xyz
EnvironmentFile=/home/mike/sites/mysite.xyz/.env
ExecStart=/home/mike/sites/mysite.xyz/virtualenv/bin/gunicorn \
-R=True \
--bind unix:/tmp/mysite.xyz.socket superlists.wsgi:application
[Install]
WantedBy=multi-user.target
我发现这会阻止Gunicorn启动。我还单独尝试了-R
,没有=True
,也没有-R True
(只是一个空格),并且还尝试了另一种长替代开关--enable-stdio-inheritance
的排列。什么也没做。
但是,我还可以使用其他开关:
ExecStart=/home/mike/sites/mysite.xyz/virtualenv/bin/gunicorn \
--bind unix:/tmp/mysite.xyz.socket \
--error-logfile /home/mike/gunicorn-error.log \
--access-logfile /home/mike/gunicorn.log \
superlists.wsgi:application
...效果很好:Gunicorn已启动,现场直播。
在任何时候都不会在print
日志中产生任何journalctl
输出。我还在my_application / settings.py文件中引入了故意的语法错误,这也导致Gunicorn启动失败。因此,这将产生stderr
输出。同样,journalctl
日志中什么也没有显示。
与此同时,我还试图了解Gunicorn的“正常”日志的位置(即不是stdout
或stderr
)。
[当您是新手,并且难以理解为什么会遇到令人困惑的502或400错误时,查看错误日志和正常输出的能力非常重要。
除了stdout
,stderr
并在Gunicorn启动并运行后进行日志记录,如果发现Gunicorn systemd
配置文件在某种程度上是“错误的”,是否会有任何输出...如下所示使用-R
开关进行实验时发生了什么?
无论是谁的烈性黑啤酒的标准输出指向。
例如,如果您在systemd
下运行事物,它们将最终进入系统日志,您可以使用journalctl
进行阅读。
当您运行gunicorn时,会有一个名为--access-logfile的特殊参数,它指定要写入的访问日志文件。如果您更喜欢stdout,则将'-'设置为value参数。例如:
gunicorn --access-logfile - demoapp.wsgi