使用Apache

时间:2015-05-20 22:49:30

标签: django apache httpd.conf

有没有办法从Apache提供2个或更多静态目录?我正在使用Django,它可以正常工作1个静态路径;当我放2时它忽略了第二个。

我不想使用collecstatic。只是尝试设置我的开发环境,我喜欢分别在每个应用程序中保持静态。我知道在生产中这会改变。

这是我的Apache httpd.conf代码:

#games app
Alias /static/ "C:/nerd_project/nerd/games/static/"
<Directory "C:/nerd_project/nerd/games/static">
Require all granted
</Directory>

#ice_cream app
Alias /static/ "C:/nerd_project/nerd/ice_cream/static/"
<Directory "C:/nerd_project/nerd/ice_cream/static">
Require all granted
</Directory>

游戏应用有效;加载CSS和图像

ice_cream app无法加载并被忽略

3 个答案:

答案 0 :(得分:1)

您正尝试将相同的网址路径/static/别名为两个目录。这就是它失败的原因。

Django在Serving static files during development.

上有很好的文档

检查STATICFILES_DIRS设置文档以提供来自多个目录的静态文件。

如果您尝试为多个静态项目提供服务,可以考虑使用VirtualHost。

答案 1 :(得分:1)

直到今天早上我也遇到了同样的问题并登陆此页面以了解我的静态文件配置失败的原因。

您可以为多个静态位置的应用提供服务。 看看我如何运行两个Flask应用程序和一个运行的Django应用程序,并为所有人提供从不同位置提供的静态文件。

    ServerName ec2-52-20-211-238.compute-1.amazonaws.com

# logs configuration
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined

WSGIDaemonProcess aira  threads=5
WSGIScriptAlias /aira /var/www/aira/aira/aira/aira.wsgi
Alias /aira/static/ /var/www/aira/aira/aira/static/
<Directory /var/www/aira/aira/aira/>
  Order allow,deny
  Allow from all
</Directory>

WSGIDaemonProcess ama threads=5
WSGIScriptAlias /ama /var/www/AMA/ama.wsgi
Alias /ama/static/ /var/www/AMA/static/
<Directory /var/www/AMA>
  Order allow,deny
  Allow from all
</Directory>

WSGIDaemonProcess realestatesurvey threads=5
WSGIScriptAlias /RealEstateSurvey /var/www/RealEstateSurvey/mydata/wsgi.py
Alias /RealEstateSurvey/static/ /var/www/RealEstateSurvey/mydata/static/
<Directory /var/www/RealEstateSurvey/mydata/static>
  Order allow,deny
  Allow from all
</Directory>

只需使用烧瓶模板 对于Django: STATIC_URL ='/ RealEsatateSurvey / static' 在html文件中: -

答案 2 :(得分:0)

我确切地想到了使用Apache服务多个静态目录需要做些什么。

此页https://docs.djangoproject.com/en/1.8/howto/static-files/提及:

“此辅助函数仅服务于实际的STATIC_ROOT文件夹;它不执行像django.contrib.staticfiles这样的静态文件发现。”

+ static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)添加到urls.py时未加载css和图像。您必须仔细阅读并转到此页面:

https://docs.djangoproject.com/en/1.8/ref/contrib/staticfiles/#django.contrib.staticfiles.views.serve

我将以下内容添加到我的urls.py中,现在它的工作原理:

from django.conf import settings
from django.contrib.staticfiles import views

if settings.DEBUG:
    urlpatterns += [
        url(r'^static/(?P<path>.*)$', views.serve),
    ]

我只是注释掉指向Apache的httpd.conf文件中的2个静态目录的别名和目录。 当然,这仅限于开发服务器,因为我喜欢在每个应用程序中保留静态。