在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 相关文章推荐
多线程爬虫批量下载pcgame图片url 保存为xml的实现代码
Jan 17 Python
利用Python循环(包括while&amp;for)各种打印九九乘法表的实例
Nov 06 Python
Windows下将Python文件打包成.EXE可执行文件的方法
Aug 03 Python
Python引用计数操作示例
Aug 23 Python
PyCharm的设置方法和第一个Python程序的建立
Jan 16 Python
Python3.4学习笔记之列表、数组操作示例
Mar 01 Python
Python3+Appium实现多台移动设备操作的方法
Jul 05 Python
django多个APP的urls设置方法(views重复问题解决)
Jul 19 Python
详解django实现自定义manage命令的扩展
Aug 13 Python
Python计算指定日期是今年的第几天(三种方法)
Mar 26 Python
Python中Selenium模块的使用详解
Oct 09 Python
python 实现围棋游戏(纯tkinter gui)
Nov 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 命令行工具 shell_exec, exec, passthru, system详细使用介绍
2011/09/11 PHP
2个比较经典的PHP加密解密函数分享
2014/07/01 PHP
php封装的验证码工具类完整实例
2016/10/19 PHP
jquery ajax提交表单数据的两种实现方法
2010/04/29 Javascript
JavaScript闭包实例讲解
2014/04/22 Javascript
自定义刻度jQuery进度条及插件
2015/09/02 Javascript
js实现各种复制到剪贴板的方法(分享)
2016/10/27 Javascript
详解angular2实现ng2-router 路由和嵌套路由
2017/03/24 Javascript
js学习总结之DOM2兼容处理this问题的解决方法
2017/07/27 Javascript
Angular4实现动态添加删除表单输入框功能
2017/08/11 Javascript
Vue兼容ie9的问题全面解决方案
2018/06/19 Javascript
基于Vue实现可以拖拽的树形表格实例详解
2018/10/18 Javascript
Vue.js 图标选择组件实践详解
2018/12/03 Javascript
js中apply和call的理解与使用方法
2019/11/27 Javascript
vue+iview实现分页及查询功能
2020/11/17 Vue.js
python使用Berkeley DB数据库实例
2014/09/26 Python
跟老齐学Python之正规地说一句话
2014/09/28 Python
Python importlib动态导入模块实现代码
2020/04/16 Python
python 5个实用的技巧
2020/09/27 Python
深入浅析css3 中display box使用方法
2015/11/25 HTML / CSS
移动端Html5中百度地图的点击事件
2019/01/31 HTML / CSS
英国助听器购物网站:Hearing Direct
2018/08/21 全球购物
银行开业庆典方案
2014/02/06 职场文书
中学生学雷锋活动心得体会
2014/03/10 职场文书
法制宣传月活动总结
2014/04/29 职场文书
2014小学教师个人工作总结
2014/11/10 职场文书
2014年秘书工作总结
2014/11/25 职场文书
装配车间主任岗位职责
2015/04/08 职场文书
倡议书格式及范文
2015/04/29 职场文书
初中团支书竞选稿
2015/11/21 职场文书
反四风问题学习心得体会
2016/01/22 职场文书
快消品行业营销模式与盈利模式分享
2019/09/27 职场文书
祝福语集锦:给妹妹结婚的祝福语
2019/12/18 职场文书
PostgreSQL并行计算算法及参数强制并行度设置方法
2022/04/06 PostgreSQL
彻底卸载VMware虚拟机的超详细步骤记录
2022/07/15 Servers
MySQL深分页问题解决思路
2022/12/24 MySQL