在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引用(import)文件夹下的py文件的方法
Aug 26 Python
在Python中使用poplib模块收取邮件的教程
Apr 29 Python
Python实现桶排序与快速排序算法结合应用示例
Nov 22 Python
Python实现简单的语音识别系统
Dec 13 Python
Python重新加载模块的实现方法
Oct 16 Python
Python爬虫beautifulsoup4常用的解析方法总结
Feb 25 Python
Python高级property属性用法实例分析
Nov 19 Python
python实现输入的数据在地图上生成热力图效果
Dec 06 Python
如何将你的应用迁移到Python3的三个步骤
Dec 22 Python
PyQt5+Pycharm安装和配置图文教程详解
Mar 24 Python
Python3自定义http/https请求拦截mitmproxy脚本实例
May 11 Python
python 元组和列表的区别
Dec 30 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
Codeigniter+PHPExcel实现导出数据到Excel文件
2014/06/12 PHP
浅析php原型模式
2014/11/25 PHP
PHP对XML内容进行修改和删除实例代码
2016/10/26 PHP
PHP自动补全表单的两种方法
2017/03/06 PHP
php检查函数必传参数是否存在的实例详解
2017/08/28 PHP
JavaScript Timer实现代码
2010/02/17 Javascript
限制文本框输入N个字符的js代码
2010/05/13 Javascript
javascript实现的右下角弹窗实例
2015/04/24 Javascript
jQuery增加和删除表格项目及实现表格项目排序的方法
2016/05/30 Javascript
利用jQuery插件imgAreaSelect实现获得选择域的图像信息
2016/12/02 Javascript
jQuery图片轮播实现并封装(一)
2016/12/03 Javascript
JS实现数组按升序及降序排列的方法
2017/04/26 Javascript
Angular4编程之表单响应功能示例
2017/12/13 Javascript
Angular4.0中引入laydate.js日期插件的方法教程
2017/12/25 Javascript
对vue.js中this.$emit的深入理解
2018/02/23 Javascript
JS实现的简单折叠展开动画效果示例
2018/04/28 Javascript
不得不知的ES6小技巧
2018/07/28 Javascript
vue组件开发props验证的实现
2019/02/12 Javascript
vue.js 2.0实现简单分页效果
2019/07/29 Javascript
Nuxt的动态路由和参数校验操作
2020/11/09 Javascript
python实现巡检系统(solaris)示例
2014/04/02 Python
将Django框架和遗留的Web应用集成的方法
2015/07/24 Python
Mac中升级Python2.7到Python3.5步骤详解
2017/04/27 Python
Python PyQt5实现的简易计算器功能示例
2017/08/23 Python
TensorFlow模型保存和提取的方法
2018/03/08 Python
Sanic框架路由用法实例分析
2018/07/16 Python
Python 字符串与二进制串的相互转换示例
2018/07/23 Python
Python对excel文档的操作方法详解
2018/12/10 Python
对Python 两大环境管理神器 pyenv 和 virtualenv详解
2018/12/31 Python
Python操作配置文件ini的三种方法讲解
2019/02/22 Python
使用py-spy解决scrapy卡死的问题方法
2020/09/29 Python
html5 input元素新特性_动力节点Java学院整理
2017/07/06 HTML / CSS
活动总结新闻稿
2014/08/30 职场文书
2014年幼儿园国庆主题活动方案
2014/09/16 职场文书
观看建国大业观后感
2015/06/01 职场文书
优秀共产党员事迹材料2016
2016/02/29 职场文书