在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实现一个简单的MySQL类
Jan 07 Python
python写入已存在的excel数据实例
May 03 Python
Python FTP两个文件夹间的同步实例代码
May 25 Python
对python中的 os.mkdir和os.mkdirs详解
Oct 16 Python
Python 中 function(#) (X)格式 和 (#)在Python3.*中的注意事项
Nov 30 Python
Python socket模块实现的udp通信功能示例
Apr 10 Python
利用python读取YUV文件 转RGB 8bit/10bit通用
Dec 09 Python
Python 获取命令行参数内容及参数个数的实例
Dec 20 Python
使用keras实现Precise, Recall, F1-socre方式
Jun 15 Python
django创建css文件夹的具体方法
Jul 31 Python
使paramiko库执行命令时在给定的时间强制退出功能的实现
Mar 03 Python
Python中异常处理用法
Nov 27 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 zlib扩展实现页面GZIP压缩输出
2010/06/17 PHP
php更改目录及子目录下所有的文件后缀的代码
2010/09/24 PHP
PHP中使用mktime获取时间戳的一个黑色幽默分析
2012/05/31 PHP
php excel reader读取excel内容存入数据库实现代码
2012/12/06 PHP
PHP通过内置函数memory_get_usage()获取内存使用情况
2014/11/20 PHP
PHP框架性能测试报告
2016/05/08 PHP
php中引用&amp;的用法分析【变量引用,函数引用,对象引用】
2016/12/12 PHP
PHP receiveMail实现收邮件功能
2018/04/25 PHP
PHP基于进程控制函数实现多线程
2020/12/09 PHP
地址栏传递中文参数乱码在js里用escape转码
2013/08/28 Javascript
浅谈javascript原型链与继承
2015/07/13 Javascript
jQuery easyui的validatebox校验规则扩展及easyui校验框validatebox用法
2016/01/18 Javascript
详解打造 Vue.js 可复用组件
2017/03/24 Javascript
Angular中实现树形结构视图实例代码
2017/05/05 Javascript
jQuery属性选择器用法实例分析
2019/06/28 jQuery
JavaScript 替换所有匹配内容及正则替换方法
2020/02/12 Javascript
js实现飞机大战游戏
2020/08/26 Javascript
小程序实现录音功能
2020/09/22 Javascript
python实现可将字符转换成大写的tcp服务器实例
2015/04/29 Python
Python内置函数OCT详解
2016/11/09 Python
Python实现Dijkstra算法
2018/10/17 Python
python 去除二维数组/二维列表中的重复行方法
2019/01/23 Python
Python+selenium点击网页上指定坐标的实例
2019/07/05 Python
利用Python实现Shp格式向GeoJSON的转换方法
2019/07/09 Python
Python的垃圾回收机制详解
2019/08/28 Python
Python爬虫实现的根据分类爬取豆瓣电影信息功能示例
2019/09/15 Python
Python celery原理及运行流程解析
2020/06/13 Python
python RSA加密的示例
2020/12/09 Python
python中lower函数实现方法及用法讲解
2020/12/23 Python
CSS3实现多背景展示效果通过CSS3定位多张背景
2014/08/10 HTML / CSS
德国汽车零件和汽车配件网上商店:kfzteile24
2018/11/14 全球购物
家电业务员岗位职责
2014/03/10 职场文书
消防安全标语
2014/06/07 职场文书
简单的辞职信范文(2016最新版)
2015/05/12 职场文书
2019年亲子运动会口号
2019/10/11 职场文书
Java实现注册登录跳转
2022/06/16 Java/Android