在Mac OS上使用mod_wsgi连接Python与Apache服务器

系统 1360 0

一、安装mod_wsgi 3.4:

            
./configure --with-apxs=/Users/levin/dev/apache2.2.27/bin/apxs --with-python=/usr/bin/python
make
make install

          

编辑httpd.conf使Apache导入模块mod_wsgi.so以及引入vhost配置文件:

            
LoadModule wsgi_module modules/mod_wsgi.so
Include conf/extra/httpd-vhosts.conf


          
编辑extra/httpd-vhosts.conf新建项目并增加gzip压缩python输出的文本:
            
Listen 8001


            
              
  WSGIScriptAlias / /Users/levin/dev/py/webapp/app.py/
  Alias /assets /Users/levin/dev/py/webapp/static/
  AddType text/html .py 
  
              
              
    Order deny,allow
    Allow from all 
    SetOutputFilter DEFLATE       #开启gzip
    SetEnvIfNoCase Request_URI .(?:gif|jpe?g|png)$ no-gzip dont-vary      #图片不开启gzip
    SetEnvIfNoCase Request_URI .(?:exe|t?gz|zip|bz2|rar)$ no-gzip dont-vary   #压缩包不开启gzip
    SetEnvIfNoCase Request_URI .(?:pdf|doc)$ no-gzip dont-vary
    AddOutputFilterByType DEFLATE text/*
    AddOutputFilterByType DEFLATE application/javascript application/x-javascript application/xml
    AddOutputFilterByType DEFLATE application/x-httpd-php
  

            
          

先写个测试脚本app.py

            
def application(environ, start_response):
  start_response('200 OK', [('Content-Type', 'text/html')])
  return ['Hello, world.']

          

或者使用web.py框架:

            
import web

urls = (
  '/.*', 'hello',
)

class hello:
  def GET(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是我建的项目 
import sys 
sys.path.append('/Library/WebServer/Documents/votebing') 

          

3.修改apache安装目录中的httpd.conf,我的是在/etc/apache2/httpd.conf

            
#载入mod_wsgi 
LoadModule wsgi_module /usr/libexec/apache2/mod_wsgi.so 

WSGIScriptAlias /votebing /Library/WebServer/Documents/votebing/votebing/wsgi.py 
WSGIPythonPath /Library/WebServer/Documents 
 

            
            
               
Order deny,allow 
Allow from all 

            
             
 
Alias /media/ /Library/WebServer/Documents/votebing/media/ 
Alias /static/ /Library/WebServer/Documents/votebing/static/ 
 

            
               
Allow from all 

            
            
               
Allow from all 

            
          


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论