美文网首页
Django 生产环境 静态资源配置

Django 生产环境 静态资源配置

作者: Andrew玩Android | 来源:发表于2017-06-28 18:08 被阅读499次

    部署环境:

    CentOS release 6.7 (Final)
    Python 3.5.3
    Django 1.11.2


    开发环境静态资源没有出过什么问题,一直健康良好的可访问,可在部署到Linux生产环境后出现了访问不到的404问题。

    相对比,官方的指导还不如网上前辈总结的精辟到位。

    我的 settings.py 相关配置文件如下:

    # SECURITY WARNING: don't run with debug turned on in production!
    DEBUG = False
    
    TEMPLATES = [
        {
            'BACKEND': 'django.template.backends.django.DjangoTemplates',
            'DIRS': [os.path.join(BASE_DIR, 'templates')]
            ,
            'APP_DIRS': True,
            'OPTIONS': {
                'context_processors': [
                    'django.template.context_processors.debug',
                    'django.template.context_processors.static',
                    'django.template.context_processors.request',
                    'django.contrib.auth.context_processors.auth',
                    'django.contrib.messages.context_processors.messages',
                ],
            },
        },
    ]
    
    # Static files (CSS, JavaScript, Images)
    # https://docs.djangoproject.com/en/1.11/howto/static-files/
    
    STATIC_URL = '/static/'
    
    # 设置静态文件目录
    STATIC_PATH = os.path.join(os.path.dirname(__file__), 'static')
    
    # 生产环境静态资源目录,执行 manage.py collectstatic 后静态文件存放的路径
    STATIC_ROOT = os.path.join(BASE_DIR, 'release', 'static')
    
    # 生产环境 执行 manage.py collectstatic 后搜索配置的文件列表,存储至STATIC_ROOT目录下
    # 可以用来存储公用资源,如: JQuery, bootstrap等
    STATICFILES_DIRS = (
        # os.path.join(os.path.dirname(__file__), '../static/').replace('\\', '/'),
    )
    
    # 配置项用来控制文件被聚集起来的方式。
    # 默认值是 django.contrib.staticfiles.storage.StaticFilesStorage ,表示将文件集合在 STATIC_ROOT 配置项指定的文件夹中。
    
    # AppDirectoriesFinder 用来在每个app中的 static 文件搜索静态文件,如: $app_name/static/ 。
    # FileSystemFinder 用来搜索在 STATICFILES_DIRS 配置项中指定的文件夹列表中寻找静态文件。
    STATICFILES_FINDERS = (
        'django.contrib.staticfiles.finders.FileSystemFinder',
        'django.contrib.staticfiles.finders.AppDirectoriesFinder',
    #    'django.contrib.staticfiles.finders.DefaultStorageFinder',
    )
    

    配置完后在project目录下执行manage.py collectstatic,会将静态资源导入/release/static目录下。

    用uwsgi启动服务至后台:nohup uwsgi --http :8000 -p 4 --modul horoscope_web.wsgi &

    测试:通过http://***.com/static/images/grain.png即可访问到images下的图片,静态资源css, js也可以正常访问。

    但是admin后台的静态资源还是加载失败,解决后补帖!


    参考:

    Django管理静态文件

    Django官方指南 How to static-files

    Django | 静态文件处理

    django1.10使用本地静态文件

    相关文章

      网友评论

          本文标题:Django 生产环境 静态资源配置

          本文链接:https://www.haomeiwen.com/subject/ydaucxtx.html