我正在尝试将一个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>
我试着把文件放在我用static命名的目录中。当我试着加载网站时,所有的内容都出现了,但没有css。而且,当我点击我的url www.server.com/static/时,页面显示了目录的正确内容。但我不明白的是,为什么如果我点击一个链接来查看一个文件,它说,网址不存在。我一直在这一段时间,所以任何帮助将不胜感激。
4条答案
按热度按时间tzxcd3kk1#
我发现了一个apache配置错误:
我应该写static的时候不带斜杠。如果带斜杠,Apache就不会展开URL路径。
okxuctiv2#
我假设你使用的是Django 1.3,以及提供静态文件的“新”方式。你能给我们看看你的
settings.py
文件中与媒体和静态相关的设置吗?根和URL版本。同时显示你的STATICFILES_DIRS。最有可能的原因是Django只被配置为使用
contrib.staticfiles
来提供静态文件,您可能需要运行管理命令python manage.py collectstatic
来将所有应用程序的静态文件收集到一个目录中,以供apache使用。关于使用
django.contrib.staticfiles
的设置,请参阅我的答案。如果您的静态文件100%存在于
Alias /static/ /home/daifotis/code/feris/sitestatic
指向的目录中,那么您对apache的权限可能配置不正确。您是否检查过/var/log/httpd/error_log
文件,查看在尝试提供静态内容时是否存在IOPermissions错误?c9qzyr3d3#
我知道这是一个老问题,但我也遇到过同样的问题,我试过了所有的方法,结果发现我在apache中启用了app.conf,但忘了在apache服务器中禁用000-default.conf。
j8yoct9x4#
我知道这是旧的线程,但如果有人还在寻找答案,这里是一步一步的程序(使用django4.1)。对不起,我的英语不好。
1.添加静态url、静态根目录和静态目录到settings.py
1.运行python collectstatic命令,这会将所有文件从静态文件夹复制到STATIC_ROOT目录
1.更新apache配置文件
1.重新启动Apache
这是官方文件,如果你想查的话。