Nginx为什么不使用django和gunicorn显示静态内容?

时间:2019-02-18 20:58:34

标签: python django nginx gunicorn

我正在尝试在带有python 3.5.3和Django 2.1.7的树莓派3(raspian 9)上使用gunicorn 19.19.0和nginx 1.10.3运行django admin应用程序。 Nginx似乎正常工作,并且Nginx和Gunicorn错误日志为空。该应用程序将不会显示任何静态内容。

我检查了nginx.conf文件。

我运行了collectstatic并检查了所有文件。

我可以将浏览器指向192.168.1.20/static,它显示正确的目录。

我还可以浏览所有文件。

我尝试在nginx.conf文件中的路径后加上'/'

管理应用程序的所有功能都可以正常工作。只是没有静态内容。

我已经搜索并阅读/尝试了所有可以找到的论坛修复程序。

我还运行了python开发服务器(python manage.py runserver)。在该配置中,静态内容可以正常显示。

nginx.conf文件

events{}

http {
    server {
            listen       80;
            server_name  localhost;

            location /static {
                    autoindex on; 
                    alias /home/pi/DigitalClock/dcvenv/static;
            }
            location / {
                    error_log /home/pi/DigitalClock/dcvenv/nginx_err.log;
                    access_log /home/pi/DigitalClock/dcvenv/nginx_acc.log;
                    proxy_pass http://127.0.0.1:8000;
            }
    }
}

gunicorn启动命令

gunicorn dcweb.wsgi:application --bind localhost:8000

django项目设置文件

STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR,'static/')

ngnix_acc.log的最后一个条目(* _err.log为空)

192.168.1.10--[18 / Feb / 2019:12:45:43 -0800]“ POST / admin / login /?next = / admin / HTTP / 1.1” 302 0“ http://192.168.1.20/admin/login/?next=/admin/”“” Mozilla / 5.0(Windows NT 10.0; Win64; x64)AppleWebKit / 537.36(KHTML,例如Gecko)Chrome / 71.0.3578.98 Safari / 537.36” 192.168.1.10--[18 / Feb / 2019:12:45:43 -0800]“ GET / admin / HTTP / 1.1” 200 4944“ http://192.168.1.20/admin/login/?next=/admin/”“” Mozilla / 5.0(Windows NT 10.0; Win64; x64 )AppleWebKit / 537.36(KHTML,例如Gecko)Chrome / 71.0.3578.98 Safari / 537.36“ 192.168.1.10--[18 / Feb / 2019:12:45:59 -0800]“ GET / admin / auth / group / HTTP / 1.1” 200 3500“ http://192.168.1.20/admin/”“ Mozilla / 5.0(Windows NT 10.0 ; Win64; x64)AppleWebKit / 537.36(KHTML,例如Gecko)Chrome / 71.0.3578.98 Safari / 537.36“ 192.168.1.10--[18 / Feb / 2019:12:45:59 -0800]“ GET / admin / jsi18n / HTTP / 1.1” 200 3185“ http://192.168.1.20/admin/auth/group/”“ Mozilla / 5.0(Windows NT 10.0; Win64 ; x64)AppleWebKit / 537.36(KHTML,例如Gecko)Chrome / 71.0.3578.98 Safari / 537.36“

1 个答案:

答案 0 :(得分:0)

将此代码放在您的settings.py中,然后您有了collectstatic,还测试了DEBUG = True

ROJECT_ROOT = os.path.dirname(os.path.abspath(__file__))
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')  # specify static root

添加您的url项目

from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [
   # ... the rest of your URLconf goes here ...
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

更新对您的项目尝试这种方式。

urlpatterns = patterns('',
....urls......
) + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

在您的settings.py

BASE_DIR = os.path.dirname(os.path.dirname(__file__))
REPOSITORY_ROOT = os.path.dirname(BASE_DIR)

# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.6/howto/static-files/

STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(REPOSITORY_ROOT, 'static/')

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(REPOSITORY_ROOT, 'media/')