在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中bisect模块用法实例
Sep 25 Python
python实现批量监控网站
Sep 09 Python
Python字符串拼接六种方法介绍
Dec 18 Python
Python获取CPU、内存使用率以及网络使用状态代码
Feb 08 Python
Python使用python-docx读写word文档
Aug 26 Python
Python + Requests + Unittest接口自动化测试实例分析
Dec 12 Python
Python统计时间内的并发数代码实例
Dec 28 Python
python实现飞机大战项目
Mar 11 Python
解决json中ensure_ascii=False的问题
Apr 03 Python
python中有函数重载吗
May 28 Python
python for循环赋值问题
Jun 03 Python
python实现A*寻路算法
Jun 13 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 MemCached高级缓存配置图文教程
2010/08/05 PHP
深入解析WordPress中加载模板的get_template_part函数
2016/01/11 PHP
PHP实现RTX发送消息提醒的实例代码
2017/01/03 PHP
jquery 事件执行检测代码
2009/12/09 Javascript
基于jquery1.4.2的仿flash超炫焦点图播放效果
2010/04/20 Javascript
jquery 学习之二 属性 文本与值(text,val)
2010/11/25 Javascript
jQuery结合Json提交数据到Webservice,并接收从Webservice返回的Json数据
2011/02/18 Javascript
jQuery表格行换色的三种实现方法
2011/06/27 Javascript
使用javascript实现有效时间的控制,并显示将要过期的时间
2014/01/02 Javascript
原生JavaScript实现合并多个数组示例
2014/09/21 Javascript
js控制页面的全屏展示和退出全屏显示的方法
2015/03/10 Javascript
javascript实现连续赋值
2015/08/10 Javascript
JS+CSS实现仿msn风格选项卡效果代码
2015/10/22 Javascript
基于BootstrapValidator的Form表单验证(24)
2016/12/12 Javascript
微信小程序 小程序制作及动画(animation样式)详解
2017/01/06 Javascript
微信小程序实现倒计时60s获取验证码
2020/04/17 Javascript
解决vue-router进行build无法正常显示路由页面的问题
2018/03/06 Javascript
vue  directive定义全局和局部指令及指令简写
2018/11/20 Javascript
微信小程序实现watch监听
2020/06/04 Javascript
微信小程序scroll-view实现滚动到锚点左侧导航栏点餐功能(点击种类,滚动到锚点)
2020/06/11 Javascript
[02:51]DOTA2英雄基础教程 艾欧
2014/01/13 DOTA
在Django的URLconf中使用命名组的方法
2015/07/18 Python
一个基于flask的web应用诞生 bootstrap框架美化(3)
2017/04/11 Python
python使用两种发邮件的方式smtp和outlook示例
2017/06/02 Python
解决Python 命令行执行脚本时,提示导入的包找不到的问题
2019/01/19 Python
Python django框架开发发布会签到系统(web开发)
2020/02/12 Python
Keras 利用sklearn的ROC-AUC建立评价函数详解
2020/06/15 Python
html5 offlline 缓存使用示例
2013/06/24 HTML / CSS
有机童装:Toby Tiger
2018/05/23 全球购物
意大利值得信赖的在线超级药房:PillolaStore
2020/02/05 全球购物
Silk Therapeutics官网:清洁、抗衰老护肤品
2020/08/12 全球购物
优秀英语专业毕业生求职信
2013/11/23 职场文书
致100米运动员广播稿
2014/02/14 职场文书
2014年度培训工作总结
2014/11/27 职场文书
医药公司采购员岗位职责
2015/04/03 职场文书
陪护人员误工证明
2015/06/24 职场文书