django apache wsgi用于支持Python wsgi的扩展协议 除了mod_wsgi外 还有别的吗? mod_wsgi还有人用吗?

在Windows服务器下用apache和mod_wsgi配置Python应用的教程-中国学网-中国IT综合门户网站
最近开发了一个 Google Analytics 相关的应用,但需要在 Windows 下部署,结合网上的相关经验,最终选择了 apache+mod_wsgi 这样的配置。
修改python应用
&&& 代码如下: Note that mod_wsgi requires that the WSGI application entry point be called 'application'. If you want to call it something else then you would need to configure mod_wsgi explicitly to use the other name.
&&& (via: wiki)
因为 mod_wsgi 默认要求入口名称为 application 所以我们需要对自己的 python web 应用做一些修改。
假设我们使用flask 搭建的应用,而默认的入口名称为 app, 建立一个 wsgi_handler.wsgi
import sys, os
sys.path.insert(0, os.path.dirname(__file__))
from application import app as application
下载安装 httpd
应用的入口修改好之后,就需要安装 apache 和 mod_wsgi 了,我使用的是32位的系统,64位系统下载的安装包可能 与32位的不同。
打开页面 //httpd/binaries/win32/,下载 httpd-2.2.22-win32-x86-no_ssl.msi, 下载后运行程序,按提示安装,具体过程这里不详述。
安装并配置 mod_wsgi
目前 Windows 下对 python 支持的最好的应该就是 [mod_wsgi][mw] 了。
下载 /p/modwsgi/downloads/detail?name=mod_wsgi-win32-ap22py27-3.3.so
将下载的文件重命名为 mod_wsgi.so 后移动到 apache 的 modules 目录:
在 conf/httpd.conf 中加入如下配置
代码如下:LoadModule wsgi_module& modules/mod_wsgi.so
配置应用 vhost
在 conf/httpd.conf 中启用 vhosts 配置文件
代码如下:# Virtual hosts
Include conf/extra/httpd-vhosts.conf
编辑 conf\extra\httpd-vhosts.conf 删除无效的示例代码,并加入应用的配置
代码如下:NameVirtualHost *:5000
&VirtualHost *:5000&
&&& ServerName localhost
&&& WSGIScriptAlias / E:\Projects\ga-data\wsgi_handler.wsgi
&&& &Directory E:\Projects\ga-data&
&&&&&&&&&&& Order deny,allow
&&&&&&&&&&& Allow from all
&&& &/Directory&
&/VirtualHost&
其中 E:\Projects\ga-data 替换成应用真实的路径,尽量避免将应用放在中文或者有包含空格的路径中
接下来启动 Apache 并访问 http://localhost:5000 即可。
本文相关搜索Presented and sorted websites by server Apache/2.2.24 (Unix) mod_wsgi/3.4 Python/2.7.3 PHP/5.3.24.
To get access to the Top Server, as well as other Top categories, please follow .Screenshot / #Site characteristics
: 马克鳗 - 让设计更有爱,设计稿标注、测量,不再苦逼
China , Beijing, 42.62.24.196, Apache/2.2.24 (Unix) mod_wsgi/3.4 Python/2.7.3 PHP/5.3.24, Forest Eternal Communication Tech. co.ltd
Other SEO Tools
Forum Events
Important Topics
Interesting Threads当前位置: >
配置Apache+mod_wsgi运行Python环境
时间: && 来源:服务器之家 && 投稿:root
开始用Django做项目了,Django自带的服务器说是只能开发测试用,上线还是要配置Apache。
从来没用过Apache,配置wsgi的时候遇到了各种各样的问题。
1. 首先查看下自己Apache的配置,在terminal输入apachectl -V可以看到版本,安装目录等。os x
自带的Apache配置文件在private/etc/apache2/
目录下;mod安装好都在/usr/libexec/apache2/
目录下;log文件在/private/var/log/apache2/ 目录下。
下载wsgi源文件:wsgi&。下载完成后terminal进wsgi目录,./configure配置wsgi。配置完成make。在make的时候遇到报错,说是-bash:
make: command not found. 这个原因是我升级了xcode, command line tools
需要重新安装下。 安装完command line tools继续make. 新的错误:env:
/Applications/Xcode.app/Contents/Developer/Toolchains/OSX10.8.xctoolchain/usr/bin/cc:
No such file or directory apxs:Error: Command failed with rc=65536
原因是因为安装了Mountain Lion系统后Xcode文件位置被动过了。建symlink可以解决:$ sudo ln -s
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/
/Applications/Xcode.app/Contents/Developer/Toolchains/OSX10.8.xctoolchain
3. make 之后, sudo make
install就完成安装了。之后可以查看mod目录里生成了mod_wsgi.so就说明安装好了。
4. 在httpd.conf里面加上LoadModule wsgi_module
libexec/apache2/mod_wsgi.so。 重启apache, sudo apachectl
restart。再去error_log里查看,可以看到Apache/2.2.22 (Unix) DAV/2 mod_wsgi/3.4
Python/2.7.2 mod_ssl/2.2.22 OpenSSL/0.9.8r configured -- resuming
normal operations。 mod_wsgi成功load了。&
5. 配置wsgi的document root.&
WSGIScriptAlias /myapp
/Applications/MAMP/htdocs/wsgi/myapp.wsgi
Order allow,deny
Allow from all
Alias后面第一个参数是url入口,后面一个参数就是本地文件入口。之后配置文件夹权限。就完成了。这里如果本地文件目录用的是users/xxxx下面的目录的话会有个权限的问题。Apache好像有admin
group的权限,但是users/xxxx目录是staff group的权限。要么把users改成admin,
要么在配置文件中加
# User/Group: The name (or #number) of the user/group to run
# It is usually good practice to create a dedicated user and
# running httpd, as with most system services.
Group staff
这样apache就会以staff的权限启动。
6. 进入http://127.0.0.1/myapp 就能看到hello world了。
7. 测试可以用这个wsgi:&
def&application(environ,&start_response):
&&&&status&=&'200&OK'
&&&&output&=&'Hello&World!'
&&&&response_headers&=&[('Content-type',&'text/plain'),
&&&&&&&&&&&&&&&&&&&&&&&('Content-Length',&str(len(output)))]
&&&&start_response(status,&response_headers)
&&&return&[output]
最后感谢下好基友cixining的帮忙。windows下安装apache + python + django + mod_wsgi.so
[问题点数:20分,结帖人YuNa123]
windows下安装apache + python + django + mod_wsgi.so
[问题点数:20分,结帖人YuNa123]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
相关帖子推荐:
2012年1月 其他开发语言大版内专家分月排行榜第二2011年5月 其他开发语言大版内专家分月排行榜第二2010年12月 其他开发语言大版内专家分月排行榜第二2009年2月 其他开发语言大版内专家分月排行榜第二2008年9月 其他开发语言大版内专家分月排行榜第二2008年8月 其他开发语言大版内专家分月排行榜第二2008年5月 其他开发语言大版内专家分月排行榜第二2007年11月 其他开发语言大版内专家分月排行榜第二
2011年4月 其他开发语言大版内专家分月排行榜第三2011年1月 其他开发语言大版内专家分月排行榜第三2009年6月 其他开发语言大版内专家分月排行榜第三2009年4月 其他开发语言大版内专家分月排行榜第三2009年1月 其他开发语言大版内专家分月排行榜第三2008年11月 其他开发语言大版内专家分月排行榜第三2008年7月 其他开发语言大版内专家分月排行榜第三2008年6月 其他开发语言大版内专家分月排行榜第三2006年9月 其他开发语言大版内专家分月排行榜第三
本帖子已过去太久远了,不再提供回复功能。如何Python Web框架,WSGI和CGI结合在一起
我有一个BlueHost的帐户,我可以运行Python脚本作为CGI。我想这是最简单的CGI,跑我必须在定义以下.htaccess:
Options +ExecCGI
AddType text/html py
AddHandler cgi-script .py
现在,每当我仰望网页编程与Python,我听到了很多关于WSGI以及如何最使用它。但我就是不明白这一切是如何combinations在一起的,我的Web服务器发出特别是当(Apache上运行在一台主机的机器),而不是我真的可以玩(除确定.htaccess命令)。
如何WSGI CodeGo.net,CGI和所有连接的?什么我需要知道,安装和做的,如果我想在我的基本的CGI配置运行一个Web(比如web.py或CherryPy的)?如何安装WSGI支持?
本文地址 :CodeGo.net/12737/
-------------------------------------------------------------------------------------------------------------------------
1. 如何WSGI,CGI和都连接?
Apache的监听端口80。它得到一个HTTP请求。它解析请求,找到一种方法来应对。 Apache有一个选择很多关于响应。应对方法之一是CGI来运行脚本。另一种方式回应是简单地成为一个文件。
在CGI的情况下,Apache的准备一个与通过CGI协议调用脚本。这是一个标准的Linux叉/ Exec的情况-CGI的子进程继承了一个操作系统,包括sockets和stdout。 CGI的子进程写入响应,这可以追溯到apache,apache发送这样的响应到浏览器。
CGI是原始的 CodeGo.net,烦人。主要是它派生一个子进程为每个请求。
WSGI是一个基于CGI的设计图案的接口。它不一定是CGI-它不具有分叉的子进程为每个请求。它可以是CGI,但它并不一定如此。
WSGI增加了在几个重要方面CGI的设计模式。它解析HTTP请求头给你,并增加了这些给它提供任何POST为导向的投入,在这一个类文件对象还为您提供了将制定响应的函数,保存您的大量的格式化细节。
我需要知道/安装/如果我想在我的基本的CGI配置运行一个Web(比如web.py或CherryPy的)?
回想一下,fork一个子进程是昂贵的。有两种方法可以解决这个。
嵌入式mod_wsgi或mod_python内嵌的Python里面的Apache,没有进程分叉。apache直接运行Django应用程序。
守护进程mod_wsgi或mod_fastcgi让Apache可以用一个单独的守护进程(或“长期运行的进程”)进行交互,使用WSGI协议。你开始你的长期运行Django的过程,然后再配置Apache的mod_fastcgi在此过程。
需要注意的是mod_wsgi嵌入或守护进程:可以工作在两种模式。
当你读了的mod_fastcgi,你会看到flup创建由的mod_fastcgi提供一个接口。这条pipeline是这样工作的。
Apache -& mod_fastcgi -& FLUP (via CGI protocol) -& Django (via WSGI protocol)
Django的有几个“django.core.handlers”的接口。
对于的mod_fastcgi,Django提供了一个manage.py runfcgi集成FLUP和处理程序。
对于mod_wsgi的,有一个核心处理这一点。
如何安装WSGI支持?
请按照以下说明。
对于后台看到这
我认为弗洛里安的答案回答您的关于“什么是WSGI”问题的一部分,特别是如果你读了人教版。
至于你提出对后面的问题:
WSGI,CGI,FastCGI的等都是一个Web服务器来运行代码,并提供了生成动态内容的协议。与此相比,静态的Web服务,在一个纯HTML文件基本上是原样送达客户端端。
CGI,FastCGI和SCGI是语言无关。你可以写在Perl,Python和C,bash中,无论CGI脚本。 CGI定义了可执行文件将被调用,基于URL,以及如何被调用:在和它也定义了如何返回值应该被传递回Web服务器,一旦你的可执行文件就完成了。的变化基本上的优化,以便能够处理更多的请求,减少等待时间等;的基本概念是
WSGI是Python的唯一。而不是一个语言无关的协议,标准的函数签名的定义是:
def simple_app(environ, start_response):
"""Simplest possible application object"""
status = '200 OK'
response_headers = [('Content-type','text/plain')]
start_response(status, response_headers)
return ['Hello world!\n']
这是(如果限制)WSGI应用。 Web服务器与WSGI支持(如Apache的mod_wsgi带)可以调用这个函数,每当一个请求到达。
原因是这样的伟大,是因为我们能够避免从一个HTTP GET / POST再次的出路转换为CGI到Python,和背部的一步。这是一个更为直接,廉洁高效联动。
这也使得它更容易有长时间运行的运行的Web服务器之后,如果所有需要的要求做的是一个函数调用。与普通的CGI,你必须启动你的整个为每个单独的请求。
有WSGI支持,你需要安装一个WSGI模块(如mod_wsgi的),一个Web服务器WSGI出炉的(像CherryPy的)。如果这些都不是可能的,你可以使用的人教版给出的CGI-WSGI桥。
您可以通过CGI运行的WSGI作为Pep333证明作为例子。但是每有一个新的Python解释器启动和整个上下文(数据库连接等)需要被建立,都接受一个请求
最好的,如果你想运行的WSGI是,如果你的主机将安装的mod_wsgi并作适当的配置推迟控制你的应用程序。
Flup是另一种方式来与WSGI运行任何Web服务器,可以说FCGI,SCGI或AJP。从我的经验只有FCGI真正起作用,并且它可以在Apache中可通过的mod_fastcgi或者您可以mod_proxy_fcgi运行一个单独的Python守护进程。
WSGI是一个协议,很像CGI,它定义一组规则如何网络服务器和Python代码可以进行交互,它被定义为Pep333。这使得它可以有许多不同的Web服务器很多不同和应用协议。这是非常有利的,使得它
如果你不清楚在这个空间中的所有条款,让我们面对它,它的一个缩写载货之一,另外还有在Python官方的HOWTO的CGI与FastCGI的对比WSGI等表单的良好背景的读者:
这是一个简单的抽象层为Python,类似于servlet规范是为Java。而CGI是非常低的水平,只是转储的东西入/出,上述两种规格型号的HTTP请求和响应中的语言结构的过程和标准。然而,我的印象是,在Python乡亲还没有完全结清的事实上的让你有参考和其他实用型库提供其他的东西一起WSGI支持(如粘贴)combinations。当然,我可能是错的,我是一个到Python。在“网页脚本”社会从不同的方向的问题(共享主机,CGI的legacy,privileges分离问题)比Java有乡亲开始(运行在一个专用的单一企业对容器和部署的代码)的奢侈品。
本文标题 :如何Python Web框架,WSGI和CGI结合在一起
本文地址 :CodeGo.net/12737/
Copyright (C) 2014 CodeGo.net 沪ICP备号 联系电邮: (#=@)

我要回帖

更多关于 wsgi python 的文章

 

随机推荐