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


Posted in Python onDecember 24, 2015

一、安装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

<VirtualHost *:8001>
  WSGIScriptAlias / /Users/levin/dev/py/webapp/app.py/
  Alias /assets /Users/levin/dev/py/webapp/static/
  AddType text/html .py 
  <Directory /Users/levin/dev/py/webapp/>
    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
  </Directory>
</VirtualHost>

先写个测试脚本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 
 
<Directory /Library/WebServer/Documents/votebing/> 
<Files wsgi.py> 
Order deny,allow 
Allow from all 
</Files> 
</Directory> 
Alias /media/ /Library/WebServer/Documents/votebing/media/ 
Alias /static/ /Library/WebServer/Documents/votebing/static/ 
 
<Directory /Library/WebServer/Documents/votebing/static> 
Allow from all 
</Directory> 
 
<Directory /Library/WebServer/Documents/votebing/media> 
Allow from all 
</Directory>
Python 相关文章推荐
python设置windows桌面壁纸的实现代码
Jan 28 Python
python进阶教程之异常处理
Aug 30 Python
浅谈python为什么不需要三目运算符和switch
Jun 17 Python
Python中修改字符串的四种方法
Nov 02 Python
Python中的Socket 与 ScoketServer 通信及遇到问题解决方法
Apr 01 Python
python实现抖音点赞功能
Apr 07 Python
Python实现TCP探测目标服务路由轨迹的原理与方法详解
Sep 04 Python
使用opencv将视频帧转成图片输出
Dec 10 Python
pandas实现DataFrame显示最大行列,不省略显示实例
Dec 26 Python
python numpy 矩阵堆叠实例
Jan 17 Python
python字典key不能是可以是啥类型
Aug 04 Python
Python各协议下socket黏包问题原理
Apr 12 Python
在Mac OS上搭建Python的开发环境
Dec 24 #Python
详解Python字符串对象的实现
Dec 24 #Python
浅谈Python单向链表的实现
Dec 24 #Python
Python使用面向对象方式创建线程实现12306售票系统
Dec 24 #Python
安装ElasticSearch搜索工具并配置Python驱动的方法
Dec 22 #Python
Python生成随机验证码的两种方法
Dec 22 #Python
基于python实现微信模板消息
Dec 21 #Python
You might like
做一个有下拉功能的留言版
2006/10/09 PHP
php笔记之:文章中图片处理的使用
2013/04/26 PHP
php广告加载类用法实例
2014/09/23 PHP
php中foreach结合curl实现多线程的方法分析
2016/09/22 PHP
php图片裁剪函数
2018/10/31 PHP
PHP发送邮件确认验证注册功能示例【修改别人邮件类】
2019/11/09 PHP
浅说js变量
2011/05/25 Javascript
jquery中的 $(&quot;#jb51&quot;)与document.getElementById(&quot;jb51&quot;) 的区别
2011/07/26 Javascript
JS target与currentTarget区别说明
2011/08/28 Javascript
基于jQuery捕获超链接事件进行局部刷新代码
2012/05/10 Javascript
JavaScript代码复用模式详解
2014/11/07 Javascript
JavaScript判断undefined类型的正确方法
2015/06/30 Javascript
JavaScript对象数组排序函数及六个用法
2015/12/23 Javascript
js判断手机浏览器操作系统和微信浏览器的方法
2016/04/30 Javascript
jQuery简单实现页面元素置顶时悬浮效果示例
2016/08/01 Javascript
整理一下常见的IE错误
2016/11/18 Javascript
vue非父子组件通信问题及解决方法
2018/06/11 Javascript
JS监听滚动和id自动定位滚动
2018/12/18 Javascript
基于Proxy的小程序状态管理实现
2019/06/14 Javascript
纯 JS 实现放大缩小拖拽功能(完整代码)
2019/11/25 Javascript
原生js拖拽实现图形伸缩效果
2020/02/10 Javascript
js实现点赞效果
2020/03/16 Javascript
[03:58]兄弟们,回来开黑了!DOTA2昔日战友招募宣传视频
2016/07/17 DOTA
[01:23]2019完美世界全国高校联赛(春季赛)合肥全国总决赛
2019/06/10 DOTA
python局域网ip扫描示例分享
2014/04/03 Python
python处理csv数据的方法
2015/03/11 Python
Python爬虫获取op.gg英雄联盟英雄对位胜率的源码
2021/01/29 Python
如何用H5实现一个触屏版的轮播器的实例
2017/01/09 HTML / CSS
Expedia意大利旅游网站:酒店、机票和租车预订
2017/10/30 全球购物
德国机场停车位比较和预订网站:Ich-parke-billiger
2018/01/08 全球购物
俄罗斯最大的在线手表商店:Bestwatch.ru
2020/01/11 全球购物
应届毕业生专业个人求职自荐信格式
2013/11/20 职场文书
大学生优秀班干部事迹材料
2014/05/26 职场文书
团队精神口号
2014/06/06 职场文书
教师批评与自我批评剖析材料
2014/10/16 职场文书
应届毕业生的自我评价
2019/06/21 职场文书