mod_wsgi
下载
注意:下载mod_wsgi.so版本需和python和apache匹配
http://www.lfd.uci.edu/~gohlke/pythonlibs/#mod_wsgi
我之前下过一个对应apache22和python2.7的版本,名字mod_wsgi-win32-ap22py27-3.3,这个可以直接用,所以一直用着,网上可以直接搜到。
安装和配置
将mod_wsgi.so放到d:\Program Files\Apache Software Foundation\Apache2.2\modules\ , 并在httpd.conf里添加
LoadModule wsgi_module modules/mod_wsgi.so
httpd.conf的位置在d:\Program Files\Apache Software Foundation\Apache2.2\conf
注意:apache装载wsgi模块,名字可以自定义
配置 httpd.conf
搜索http.conf文件,把"Deny from all" 及 “Require all denied” 等语句全部注释掉:
<Directory />
Options FollowSymLinks
AllowOverride None
Require all denied
Order deny,allow
Deny from all
</Directory>
修改为
<Directory />
Options Indexes FollowSymLinks
AllowOverride None
</Directory>
测试wsgi
添加test.wsgi文件,我放在项目下面的apache文件夹下,这个文件夹是专门用来放跟apache相关的配置的
def application(environ, start_response):
status = '200 OK'
output = 'Hello World!'
response_headers = [('Content-type', 'text/plain'),
('Content-Length', str(len(output)))]
start_response(status, response_headers)
return [output]
在http.conf里面引入这段代码
Include " C:/virtualenv/zakkabag/apache /test.wsgi "
测试 : http://localhost:8081
注:这儿监听端口是8081
项目配置
项目主目录
在项目目录下面创建一个文件夹apache,添加文件"django.wsgi" & “apache_django_wsgi.conf”
和test.wsgi一样,我们也可以用这个方法引入这段配置
Include " C:/virtualenv/zakkabag/apache/apache_django_wsgi.conf"
注:这些配置文件可直接写在httpd.conf文件里,但我倾向于用专门的文件,这样便于项目维护
apache_django_wsgi.conf
测试项目
WSGIScriptAlias / " C:/virtualenv/zakkabag/apache/test.wsgi"
实际项目
WSGIScriptAlias / " C:/virtualenv/zakkabag/apache/django.wsgi"
<Directory " C:/virtualenv/zakkabag ">
Options FollowSymLinks
AllowOverride None
Order deny,allow
Allow from all
</Directory>
django.wsgi
os.environ['DJANGO_SETTINGS_MODULE'] ="zakkabag.settings"
import django
django.setup()
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
静态资源
apache_django_wsgi.conf
Alias /static “C:/virtualenv/ zakkabag /static_in_env/static_root”
<Directory " C:/virtualenv/zakkabag/static_in_env ">
Order allow,deny
Allow from all
</Directory>
Django的setting里
Settings.py
STATIC_URL = '/static/'
重启
配置完成之后记得重启apache
问题5 Django: AppRegistryNotReady()
在 django.wsgi, 添加setup()
os.environ['DJANGO_SETTINGS_MODULE'] ="zakkabag.settings"
import django
django.setup()
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()