我有一个名为mp
的Django 1.4.5项目,我试图使用Apache 2.4在我的localhost上运行。遵循Django官方教程mod_wsgi
(How 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>
答案 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应用程序而不是指向静态目录。