在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爬虫通过替换http request header来欺骗浏览器实现登录功能
Jan 07 Python
Python实现可自定义大小的截屏功能
Jan 20 Python
对Python通过pypyodbc访问Access数据库的方法详解
Oct 27 Python
Python常见读写文件操作实例总结【文本、json、csv、pdf等】
Apr 15 Python
Django REST framework 如何实现内置访问频率控制
Jul 23 Python
python3 实现的对象与json相互转换操作示例
Aug 17 Python
完美解决Django2.0中models下的ForeignKey()问题
May 19 Python
Python偏函数Partial function使用方法实例详解
Jun 17 Python
Python confluent kafka客户端配置kerberos认证流程详解
Oct 12 Python
python利用opencv保存、播放视频
Nov 02 Python
python实现web邮箱扫描的示例(附源码)
Mar 30 Python
Python中glob库实现文件名的匹配
Jun 18 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提交表单时判断 if($_POST[submit])与 if(isset($_POST[submit])) 的区别
2011/02/08 PHP
php实现汉字验证码和算式验证码的方法
2015/03/07 PHP
laravel 解决groupBy时出现的错误 isn't in Group By问题
2019/10/17 PHP
javascript中利用数组实现的循环队列代码
2010/01/24 Javascript
JavaScript Array Flatten 与递归使用介绍
2011/10/30 Javascript
10款非常有用的 Ajax 插件分享
2012/03/14 Javascript
一款jquery特效编写的大度宽屏焦点图切换特效的实例代码
2013/08/05 Javascript
JScript分割字符串示例代码
2013/09/04 Javascript
引用 js在IE与FF之间的区别详细解析
2013/11/20 Javascript
js实现div闪烁原理及实现代码
2014/06/24 Javascript
js实现局部页面打印预览原理及示例代码
2014/07/03 Javascript
jQuery中nextAll()方法用法实例
2015/01/07 Javascript
JS+CSS实现Li列表隔行换色效果的方法
2015/02/16 Javascript
JS生成和下载二维码的代码
2016/12/07 Javascript
微信小程序 闭包写法详细介绍
2016/12/14 Javascript
vue项目base64字符串转图片的实现代码
2018/07/13 Javascript
傻瓜式vuex语法糖kiss-vuex整理
2018/12/21 Javascript
小程序实现多个选项卡切换
2020/06/19 Javascript
JavaScript中变量提升和函数提升的详解
2020/08/07 Javascript
使用Python的内建模块collections的教程
2015/04/28 Python
python实现一次创建多级目录的方法
2015/05/15 Python
Python脚本暴力破解栅栏密码
2015/10/19 Python
用生成器来改写直接返回列表的函数方法
2017/05/25 Python
分享几道你可能遇到的python面试题
2017/07/24 Python
python 读入多行数据的实例
2018/04/19 Python
python如何生成各种随机分布图
2018/08/27 Python
对python中dict和json的区别详解
2018/12/18 Python
Django Channel实时推送与聊天的示例代码
2020/04/30 Python
解决Pycharm 中遇到Unresolved reference 'sklearn'的问题
2020/07/13 Python
福克斯租车:Fox Rent A Car
2017/04/13 全球购物
国际商务专业职业生涯规划书范文
2014/01/17 职场文书
市场部管理制度
2014/02/02 职场文书
三方协议书范本
2014/04/22 职场文书
全国优秀辅导员事迹材料
2014/05/14 职场文书
2016元旦主持人开场白
2015/12/03 职场文书
入党申请书怎么写?
2019/06/21 职场文书