Apache没有为Django项目加载静态文件夹

时间:2014-09-07 14:25:26

标签: django apache virtualenv mod-wsgi

我有一个名为mp的Django 1.4.5项目,我试图使用Apache 2.4在我的localhost上运行。遵循Django官方教程mod_wsgiHow to use Django with Apache and mod_wsgi)当我访问http://127.0.0.1:8801/时,我设法显示了我的Django页面。

我的项目文件夹mp位于/opt/masterportal/mp,静态文件位于/opt/masterportal/mp/mp/static

这是masterportal.conf中的/etc/apache2/sites-available文件:

Listen 8081
<VirtualHost *:8081>
     ServerAdmin my@mail.adress

     XSendFilePath /opt/masterportal/mp/mp/uploads/
     <Files *.*>
         XSendFile On
     </Files>

     WSGIDaemonProcess masterportal python-path=/opt/masterportal/mp:/opt/masterportal/mp/env/dev/lib/python2.7/site-packages
     WSGIProcessGroup masterportal
     WSGIScriptAlias / /opt/masterportal/mp/mp/apache/wsgi.py

     Alias /static /opt/masterportal/mp/mp/static

     <Directory /opt/masterportal/mp/mp/static>
        Require all granted
     </Directory>

     <Location />
        WSGIProcessGroup masterportal
        Require all granted
     </Location>
</VirtualHost>

但是,http://127.0.0.1:8801的网站无法找到任何静态文件。这很奇怪,因为完全相同的项目在我的大学服务器上运行(我无法访问apache配置)。所以我的Apache配置一定有问题,但我看不清楚。我迫切需要帮助。

一些一般信息:我使用的是Django 1.4.5(因为这是大学服务器上的版本)和Apache 2.4。该项目在位于/opt/masterportal/mp/env的virtualenv中运行。我也尝试使用Alias /static/代替Alias /static,但这也不起作用。我的apache2.conf仍然是原创的 - 我没有做任何更改。

修改:这是/etc/apache2/conf-available/中网站的配置:

    <Location "/mp/2015/suse">
        ProxyPass https://my-computername:8081/
        ProxyPassReverse https://my-computername:8081/
        RequestHeader set X-FORWARDED-PROTOCOL ssl
        RequestHeader set X-FORWARDED-SSL on
    </Location>

1 个答案:

答案 0 :(得分:1)

尝试移动线

Alias /static /opt/masterportal/mp/mp/static

<Directory /opt/masterportal/mp/mp/static>
   Require all granted
</Directory>

 WSGIDaemonProcess masterportal python-path=/opt/masterportal/mp:/opt/masterportal/mp/env/dev/lib/python2.7/site-packages
 WSGIProcessGroup masterportal
 WSGIScriptAlias / /opt/masterportal/mp/mp/apache/wsgi.py

因为与/ static / some_static_files ...的链接可能会被提交给wsgi应用程序而不是指向静态目录。