Я пытался настроить Apache (2.2.15) в качестве прокси с gunicorn и django (1.6.11) на сервере CentOS (6.7), но у меня возникла проблема со статическими файлами. (Я новичок в django)
Я уже просмотрел отличную документацию, которую предоставляет Django, а также несколько других сообщений stackoverflow, но безрезультатно.
Что я мог проверить:
- Проблема, похоже, не связана с Django или шаблонами, поскольку запуск сервера разработки с 'DEBUG = False' и параметром '--insecure' работает нормально.
- Вероятно, это проблема с блоком псевдонима и каталога, который я добавил в свой виртуальный хост, но я не могу понять, почему он не работает.
- В Gunicorn не должно быть никаких слов, поскольку он не обслуживает статические файлы.
Как выглядит моя конфигурация:
1) Я поместил статические файлы моего проекта в / var / www / myproject / static благодаря команде collectstatic.
2) Затем я создал виртуальные хосты (где, я думаю, проблема):
(первый для перенаправления на HTTPS)
<virtualhost *:80>
ServerAdmin [email protected]
ServerName localhost
ServerSignature Off
RewriteEngine on
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^/(.*) https://%{HTTP_HOST}/$1 [NC,R,L]
</virtualhost>
(второй для актуальной работы)
<virtualhost *:443>
ServerAdmin [email protected]
ServerName localhost
ServerSignature Off
DocumentRoot /var/www/myproject
Alias /static/ "/var/www/myproject/static/"
<Directory "/var/www/myproject/static">
Order Allow,Deny
Allow from All
</Directory>
ProxyPass / http://127.0.0.1:8000/ connectiontimeout=150 timeout=300
ProxyPassReverse / http://127.0.0.1:8000/
ProxyPreserveHost On
ProxySet http://127.0.0.1:8000/ connectiontimeout=150 timeout=300
... here goes the SSL and Log configuration ...
</virtualhost>
После перезапуска службы мои статические файлы не загружались, и при их получении у меня была ошибка 404. Команда «httpd -S» не вызывала ошибок, а остальные функции веб-интерфейса работают отлично.
Я также пробовал без окончания '/' для псевдонима '/ static /', поскольку это казалось проблемой для некоторых других людей, попытался переместить файлы непосредственно в / var / www / myproject и получить к ним доступ без псевдонима с помощью DocumentRoot ...
Если вы хотите взглянуть на django settings.py (не знаю, актуален ли он, но некоторые гуру django тоже могут найти там что-то не так):
STATIC_ROOT = '/var/www/myproject/static/'
STATIC_URL = '/static/'
STATICFILES_DIRS = (os.path.join(os.path.dirname(__file__),'static',),)
А также шаблоны:
{% load staticfiles %}
....
<link href="{% static 'bower_components/bootstrap/dist/css/boostrap.min.css %}" rel="stylesheet">
Urls.py проекта:
from django.conf.urls import patterns, include, url
from django.shortcuts import redirect
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = patterns('',
url(r'^$', lambda x: redirect('/Collecte/')),
url(r'^Collecte/', include('Collecte.urls', namespace="Collecte")),
) + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
И urls.py приложения (названного "Collecte"):
from django.conf.urls import patterns, url
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
from Collecte import views
urlpatterns = patterns('',
url(r'^$', views.index, name='index'),
url(r'^Collectes/Execution/ù', views.CollExecution, name='CollExecution'),
... quite a lot of them ...
)
# Commented this line from a suggestion, was present at start
#urlpatterns += staticfiles_urlpatterns
Если вам кажется, что отсутствует какой-либо файл, чтобы вопрос был актуальным, просто попросите его, и я сделаю все возможное :).