Python

使用 mod_wsgi 部署 Django

  • August 30, 2014

/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>

引用自:https://serverfault.com/questions/265077