在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中常用检测字符串相关函数汇总
Apr 15 Python
浅析Python多线程下的变量问题
Apr 28 Python
python之virtualenv的简单使用方法(必看篇)
Nov 25 Python
Python使用三种方法实现PCA算法
Dec 12 Python
Python通过paramiko远程下载Linux服务器上的文件实例
Dec 27 Python
正确理解Python中if __name__ == '__main__'
Jan 24 Python
Python使用matplotlib 模块scatter方法画散点图示例
Sep 27 Python
Python打开文件、文件读写操作、with方式、文件常用函数实例分析
Jan 07 Python
Windows下Anaconda和PyCharm的安装与使用详解
Apr 23 Python
Python3爬虫中pyspider的安装步骤
Jul 29 Python
python 如何使用find和find_all爬虫、找文本的实现
Oct 16 Python
python 爬虫请求模块requests详解
Dec 04 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
CI框架源码阅读,系统常量文件constants.php的配置
2013/02/28 PHP
php笔记之:文章中图片处理的使用
2013/04/26 PHP
PHP闭包定义与使用简单示例
2018/04/13 PHP
PHP5.5新特性之yield理解与用法实例分析
2019/01/11 PHP
关于Yii2框架跑脚本时内存泄漏问题的分析与解决
2019/12/01 PHP
js异或加解密效果代码
2008/06/25 Javascript
Javascript this关键字使用分析
2008/10/21 Javascript
jquery jqPlot API 中文使用教程(非常强大的图表工具)
2011/08/15 Javascript
JQuery入门——用bind方法绑定事件处理函数应用介绍
2013/02/05 Javascript
js怎么覆盖原有方法实现重写
2014/09/04 Javascript
整理JavaScript创建对象的八种方法
2015/11/03 Javascript
js点击文本框弹出可选择的checkbox复选框
2016/02/03 Javascript
深入理解jQuery事件绑定
2016/06/02 Javascript
如何使用jquery实现文字上下滚动效果
2016/10/12 Javascript
JavaScript中全选、全不选、反选、无刷新删除、批量删除、即点即改入库(在yii框架中操作)的代码分享
2016/11/01 Javascript
原生js实现下拉框功能(支持键盘事件)
2017/01/13 Javascript
Vuejs仿网易云音乐实现听歌及搜索功能
2017/03/30 Javascript
vue进行图片的预加载watch用法实例讲解
2018/02/07 Javascript
vue 动态组件用法示例小结
2020/03/06 Javascript
[18:16]sakonoko 2017年卡尔集锦
2018/02/06 DOTA
Python中的True,False条件判断实例分析
2015/01/12 Python
Python实现字符串格式化的方法小结
2017/02/20 Python
python函数的5种参数详解
2017/02/24 Python
Python自动生产表情包
2017/03/17 Python
Python实现的简单dns查询功能示例
2017/05/24 Python
Python基于opencv的图像压缩算法实例分析
2018/05/03 Python
python 发送和接收ActiveMQ消息的实例
2019/01/30 Python
python opencv将图片转为灰度图的方法示例
2019/07/31 Python
python爬虫 urllib模块url编码处理详解
2019/08/20 Python
调试Django时打印SQL语句的日志代码实例
2019/09/12 Python
pytorch标签转onehot形式实例
2020/01/02 Python
Django微信小程序后台开发教程的实现
2020/06/03 Python
python rolling regression. 使用 Python 实现滚动回归操作
2020/06/08 Python
几款主流好用的富文本编辑器(所见即所得常用编辑器)介绍
2021/03/17 Javascript
介绍下Java的输入输出流
2014/01/22 面试题
分享Python异步爬取知乎热榜
2022/04/12 Python