使用 mod_wsgi 部署 Django

使用 mod_wsgi 部署 Django

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

<VirtualHost my_ip_here:80>
     ServerAdmin [email protected]
     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,我该如何隐藏目录 /media 的内容?

-- 解决方案(感谢 Pratik)--

也许,问题在于 apache 配置中的行顺序。

<VirtualHost my_ip_here:80>
     ServerAdmin [email protected]
     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>

答案1

管理媒体实际上位于 Django 的 dist 包内。

尝试在 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>

答案2

在 Ubuntu 12.04.1 LTS 服务器中你必须添加这一行:

别名 /static/admin "/usr/local/lib/python2.7/dist-packages/django/contrib/admin/media"

在您的 Apache2 配置或 VirtualHost 中。

相关内容