在将nginx配置为反向代理之前,我试图使用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 \
"$@"结果是,样式和图像不是从main_app静态文件夹中收集的。
文件夹结构如下。
django_project
---- django_project
---- main_app
-------- static随后,我尝试使用开发服务器运行相同的应用程序,并收集静态信息。然后,我重新运行与Gunicorn和样式和图像被服务到浏览器没有错误。
到底是怎么回事?
这和这有关吗?是设置nginx让他查看文件的唯一可用选项吗?
发布于 2016-12-05 14:02:00
通过使用额外的中间件库:白雪公主,可以使用gunicorn提供静态文件。正如这些文档所显示的,您所需要做的就是将其包含在MIDDLEWARE_CLASSES设置中。
但是,请注意,仍然最好是直接通过nginx提供文件,而不是沿着这条路线前进。
还请注意,您似乎对收集静态文件和提供静态文件之间的区别感到困惑。“收集”是指进入所有单独的静态目录并复制/链接文件以供服务的过程。这是manage.py collectstatic命令的工作:它与gunicorn或nginx无关,您将始终需要运行该命令。一旦你这样做了,你将能够直接或通过惠特诺服务他们。
https://stackoverflow.com/questions/40975810
复制相似问题