Сервер apache не может найти статические файлы в проекте Django
Я пытаюсь загрузить свой код на сервер Apache, используя mod_python. Я много пробовал, но сервер не может получить доступ к моим статическим файлам (все мои изображения, js и css). Вот мои настройки Virtualhost:
<VirtualHost *:80>
ServerName mysite.com
ServerAlias www.mysite.com
Alias /static/ /home/mysite/products/static/
#
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.mysite\.com
RewriteRule (.*) http://mysite.com$1 [R=301,L]
#
DocumentRoot /home
<Directory /home/mysite/>
SetHandler mod_python
PythonHandler mod_python.publisher
PythonDebug On
</Directory>
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog /var/log/apache2/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog /var/log/apache2/access.log combined
</VirtualHost>
мой журнал доступа:
"GET /giftproducts/static/js/top.js HTTP/1.1" 404 1487 "http://xxx.xxx.xx.xxx/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.65 Safari/537.31"
xxx.xxx.xx.xxx - - [23/Apr/2013:15:09:52 -0500] "GET /giftproducts/static/css/index.css HTTP/1.1" 404 1486 "http://xxx.xxx.xx.xxx/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.65 Safari/537.31"
(404 страницы не найдены-ПОЧЕМУ!?)
settings.py:
import os
import sys
path = os.path.abspath(os.path.join(os.path.dirname(__file__)))
MEDIA_ROOT = path + '/products/media/'
MEDIA_URL = '/media/'
PROJECT_ROOT = path
STATIC_ROOT = path + '/products/static/'
STATIC_URL = '/products/static/'
STATICFILES_DIRS = (
path,
)
STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
# 'django.contrib.staticfiles.finders.DefaultStorageFinder',
)
TEMPLATE_DIRS = (
path + '/products/templates',
) #this works, since it is loading the html
попытался указать пути типа "/static/x" и "{{ STATIC_URL }}x", но ничего не работает.
Любая помощь в этом была бы отличной. Благодарю.
ОБНОВЛЕНИЕ: в дополнение к тому, что Глин предложил ниже, я добавил эти строки в свой urls.py, и тогда это сработало.
if settings.DEBUG:
urlpatterns += patterns('',
(r'^static/(?P<path>.*)$', 'django.views.static.serve',
{'document_root': settings.STATIC_ROOT}),
)
1 ответ
1) Правильно ли вы настроили статические файлы на виртуальном хосте? Я их не вижу...
т.е.
Alias /media/ /products/static
Alias /static/ /products/static
<Directory /products/static>
Order allow,deny
Allow from all
</Directory>
2) В ваших шаблонах всегда используйте {{ STATIC_URL }}
для извлечения статических файлов это лучшая практика.
3) Добавить django.contrib.staticfiles
и запустить collectstatic
команда управления