在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深入学习之闭包
Aug 31 Python
Python脚本实现代码行数统计代码分享
Mar 10 Python
python3中str(字符串)的使用教程
Mar 23 Python
Python中logging.NullHandler 的使用教程
Nov 29 Python
Python使用Selenium爬取淘宝异步加载的数据方法
Dec 17 Python
详解Python打包分发工具setuptools
Aug 05 Python
利用matplotlib实现根据实时数据动态更新图形
Dec 13 Python
Python实现隐马尔可夫模型的前向后向算法的示例代码
Dec 31 Python
Python 时间戳之获取整点凌晨时间戳的操作方法
Jan 28 Python
Django {{ MEDIA_URL }}无法显示图片的解决方式
Apr 07 Python
python实现二分查找算法
Sep 18 Python
Python 数据可视化工具 Pyecharts 安装及应用
Apr 20 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
浅析php中如何在有限的内存中读取大文件
2013/07/02 PHP
Zend Framework教程之MVC框架的Controller用法分析
2016/03/07 PHP
jQuery+PHP实现图片上传并提交功能
2020/07/27 PHP
JavaScript使用prototype定义对象类型
2007/02/07 Javascript
在jQuery中 常用的选择器介绍
2013/04/16 Javascript
extjs两个tbar问题探讨
2013/08/08 Javascript
从零学习node.js之express入门(六)
2017/02/25 Javascript
利用babel将es6语法转es5的简单示例
2017/12/01 Javascript
JS+H5 Canvas实现时钟效果
2018/07/20 Javascript
利用js将ajax获取到的后台数据动态加载至网页中的方法
2018/08/08 Javascript
详解Vue CLI 3.0脚手架如何mock数据
2018/11/23 Javascript
JS栈stack类的实现与使用方法示例
2019/01/31 Javascript
详解JavaScript实现动态的轮播图效果
2019/04/29 Javascript
vue 实现移动端键盘搜索事件监听
2019/11/06 Javascript
vue2路由基本用法实例分析
2020/03/06 Javascript
Python while、for、生成器、列表推导等语句的执行效率测试
2015/06/03 Python
使用Python编写简单的画图板程序的示例教程
2015/12/08 Python
Python使用lxml模块和Requests模块抓取HTML页面的教程
2016/05/16 Python
Python 多线程的实例详解
2017/09/07 Python
Python解决抛小球问题 求小球下落经历的距离之和示例
2018/02/01 Python
python实现拓扑排序的基本教程
2018/03/11 Python
Python元组知识点总结
2019/02/18 Python
django项目简单调取百度翻译接口的方法
2019/08/06 Python
tensorflow指定CPU与GPU运算的方法实现
2020/04/21 Python
size?爱尔兰官方网站:英国伦敦的球鞋精品店
2019/03/31 全球购物
Java的类可以定义为Protected或者Private得吗
2015/09/25 面试题
成人毕业生自我鉴定
2013/10/18 职场文书
考试作弊检讨书大全
2014/02/18 职场文书
医学专业毕业生求职信
2014/06/20 职场文书
开展读书活动总结
2014/06/30 职场文书
运动会演讲稿300字
2014/08/25 职场文书
入股合作协议书
2014/10/12 职场文书
赔偿协议书怎么写
2015/01/28 职场文书
在职证明范本
2015/06/15 职场文书
话题作文之成长
2019/12/09 职场文书
使用Oracle跟踪文件的问题详解
2021/06/28 Oracle