在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的Flask框架中验证注册用户的Email的方法
Sep 02 Python
python套接字流重定向实例汇总
Mar 03 Python
Tensorflow之构建自己的图片数据集TFrecords的方法
Feb 07 Python
Python数据分析库pandas基本操作方法
Apr 08 Python
Python matplotlib通过plt.scatter画空心圆标记出特定的点方法
Dec 13 Python
pip安装py_zipkin时提示的SSL问题对应
Dec 29 Python
浅谈Scrapy网络爬虫框架的工作原理和数据采集
Feb 07 Python
python3.5安装python3-tk详解
Apr 26 Python
Python内置数据类型list各方法的性能测试过程解析
Jan 07 Python
python小程序之4名牌手洗牌发牌问题解析
May 15 Python
Python 实现国产SM3加密算法的示例代码
Sep 21 Python
Python实现邮件发送的详细设置方法(遇到问题)
Jan 18 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查询快递信息的方法
2015/03/07 PHP
php与阿里云短信接口接入操作案例分析
2020/05/27 PHP
Windows Live的@live.com域名注册漏洞 利用代码
2006/12/27 Javascript
Sample script that displays all of the users in a given SQL Server DB
2007/06/16 Javascript
Three.js源码阅读笔记(光照部分)
2012/12/27 Javascript
JavaScript对内存分配及管理机制详细解析
2013/11/11 Javascript
jquery操作select大全
2014/04/25 Javascript
node.js中的fs.lchown方法使用说明
2014/12/16 Javascript
基于jQuery实现的QQ表情插件
2015/08/25 Javascript
javascript轻量级库createjs使用Easel实现拖拽效果
2016/02/19 Javascript
jQuery图片轮播(二)利用构造函数和原型创建对象以实现继承
2016/12/06 Javascript
jQuery实现可拖拽3D万花筒旋转特效
2017/01/03 Javascript
angular项目中bootstrap-datetimepicker时间插件的使用示例
2018/03/15 Javascript
vue移动端项目缓存问题实践记录
2018/10/29 Javascript
微信小程序实现点击导航标签滚动定位到对应位置
2020/11/19 Javascript
[02:39]DOTA2英雄基础教程 极限穿梭编织者
2013/12/05 DOTA
[38:21]2014 DOTA2国际邀请赛中国区预选赛5.21 TongFu VS LGD-CDEC
2014/05/22 DOTA
numpy排序与集合运算用法示例
2017/12/15 Python
tensorflow获取变量维度信息
2018/03/10 Python
Python基于sklearn库的分类算法简单应用示例
2018/07/09 Python
介绍一款python类型检查工具pyright(推荐)
2019/07/03 Python
python切片作为占位符使用实例讲解
2021/02/17 Python
python实现简单文件读写函数
2021/02/25 Python
CSS3 倾斜的网页图片库实例教程
2009/11/14 HTML / CSS
美体小铺美国官网:The Body Shop美国
2017/11/10 全球购物
什么情况下你必须要把一个类定义为abstract的
2013/01/06 面试题
一套软件开发工程师笔试题
2015/05/18 面试题
城管综合整治方案
2014/05/01 职场文书
学校班班通实施方案
2014/06/11 职场文书
实验室标语
2014/06/21 职场文书
2014校长四风问题对照检查材料思想汇报
2014/09/16 职场文书
2015年效能监察工作总结
2015/04/23 职场文书
2015年体育教学工作总结
2015/05/20 职场文书
工作简历的自我评价
2019/05/16 职场文书
导游词之镇江-金山寺
2019/10/14 职场文书
《中国机长》观后感:敬畏生命,敬畏职责
2019/11/12 职场文书