在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 Socket编程入门教程
Jul 11 Python
使用Python压缩和解压缩zip文件的教程
May 06 Python
Python装饰器基础详解
Mar 09 Python
python实现获取Ip归属地等信息
Aug 27 Python
简单实现python收发邮件功能
Jan 05 Python
python做接口测试的必要性
Nov 20 Python
Python 实现数组相减示例
Dec 27 Python
tensorflow:指定gpu 限制使用量百分比,设置最小使用量的实现
Feb 06 Python
Python基础之字典常见操作经典实例详解
Feb 26 Python
Python 打印自己设计的字体的实例讲解
Jan 04 Python
python爬取企查查企业信息之selenium自动模拟登录企查查
Apr 08 Python
python接口测试返回数据为字典取值方式
Feb 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
jQuery新的事件绑定机制on()示例应用
2014/07/18 Javascript
javascript实现点击后变换按钮显示文字的方法
2015/05/13 Javascript
jqTransform美化表单
2015/10/10 Javascript
剖析Node.js异步编程中的回调与代码设计模式
2016/02/16 Javascript
javascript事件绑定学习要点
2016/03/09 Javascript
jQuery中iframe的操作(点击按钮新增窗口)
2016/04/20 Javascript
在JavaScript中模拟类(class)及类的继承关系
2016/05/20 Javascript
jQuery实现checkbox列表的全选、反选功能
2016/11/24 Javascript
JavaScript实现经典排序算法之冒泡排序
2016/12/28 Javascript
JS中IP地址与整数相互转换的实现代码
2017/04/10 Javascript
React中上传图片到七牛的示例代码
2017/10/10 Javascript
vue中轮训器的使用
2019/01/27 Javascript
node 解析图片二维码的内容代码实例
2019/09/11 Javascript
vue watch监控对象的简单方法示例
2021/01/07 Vue.js
[52:15]2014 DOTA2国际邀请赛中国区预选赛5.21 HGT VS LGD-GAMING
2014/05/23 DOTA
[01:08]DOTA2次级职业联赛 - Wings 战队宣传片
2014/12/01 DOTA
python使用str &amp; repr转换字符串
2016/10/13 Python
Python解析excel文件存入sqlite数据库的方法
2016/11/15 Python
Python3.5基础之函数的定义与使用实例详解【参数、作用域、递归、重载等】
2019/04/26 Python
Python实现 PS 图像调整中的亮度调整
2019/06/28 Python
python opencv把一张图片嵌入(叠加)到另一张图片上的实现代码
2020/06/11 Python
Python如何读写字节数据
2020/08/05 Python
使用html5 canvas创建太空游戏的示例
2014/05/08 HTML / CSS
美国波道夫·古德曼百货官网:Bergdorf Goodman
2017/11/07 全球购物
家乐福台湾线上购物网:Carrefour台湾
2020/09/15 全球购物
机电一体化毕业生求职信
2013/11/02 职场文书
应聘编辑职位自荐信范文
2014/01/05 职场文书
升旗仪式主持词
2014/03/19 职场文书
小学生寒假家长评语
2014/04/16 职场文书
文艺演出策划方案
2014/06/07 职场文书
供电工程专业求职信
2014/08/09 职场文书
承诺书样本
2014/08/30 职场文书
学雷锋献爱心倡议书
2015/04/27 职场文书
交心谈心活动总结
2015/05/11 职场文书
Mysql忘记密码解决方法
2022/02/12 MySQL
光之国的四大叛徒:第一贝利亚导致宇宙毁灭,赛文奥特曼在榜
2022/03/18 日漫