我正在尝试移动一个Django站点,我一直在开发服务器阶段并进入真正的托管环境。目前,我只是在我的个人机器上托管。我已经安装了Apache和mod-wsgi,但是我遇到了获取静态文件的问题。我很确定它与Apache有关。这是我的网站配置文件:
<VirtualHost *:80>
ServerName localhost
ServerAlias daifotis.dyndns.org
ServerAdmin webmaster@daifotis.com
DocumentRoot /home/daifotis/code/
Alias /media/ /home/daifotis/code/feris/sitestatic
Alias /static/ /home/daifotis/code/feris/sitestatic
#AliasMatch ^/([^/]*\.css) /home/daifotis/code/feris/sitestatic/$1
<Directory /home/daifotis/code/feris/sitestatic>
Order allow,deny
Allow from all
</Directory>
<Directory /home/daifotis/code/feris>
Order allow,deny
Allow from all
</Directory>
<Directory /home/daifotis/code/feris/jobsite>
Order allow,deny
Allow from all
</Directory>
WSGIDaemonProcess feris processes=2 threads=15 display-name=%{GROUP}
WSGIProcessGroup feris
WSGIScriptAlias / /home/daifotis/code/feris/apache/django.wsgi
<Directory /home/daifotis/code/feris/apache>
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
我正在尝试托管我使用静态别名的目录中的文件。当我尝试加载网站时,所有内容都会出现但没有css。此外,当我点击我的网址www.server.com/static/时,页面会显示目录的正确内容。但我不明白的是,如果我点击链接查看文件,就会说URL不存在。我已经坚持了一段时间,所以任何帮助都会非常感激。
答案 0 :(得分:41)
想出来。我在这行上遇到了apache配置错误:
Alias /static/ /home/daifotis/code/feris/sitestatic
我应该写没有尾部斜杠的静态。使用尾部斜杠,Apache不会扩展URL路径。
Alias /static /home/daifotis/code/feris/sitestatic
答案 1 :(得分:3)
我假设您正在使用Django 1.3,以及提供静态文件的“新”方式。您能否告诉我们settings.py
文件中与MEDIA和STATIC相关的设置? ROOT和URL版本。同时显示您的STATICFILES_DIRS。
最可能的原因是Django仅配置为使用contrib.staticfiles
提供静态文件。您可能需要运行管理命令python manage.py collectstatic
以将所有应用程序静态文件收集到准备由apache提供的目录中。
有关使用django.contrib.staticfiles
的设置,请参阅my answer here。
如果您的静态文件100%存在于Alias /static/ /home/daifotis/code/feris/sitestatic
所指向的目录中,那么您对apache的权限可能配置不正确。您是否检查了/var/log/httpd/error_log
文件,以确定在尝试提供静态内容时是否存在IOPermissions错误?