Назад | Перейти на главную страницу

Развертывание Django с помощью mod_wsgi

/etc/apache2/site-available/mysite.com

<VirtualHost my_ip_here:80>
     ServerAdmin foo@mysite.com
     ServerName mysite.com
     ServerAlias www.mysite.com

     WSGIScriptAlias / /srv/www/mysite.com/djangoproject/django.wsgi

     <Directory "/srv/www/mysite.com/djangoproject/sitestatic">
        Order allow,deny
        Allow from all
     </Directory>

     AliasMatch /([^/]*\.css) /srv/www/mysite.com/djangoproject/sitestatic/css/$1
     AliasMatch /([^/]*\.js) /srv/www/mysite.com/djangoproject/sitestatic/js/$1

     Alias /media/ /srv/www/mysite.com/djangoproject/sitestatic/

     ErrorLog /srv/www/mysite.com/logs/error.log
     CustomLog /srv/www/mysite.com/logs/access.log combined
</VirtualHost>

/srv/www/mysite.com/djangoproject/settings.py

MEDIA_ROOT = ''

MEDIA_URL = '/media/'

STATIC_ROOT = '/srv/www/mysite.com/djangoproject/sitestatic/'

STATIC_URL = '/static/'

ADMIN_MEDIA_PREFIX = '/static/admin/'

На самом деле я правильно вижу свой сайт с моими CSS и изображениями НО когда я захожу в / admin, я вижу админку без CSS. Как исправить? Кроме того, это правильная моя конфигурация apache для обслуживания css и js, и как я могу скрыть содержимое dir / media?

- РЕШЕНИЕ (спасибо Pratik) -

Возможно, проблема в порядке строк в конфиге apache.

<VirtualHost my_ip_here:80>
     ServerAdmin foo@site.com
     ServerName site.com
     ServerAlias site.com

     DocumentRoot /srv/www/site.com/cherryproj/templates
     Alias /static/admin /usr/local/lib/python2.6/dist-packages/Django-1.3-py2.6.egg/django/contrib/admin/media/
     Alias /static/ /srv/www/site.com/cherryproj/static/

     WSGIScriptAlias / /srv/www/site.com/cherryproj/django.wsgi
     <Directory "/srv/www/site.com/cherryproj/sitestatic">
        Order allow,deny
        Allow from all
     </Directory>

     ErrorLog /srv/www/site.com/logs/error.log
     CustomLog /srv/www/site.com/logs/access.log combined
</VirtualHost>

Админ-носитель фактически находится внутри пакета dist Django.

Попробуйте поместить что-то подобное в конфигурацию Apache

Alias /static/admin "/usr/local/lib/python2.6/dist-packages/django/contrib/admin/media/"

Если это не сработает, просмотрите источник страницы, находясь на странице администратора, посмотрите путь, по которому css пытается загрузиться, и укажите псевдоним Apache на этот путь. Вероятно, будет хорошей идеей сделать копию этого административного носителя вне папки dist-packages. Также ваш путь, вероятно, будет другим, особенно если вы используете virutalenv.

Чтобы скрыть содержимое папки мультимедиа, выполните

<Directory "/srv/www/mysite.com/djangoproject/sitestatic">
  Options -Indexes
  Order allow,deny
  Allow from all
  </Directory>

В Ubuntu 12.04.1 LTS Server вам нужно добавить эту строку:

Псевдоним / static / admin "/usr/local/lib/python2.7/dist-packages/django/contrib/admin/media"

в вашей конфигурации Apache2 или в VirtualHost.