在Mac OS上使用mod_wsgi连接Python与Apache服务器
一、安装mod_wsgi3.4:
./configure--with-apxs=/Users/levin/dev/apache2.2.27/bin/apxs--with-python=/usr/bin/python make makeinstall
编辑httpd.conf使Apache导入模块mod_wsgi.so以及引入vhost配置文件:
LoadModulewsgi_modulemodules/mod_wsgi.so Includeconf/extra/httpd-vhosts.conf编辑extra/httpd-vhosts.conf新建项目并增加gzip压缩python输出的文本:
Listen8001 <VirtualHost*:8001> WSGIScriptAlias//Users/levin/dev/py/webapp/app.py/ Alias/assets/Users/levin/dev/py/webapp/static/ AddTypetext/html.py <Directory/Users/levin/dev/py/webapp/> Orderdeny,allow Allowfromall SetOutputFilterDEFLATE#开启gzip SetEnvIfNoCaseRequest_URI.(?:gif|jpe?g|png)$no-gzipdont-vary#图片不开启gzip SetEnvIfNoCaseRequest_URI.(?:exe|t?gz|zip|bz2|rar)$no-gzipdont-vary#压缩包不开启gzip SetEnvIfNoCaseRequest_URI.(?:pdf|doc)$no-gzipdont-vary AddOutputFilterByTypeDEFLATEtext/* AddOutputFilterByTypeDEFLATEapplication/javascriptapplication/x-javascriptapplication/xml AddOutputFilterByTypeDEFLATEapplication/x-httpd-php </Directory> </VirtualHost>
先写个测试脚本app.py
defapplication(environ,start_response): start_response('200OK',[('Content-Type','text/html')]) return['Hello,world.']
或者使用web.py框架:
importweb urls=( '/.*','hello', ) classhello: defGET(self): return"Hello,world." application=web.application(urls,globals()).wsgifunc()
在浏览器中访问:http://localhost:8001/,看到Hello,world.就算安装成功了。
二、Django使用中可能遇到的麻烦解决:
1.修改setting.py文件:
DEBUG=True TEMPLATE_DEBUG=False ALLOWED_HOSTS=['localhost']
2.修改项目中的wsgi.py,这个是建项目的时候就自带创建的,跟setting.py在同一目录,我傻傻的自己创建好多次,后来才发现文件位置不对,悲剧了。
#/Library/WebServer/Documents是apache中DocumentRoot位置 #votebing是我建的项目 importsys sys.path.append('/Library/WebServer/Documents/votebing')
3.修改apache安装目录中的httpd.conf,我的是在/etc/apache2/httpd.conf
#载入mod_wsgi LoadModulewsgi_module/usr/libexec/apache2/mod_wsgi.so WSGIScriptAlias/votebing/Library/WebServer/Documents/votebing/votebing/wsgi.py WSGIPythonPath/Library/WebServer/Documents <Directory/Library/WebServer/Documents/votebing/> <Fileswsgi.py> Orderdeny,allow Allowfromall </Files> </Directory> Alias/media//Library/WebServer/Documents/votebing/media/ Alias/static//Library/WebServer/Documents/votebing/static/ <Directory/Library/WebServer/Documents/votebing/static> Allowfromall </Directory> <Directory/Library/WebServer/Documents/votebing/media> Allowfromall </Directory>