未在 Azure 上提供 Django 静态文件
Django Staticfiles not being served on Azure
我正在尝试将一个简单的 Django Web 应用程序部署到 Azure 网站。我正在为 Visual Studio 使用 Python 工具,因为我无法通过任何其他方式进行远程工作。我遇到了一个问题,我的模板加载但 none 的静态文件将加载。我创建了一个名为 static 的文件夹,并更新了 settings.py 如下:
STATICFILES_DIRS = (os.path.join(BASE_DIR, "static"),)
STATIC_ROOT = ''
STATIC_URL = '/static/'
我的模板(称为 index.html)存储在根目录中的模板文件夹中,我引用的文件如下:<img class='social' src="{% static 'VSpace/images/128-twitter.png' %}"/>
页面以纯 HTML(无 CSS 或图像)加载,在浏览器的开发人员视图中,我看到在请求图像和其余静态文件时返回了 404。
我花了几个小时寻找解决方案并进行了各种更改。有谁知道我可能做错了什么吗?
在 Azure 网站上,python 应用程序使用 FastCGI 托管在 IIS 上。使用前面的 web.config 配置,所有请求都被路由到 Django 应用程序。并且使用VS部署Django应用,app文件夹和static文件夹都在根文件夹中。所以我们可以手动配置IIS设置,这里是我的步骤:
1、我用VS创建了一个Django项目,我用默认设置部署在Azure Web app上,应该是这样的:
STATIC_ROOT = path.join(PROJECT_ROOT, 'static').replace('\', '/')
STATIC_URL = '/static/'
STATICFILES_DIRS = ()
2、通过URL
的格式登录您的Web应用程序的Kudu控制台
https://<your_web_site_name>.scm.azurewebsites.net/DebugConsole
,并在文件夹 D:\home\site\wwwroot\static 中访问,
在命令行中键入 'type nul>web.config'
以创建一个空的 web.config
文件。
3、编辑 web.config copy3、编辑 web.config 将以下代码复制到文件中,保存并在 Azure 门户中重新启动网站。
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<!-- this configuration overrides the FastCGI handler to let IIS serve the static files -->
<handlers>
<clear/>
<add name="StaticFile" path="*" verb="*" modules="StaticFileModule" resourceType="File" requireAccess="Read" />
</handlers>
</system.webServer>
</configuration>
中获得更多信息
您可以试试 WhiteNoise,它非常简单,因为它专门为那些在 Django STATIC_ROOT 变量指定的文件夹中找到的文件提供服务。
看看这个link它描述了如何设置https://docs.microsoft.com/en-us/azure/app-service/configure-language-python#serve-static-files-for-django-apps
我正在尝试将一个简单的 Django Web 应用程序部署到 Azure 网站。我正在为 Visual Studio 使用 Python 工具,因为我无法通过任何其他方式进行远程工作。我遇到了一个问题,我的模板加载但 none 的静态文件将加载。我创建了一个名为 static 的文件夹,并更新了 settings.py 如下:
STATICFILES_DIRS = (os.path.join(BASE_DIR, "static"),)
STATIC_ROOT = ''
STATIC_URL = '/static/'
我的模板(称为 index.html)存储在根目录中的模板文件夹中,我引用的文件如下:<img class='social' src="{% static 'VSpace/images/128-twitter.png' %}"/>
页面以纯 HTML(无 CSS 或图像)加载,在浏览器的开发人员视图中,我看到在请求图像和其余静态文件时返回了 404。
我花了几个小时寻找解决方案并进行了各种更改。有谁知道我可能做错了什么吗?
在 Azure 网站上,python 应用程序使用 FastCGI 托管在 IIS 上。使用前面的 web.config 配置,所有请求都被路由到 Django 应用程序。并且使用VS部署Django应用,app文件夹和static文件夹都在根文件夹中。所以我们可以手动配置IIS设置,这里是我的步骤:
1、我用VS创建了一个Django项目,我用默认设置部署在Azure Web app上,应该是这样的:
STATIC_ROOT = path.join(PROJECT_ROOT, 'static').replace('\', '/')
STATIC_URL = '/static/'
STATICFILES_DIRS = ()
2、通过URL
的格式登录您的Web应用程序的Kudu控制台https://<your_web_site_name>.scm.azurewebsites.net/DebugConsole
,并在文件夹 D:\home\site\wwwroot\static 中访问,
在命令行中键入 'type nul>web.config'
以创建一个空的 web.config
文件。
3、编辑 web.config copy3、编辑 web.config 将以下代码复制到文件中,保存并在 Azure 门户中重新启动网站。
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<!-- this configuration overrides the FastCGI handler to let IIS serve the static files -->
<handlers>
<clear/>
<add name="StaticFile" path="*" verb="*" modules="StaticFileModule" resourceType="File" requireAccess="Read" />
</handlers>
</system.webServer>
</configuration>
中获得更多信息
您可以试试 WhiteNoise,它非常简单,因为它专门为那些在 Django STATIC_ROOT 变量指定的文件夹中找到的文件提供服务。
看看这个link它描述了如何设置https://docs.microsoft.com/en-us/azure/app-service/configure-language-python#serve-static-files-for-django-apps