我试图在配置nginx作为反向代理之前使用gunicorn来提供静态文件,并且我有点困惑。Gunicorn如何收集静态?
当我运行我的应用程序时,它似乎像gunicorn无法找到应用程序中的静态文件夹。
我有以下脚本来运行我的Django应用程序。
#!/bin/bash
# Start with development server
# echo Start server.
# python manage.py runserver 0.0.0.0:8000
# python manage.py collectstatic --noinput # Collect static files
# # Prepare log files and start outputting logs to stdout
touch /srv/logs/gunicorn.log
touch /srv/logs/access.log
tail -n 0 -f /srv/logs/*.log &
# # Start Gunicorn processes
echo Starting Gunicorn.
exec gunicorn django_project.wsgi:application \
--name ds4dems \
--bind 0.0.0.0:8000 \
--workers 3 \
--log-level=info \
--log-file=/srv/logs/gunicorn.log \
--access-logfile=/srv/logs/access.log \
"[email protected]"
结果是样式和图像不是从main_app静态文件夹收集的。
文件夹结构如下。
django_project
---- django_project
---- main_app
-------- static
以下我试图用开发服务器运行相同的应用程序,并收集静态数据。然后,我再次与Gunicorn合作,并将样式和图像传送给浏览器而不会出错。
究竟发生了什么?
这是否与this?是唯一可用的选项来设置nginx让他看到文件?
我有一张你可能会觉得有用的图画:http://djangodeployment.com/2016/11/21/how-django-static-files-work-in-production/。它假设你使用'nginx'或'apache',但即使使用whitenoise,它也可能是有用的,因为原理是相同的。 –
太好了。我会为此制作一张海报。 :) – sparaflAsh