Python
使用 mod_wsgi 部署 Django
/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>
管理媒體實際上位於 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>