带有Nginx和uWSGI的Django CDN

时间:2016-12-04 13:37:59

标签: django nginx cdn uwsgi django-staticfiles

我无法使用Django 1.10,uWSGI和Nginx提供静态文件。

我有一个index.html文件,其中包含CDN。

Django文档here表示“将静态文件传输到存储提供程序或CDN”。这意味着什么,“转移到CDN”?是不是从哪里获取文件的CDN?

settings.py包含,

STATIC_URL = '/static/'

STATIC_ROOT = 'nonAppBoundStaticDirectory'

STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static'),
]

正在运行

$ python manage.py collectstatic

这会将所有CDN放在我的目录'nonAppBoundStaticDirectory'中吗?

如果是,那么我如何在模板中使用它?

摘自index.html

  <!-- Bootstrap -->
  <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.1/css/bootstrap.min.css">

来自/etc/nginx/nginx.conf

的摘录
server {
    # the port your site will be served on
    listen  80;
    # the domain name it will serve for
    server_name example.com;   # substitute your machine's IP address or FQDN
    charset     utf-8;

    #Max upload size
    client_max_body_size 75M;   # adjust to taste

    # Django media
    location /media  {
                alias /home/ofey/djangoForum/fileuploader/uploaded_files;      # your Django project's media files
    }

        location /static {
                alias /home/ofey/djangoForum/noAppBoundStaticDirectory;     # your Django project's static files
        }
........

谢谢,

2 个答案:

答案 0 :(得分:1)

这可能只是拼写错误。在settings.py中,您在目录名称中有额外的n

STATIC_ROOT = 'nonAppBoundStaticDirectory'

在你的nginx配置中,你有不同的拼写。

location /static {
    alias /home/ofey/djangoForum/noAppBoundStaticDirectory; 

确保路径指向完全相同的目录。在这两种情况下使用绝对路径都是个好主意。

答案 1 :(得分:0)

  1. 在开发服务器上工作

如果您在开发服务器中工作 - 从 settings.py 中删除 STATIC_ROOT。您的 settings.py 现在应如下所示:

    STATIC_URL = '/static/'

    STATICFILES_DIRS = [
        os.path.join(BASE_DIR, 'static'),
    ]
  1. 生产

如果您在生产中工作 - 从 settings.py 中删除 STATICFILES_DIRS。您的 settings.py 现在应如下所示:

    STATIC_URL = '/static/'

    STATIC_ROOT = 'nonAppBoundStaticDirectory'

不要忘记运行:

    python manage.py collectstatic