在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 拷贝对象(深拷贝deepcopy与浅拷贝copy)
Sep 06 Python
Python读写Redis数据库操作示例
Mar 18 Python
使用Python的urllib2模块处理url和图片的技巧两则
Feb 18 Python
python中函数默认值使用注意点详解
Jun 01 Python
pandas中的series数据类型详解
Jul 06 Python
ORM Django 终端打印 SQL 语句实现解析
Aug 09 Python
解析python的局部变量和全局变量
Aug 15 Python
python3 deque 双向队列创建与使用方法分析
Mar 24 Python
Pytorch十九种损失函数的使用详解
Apr 29 Python
Django实现内容缓存实例方法
Jun 30 Python
安装并免费使用Pycharm专业版(学生/教师)
Sep 24 Python
python读取pdf格式文档的实现代码
Apr 01 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 获取本机外网/公网IP的代码
2010/05/09 PHP
PHP判断手机是IOS还是Android
2015/12/09 PHP
利用php生成验证码
2017/02/23 PHP
a标签的css样式四个状态
2021/03/09 HTML / CSS
jquery实现带单选按钮的表格行选中时高亮显示
2013/08/01 Javascript
js控制淡入淡出示例代码
2013/11/12 Javascript
常用的jQuery前端技巧收集
2014/12/24 Javascript
简介JavaScript中getUTCMonth()方法的使用
2015/06/10 Javascript
jQuery模拟Marquee实现无缝滚动效果完整实例
2016/09/29 Javascript
JavaScript 轮播图和自定义滚动条配合鼠标滚轮分享代码贴
2016/10/28 Javascript
Jquery Easyui进度条组件Progress使用详解(8)
2020/03/26 Javascript
JS中用try catch对代码运行的性能影响分析
2016/12/26 Javascript
javascript实现简单的可随机变色网页计算器示例
2016/12/30 Javascript
JavaScript实现图片瀑布流和底部刷新
2017/01/02 Javascript
Bootstrap模态框案例解析
2017/03/05 Javascript
详解使用VueJS开发项目中的兼容问题
2018/08/02 Javascript
浅谈微信页面入口文件被缓存解决方案
2018/09/29 Javascript
JS字符串与二进制的相互转化实例代码详解
2019/06/28 Javascript
Vuex模块化应用实践示例
2020/02/03 Javascript
详解Vue的七种传值方式
2021/02/08 Vue.js
[01:13:18]Secret vs Infamous 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.23
2019/09/05 DOTA
Python使用Socket(Https)Post登录百度的实现代码
2012/05/18 Python
Python程序运行原理图文解析
2018/02/10 Python
让Python脚本暂停执行的几种方法(小结)
2019/07/11 Python
Python空间数据处理之GDAL读写遥感图像
2019/08/01 Python
百思买美国官网:Best Buy
2016/07/28 全球购物
意大利专业化妆品品牌:KIKO MILANO
2017/02/01 全球购物
美国零售商店:Blue&Cream
2017/04/07 全球购物
黄金酒广告词
2014/03/21 职场文书
护理目标管理责任书
2014/07/25 职场文书
乡镇遵守党的政治纪律情况对照检查材料
2014/09/26 职场文书
2015毕业生实习期工作总结
2015/04/09 职场文书
2015年乡镇环保工作总结
2015/04/22 职场文书
报案材料怎么写
2015/05/25 职场文书
团队拓展训练心得体会
2016/01/12 职场文书
浅谈GO中的Channel以及死锁的造成
2022/03/18 Golang