我让我的Apache Mod_WSGI和Django在http://blog.stannard.net.au/2010/12/11/installing-django-with-apache-and-mod_wsgi-on-ubuntu-10-04/之后工作,我的000默认网站有内容
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /home/nipun/webdev/demo/demo
<Directory /home/nipun/webdev/demo/demo>
Order allow,deny
Allow from all
WSGIDaemonProcess demo.djangoserver processes=2 threads=15 display-name=%{GROUP}
WSGIProcessGroup demo.djangoserver
WSGIScriptAlias / /home/nipun/webdev/demo/demo/apache/django.wsgi
</Directory>
DocumentRoot /var/www
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
</VirtualHost>
所以使用这种配置我基本上可以为我的Django网站提供服务
http://localhost/meta例如,meta调用相应的视图
但是现在当我尝试加载index.html(有一些javascript和html代码)放在我的/ var / www上时,它会尝试使用URL匹配 在我使用Apache配置的Django项目的urls.py中指定。
如何修改设置以便我能够在/ var / www下以及localhost上的Django站点上提供脚本
尝试在第一个答案中给出的方法后 所以我添加了这一行
Alias / /var/www
在包含
WSGIDaemon...
现在django网站和/ var / www中的文件都不起作用
解决的
将000默认文件更改为:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www
Alias /robots.txt /var/www/robots.txt
Alias /testing.php /var/www/testing.php
Alias /index.html /var/www/index.html
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
DocumentRoot /home/nipun/webdev/demo/demo
WSGIDaemonProcess demo.djangoserver processes=2 threads=15 display-name=%{GROUP}
WSGIProcessGroup demo.djangoserver
WSGIScriptAlias / /home/nipun/webdev/demo/demo/apache/django.wsgi
<Directory /home/nipun/webdev/demo/demo>
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
为了使它更智能,Alias Matching可以像
AliasMatch /([^/]+).html /home/nipun/webdev/application_layer/$1.html
答案 0 :(得分:1)
首先,我不知道为什么你一直在谈论'运行'你的HTML文件。这不是一个脚本,即使它有Javascript - 这只是为了客户端。没有什么可以运行的,Apache只需要提供文件。
其次,你显然需要一些方法来区分Django的请求和直接提供的请求。最简单的方法是将一个或另一个放在子目录中 - 将WSGIScriptAlias
路径从\
更改为my_django_site
,或使用普通Alias
设置位置你的静态文件。如果您执行后者,则需要将指令放在WSGI部件上方,以便首先匹配。
答案 1 :(得分:1)
阅读以下部分的文档:
http://code.google.com/p/modwsgi/wiki/ConfigurationGuidelines#The_Apache_Alias_Directive
使用AddHandler / mod_rewrite / WSGI脚本修复方法,如该部分末尾所述。
使用该方法,如果存在静态文件,那么它将被提供,否则Django实例将充当所有其他URL的后备资源。