在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中的XML库4Suite Server的介绍
Apr 14 Python
python fabric使用笔记
May 09 Python
python读取和保存视频文件
Apr 16 Python
Python中跳台阶、变态跳台阶与矩形覆盖问题的解决方法
May 19 Python
pandas使用get_dummies进行one-hot编码的方法
Jul 10 Python
Python使用logging模块实现打印log到指定文件的方法
Sep 05 Python
详解Python修复遥感影像条带的两种方式
Feb 23 Python
Django使用rest_framework写出API
May 21 Python
Kears 使用:通过回调函数保存最佳准确率下的模型操作
Jun 17 Python
基于Python爬取搜狐证券股票过程解析
Nov 18 Python
使用Python webdriver图书馆抢座自动预约的正确方法
Mar 04 Python
简单谈谈Python面向对象的相关知识
Jun 28 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&amp;&amp;mysql)四
2006/10/09 PHP
生成sessionid和随机密码的例子
2006/10/09 PHP
PHP提取中文首字母
2008/04/09 PHP
snoopy PHP版的网络客户端提供本地下载
2008/04/15 PHP
php获取远程图片的两种 CURL方式和sockets方式获取远程图片
2011/11/07 PHP
PHPWind与Discuz截取字符函数substrs与cutstr性能比较
2011/12/05 PHP
解析PHP中DIRECTORY_SEPARATOR,PATH_SEPARATOR两个常量的作用
2013/06/21 PHP
解决file_get_contents无法请求https连接的方法
2013/12/17 PHP
PHP判断文章里是否有图片的简单方法
2014/07/26 PHP
PHP命令行脚本接收传入参数的三种方式
2014/08/20 PHP
php浏览历史记录的方法
2015/03/10 PHP
PHP的pcntl多进程用法实例
2015/03/19 PHP
按下Enter焦点移至下一个控件的实现js代码
2013/12/11 Javascript
javascript三种代码注释方法
2016/06/02 Javascript
javascript-解决mongoose数据查询的异步操作
2016/12/22 Javascript
浅谈javascript中的数据类型转换
2016/12/27 Javascript
使用vue.js实现checkbox的全选和多个的删除功能
2017/02/17 Javascript
jquery.uploadifive插件怎么解决上传限制图片或文件大小问题
2017/05/08 jQuery
jQuery之动画ajax事件(实例讲解)
2017/07/18 jQuery
element-ui使用导航栏跳转路由的用法详解
2018/08/22 Javascript
详解nuxt 微信公众号支付遇到的问题与解决
2019/08/26 Javascript
解决layui 三级联动下拉框更新时回显的问题
2019/09/03 Javascript
Python中的urllib模块使用详解
2015/07/07 Python
python实现手机通讯录搜索功能
2018/02/22 Python
对python For 循环的三种遍历方式解析
2019/02/01 Python
python接口自动化(十七)--Json 数据处理---一次爬坑记(详解)
2019/04/18 Python
解决python 文本过滤和清理问题
2019/08/28 Python
PyQt5+Caffe+Opencv搭建人脸识别登录界面
2019/08/28 Python
tensorflow模型转ncnn的操作方式
2020/05/25 Python
CSS3 对过渡(transition)进行调速以及延时
2020/10/21 HTML / CSS
html5绘制时钟动画
2014/12/15 HTML / CSS
移动端解决悬浮层(悬浮header、footer)会遮挡住内容的3种方法
2015/03/27 HTML / CSS
职工代表大会主持词
2014/04/01 职场文书
辞职信怎么写?
2019/05/21 职场文书
PHP连接MSSQL数据库案例,PHPWAMP多个PHP版本连接SQL Server数据库
2021/04/16 PHP
浅谈克隆 JavaScript
2021/11/02 Javascript