静态文件无法使用cpanel加载到在fastcomet上部署的django网站上
该站点已部署,并且在其他方面似乎运行良好,可以从数据库加载,重定向到页面,但是它不加载任何CSS,JavaScript或图像,它不是html,我尝试更改{{1} }移至{% load static %}
,反之亦然,并将直接目录设置为设置文件中的staticfiles文件夹,在我的本地主机上运行良好,我不知道这可能是问题所在。
{% load staticfiles %}
文件中的静态和媒体文件:
settings.py
wsgi.py文件
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'
passenger_wsgi.py
import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault('DJANGO_SETTINGS_MODULE',
'aida_ganaderia_luz_y_sombra.settings')
application = get_wsgi_application()
当前状态:
答案 0 :(得分:0)
很高兴在这里与客户见面:)!
您遇到的问题确实是由cPanel及其处理python脚本的方式引起的。也许每个cPanel Web托管提供商也将遇到同样的问题,如果不是相同的话,那么我相信这个答案对所有cPanel Python用户都是有用的。
由于此事涉及很多技术主题,我将尝试使技术基调更加柔和。
让我们从解释Python和cPanel如何协同工作开始。
在创建python应用程序时,cPanel会创建两件事:
使用此信息,我们可以概述参与您的访问者和python应用程序之间的通信的两项服务-Web服务和python服务。
Web服务只是使用存储在域文档根目录中的.htaccess文件将域映射到python应用程序启动脚本,然后python服务正在处理应用程序的代码逻辑。一旦应用程序代码的结果准备就绪,python将结果发送回Web服务,Web服务最终以简单HTML文件的形式将其发送给访问者。 (与php实际工作方式没有什么不同!)
静态文件请求会发生什么,为什么会导致产生404状态代码?
当涉及静态文件时,与静态文件的情况有所不同。将HTML响应发送给您的访问者后,HTML DOM树立即被加载到他们的浏览器中。
然后,浏览器将请求页面上使用的每个静态资源-图像,js文件,css文件等。但是,静态资源不是由python处理的,因此Web服务器将请求识别为简单的请求,不需要路由到python应用程序。
换句话说,Web服务器希望静态资源位于您域的文档根目录中。但是,它们并不是因为部署了所有python应用程序文件的文档根目录与您的域配置为可以使用的文档根目录不同。我知道这听起来很复杂,但这实际上是了解技术和配置应用程序的问题。
如何解决该错误并使您的应用再次变得出色?
您在这里有两个选择。
例如:
您帐户的主要域是example.com。它配置为与您帐户的public_html目录(文档根目录)一起使用,该目录转换为以下绝对路径:
/home/user/public_html
您的python应用程序部署在该应用程序之外的文件夹中-例如具有以下绝对路径的MyPythonApp:
/home/user/MyPythonApp
保存静态资源的文件夹最初位于python应用程序的文件夹中:
/home/user/MyPythonApp/static/
对导致404错误的静态资源的请求看起来像这样:
GET http://example.com/static/styles.css
只需将“静态”文件夹从/ home / user / MyPythonApp / static移至/ home / user / public_html /,您将允许请求正确获取资源。
但是,对于此任务,您将需要我们的帮助,为此,我想请您向我们的技术支持团队提交故障单,以便他们可以为您提供帮助。如果您喜欢此选项,请向他们发送此问题的参考。
最好的问候!