Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 尝试多种解决方案后,无法在生产环境中加载静态文件_Python_Django_Static - Fatal编程技术网

Python 尝试多种解决方案后,无法在生产环境中加载静态文件

Python 尝试多种解决方案后,无法在生产环境中加载静态文件,python,django,static,Python,Django,Static,我已将django项目从开发转移到生产服务器。部署后,我无法查看页面上的静态文件 我知道django在调试关闭后不提供静态文件,并且已经尝试使用whitenoise来提供静态文件 尝试1-白噪声 这些是我对settings.py所做的更改 MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'whitenoise.middleware.WhiteNoiseMiddleware', 'django.

我已将django项目从开发转移到生产服务器。部署后,我无法查看页面上的静态文件

我知道django在调试关闭后不提供静态文件,并且已经尝试使用whitenoise来提供静态文件

尝试1-白噪声

这些是我对settings.py所做的更改

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'whitenoise.middleware.WhiteNoiseMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
和wsgi.py:

from whitenoise.django import DjangoWhiteNoise
...
application = get_wsgi_application()
application = DjangoWhiteNoise(application)
然后运行collectstatic。然而,我的网页仍然没有加载任何静态文件

尝试2-Apache-mod_wsgi

在第二次尝试中,我尝试使用apache+mod_wsgi,具体来说,我使用cpanel中的终端连接到我的VPS,安装了apache2,并遵循了一个命令

创建了我的conf文件

sudo nano new_config.conf
加上这个

<VirtualHost *:80>
        ServerName 127.0.0.1
        ServerAlias localhost

        Alias /static /var/gradientboostmvp/static/
        WSGIScriptAlias / /var/gradientboostmvp/django_school/wsgi.py

        <Directory /var/gradientboostmvp/>
                Order deny,allow
                Allow from all
        </Directory>

        DocumentRoot /var/gradientboostmvp
</VirtualHost>
在apache2.config中添加了我的WSGIPythonPath

WSGIPythonPath /var/gradientboostmvp
已保存更改的文件,但仍无法加载静态文件

尝试3-导入服务

我还提出了一个类似的问题,该问题以重复形式结束。我试过了书中提供的解决方案

这导致我在尝试访问主页时收到一条错误消息

收到不完整的申请回复


既然您使用Apache来服务django,那么为什么不使用它来服务静态文件呢。根据,首先需要使用将静态文件存储到特定文件夹。例如,在您的设置中,如果您已指定为:

STATIC_ROOT = '/path/to/mysite.com/static/'
然后,当您运行collect static时,静态文件将存储在
/path/to/mysite.com/static/
目录中

然后将该路径作为别名添加到apache:

Alias /static/ /path/to/mysite.com/static/

可能是错误的,但这是您在尝试2Did下尝试运行collectstatic时尝试的方法,您是否可以验证您的
/var/gradientboostmvp/static/
文件夹中是否有静态文件?是的,我运行collectstatic,并且在该路径中有静态文件我不擅长此操作,但是你能试着像这样给
静态
路由授予权限吗:
要求所有被授予的
from django.views.static import serve
...
urlpatterns = [
    path('', classroom.home, name='home'),
    path('about', classroom.about, name='about'),
    path('courses', classroom.courses, name='courses'),
    path('course_details', classroom.course_details, name='course_details'),
    path('static',serve {'document_root':settings.STATIC_ROOT}),
STATIC_ROOT = '/path/to/mysite.com/static/'
Alias /static/ /path/to/mysite.com/static/