在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编程开发之类型转换convert实例分析
Nov 13 Python
python 多线程实现检测服务器在线情况
Nov 25 Python
Python设计模式之抽象工厂模式
Aug 25 Python
浅谈python中的占位符
Nov 09 Python
python机器学习之神经网络(二)
Dec 20 Python
在Python中获取两数相除的商和余数方法
Nov 10 Python
Python+OpenCV实现图像融合的原理及代码
Dec 03 Python
python3使用matplotlib绘制条形图
Mar 25 Python
python使用requests.session模拟登录
Aug 09 Python
pytorch 批次遍历数据集打印数据的例子
Dec 30 Python
Python使用py2neo操作图数据库neo4j的方法详解
Jan 13 Python
浅谈Keras的Sequential与PyTorch的Sequential的区别
Jun 17 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
table标签的结构与合并单元格的实现方法
2013/07/24 PHP
Yii1.1中通过Sql查询进行的分页操作方法
2017/03/16 PHP
Laravel模糊查询区分大小写的实例
2019/09/29 PHP
Javascript倒计时代码
2010/08/12 Javascript
cument.execCommand()用法深入理解
2012/12/04 Javascript
jquery统计输入文字的个数并对其进行判断
2014/01/07 Javascript
js动态创建上传表单通过iframe模拟Ajax实现无刷新
2014/02/20 Javascript
动态载入js提高网页打开速度的方法
2014/07/04 Javascript
javascript与jquery中的this关键字用法实例分析
2015/12/24 Javascript
基于jQuery实现文本框只能输入数字(小数、整数)
2016/01/14 Javascript
JavaScript判断DIV内容是否为空的方法
2016/01/29 Javascript
Highcharts入门之基本属性
2016/08/02 Javascript
JS实现自动轮播图效果(自适应屏幕宽度+手机触屏滑动)
2017/06/19 Javascript
Net微信网页开发 使用微信JS-SDK获取当前地理位置过程详解
2019/08/26 Javascript
jQuery实现简单全选框
2020/09/13 jQuery
Python中的二叉树查找算法模块使用指南
2014/07/04 Python
python 2.7.14安装图文教程
2018/04/08 Python
python实现多张图片拼接成大图
2019/01/15 Python
python字符串循环左移
2019/03/08 Python
Pandas0.25来了千万别错过这10大好用的新功能
2019/08/07 Python
解决python3 requests headers参数不能有中文的问题
2019/08/21 Python
Python中 CSV格式清洗与转换的实例代码
2019/08/29 Python
Python使用grequests(gevent+requests)并发发送请求过程解析
2019/09/25 Python
pandas中read_csv的缺失值处理方式
2019/12/19 Python
英国著名的药妆网站:Escentual
2016/07/29 全球购物
巴西男士个人护理产品商店:SHOP4MEN
2017/08/07 全球购物
新加坡网上花店:FlowerAdvisor新加坡
2018/10/05 全球购物
《菜园里》教学反思
2014/04/17 职场文书
小学班长竞选演讲稿
2014/04/24 职场文书
5s标语大全
2014/06/23 职场文书
实习单位证明范例
2014/11/17 职场文书
三好学生评语大全
2014/12/29 职场文书
爸爸的三轮车观后感
2015/06/16 职场文书
2016春季田径运动会广播稿
2015/12/21 职场文书
python画条形图的具体代码
2022/04/20 Python
vue @ ~ 相对路径 路径别名设置方式
2022/06/05 Vue.js