web.py 0.3 新手指南 - 安装
Summary
- 安装
- 开发
- 产品
- LightTPD
- .. 使用 FastCGI
- Apache
- .. 使用 CGI
- .. 使用 CGI using .htaccess
- .. 使用 FastCGI
- .. 使用 SCGI
- .. 使用 mod_python
- .. 使用 mod_wsgi
- .. 使用 mod_rewrite
- LightTPD
安装
安装web.py, 请先下载:
http://webpy.org/static/web.py-0.33.tar.gz
解压并拷贝 web 文件夹到你的应用程序目录下。 或者,为了让所有的应用程序都可以使用,运行:
python setup.py install
注意: 在某些类unix系统上你可能需要切换到root用户或者运行:
sudo python setup.py install
查看 推荐设置.
另外一个选择是使用Easy Install. Easy Install 使用如下:
easy_install web.py
开发
web.py 内置了web服务器。可以按照 tutorial 学习如何写一个Web应用。 写完后,将你的代码放到code.py
并如下面的方法来启动服务器:
python code.py
打开你的浏览器输入 http://localhost:8080/ 查看页面。 若要制定另外的端口,使用 python code.py 1234
。
产品
现在所运行 web.py 程序的web服务器是挺不错的, 但绝大多数网站还是需要更加专业一些的web服务器。web.py 实现了 WSGI 并能在任何兼容它的服务器上运行。 WSGI 是一个web服务器与应用程序之间的通用API, 就如Java 的 Servlet 接口。 你需要安装 flup (download here) 使web.py 支持with CGI, FastCGI 或 SCGI, flup提供了这些API的WSGI接口。
对于所有的CGI变量, 添加以下到你的 code.py
:
#!/usr/bin/env python
并运行 chmod +x code.py
添加可执行属性。
LightTPD
.. 使用 FastCGI
在产品中通过FastCGI结合lighttpd是web.py使用的一种推荐方法。 reddit.com 通过该方法来处理百万次的点击。
lighttpd config设置参考如下:
server.modules = ("mod_fastcgi", "mod_rewrite")server.document-root = "/path/to/root/" fastcgi.server = ( "/code.py" => (( "socket" => "/tmp/fastcgi.socket","bin-path" => "/path/to/root/code.py","max-procs" => 1)))url.rewrite-once = ("^/favicon.ico$" => "/static/favicon.ico","^/static/(.*)$" => "/static/$1","^/(.*)$" => "/code.py/$1")
在某些版本的lighttpd中, 需要保证fastcgi.server选项下的"check-local"属性设置为"false", 特别是当你的code.py
不在文档根目录下。
如果你得到错误显示不能够导入flup, 请在命令行下输入 "easy_install flup" 来安装。
从修订版本 145开始, 如果你的代码使用了重定向,还需要在fastcgi选项下设置bin-environment变量。 如果你的代码重定向到http://domain.com/ 而在url栏中你会看到 http://domain.com/code.py/, 你可以通过设置这个环境变量来阻止。 这样你的fastcgi.server设置将会如下:
fastcgi.server = ( "/code.py" =>
(("socket" => "/tmp/fastcgi.socket","bin-path" => "/path/to/root/code.py","max-procs" => 1,"bin-environment" => ("REAL_SCRIPT_NAME" => ""),"check-local" => "disable"
))
)
Apache
.. 使用 CGI
添加以下到 httpd.conf
或 apache2.conf
。
Alias /foo/static/ /path/to/static
ScriptAlias /foo/ /path/to/code.py
.. 使用 CGI .htaccess
CGI很容易配置, 但不适合高性能网站。 添加以下到你的 .htaccess
:
Options +ExecCGI
AddHandler cgi-script .py
将你的浏览器指向 http://example.com/code.py/
。 不要忘记最后的斜杠,否则你将会看到 not found
消息 (因为在 urls
列表中你输入的没有被匹配到). 为了让其运行的时候不需要添加 code.py
, 启用mod_rewrite 法则 (查看如下)。
注意: web.py
的实现破坏了 cgitb
模块,因为它截取了 stdout
。 可以通过以下的方法来解决该问题:
import cgitb; cgitb.enable()
import sys# ... import web etc here...def cgidebugerror():""" """ _wrappedstdout = sys.stdoutsys.stdout = web._oldstdoutcgitb.handler()sys.stdout = _wrappedstdoutweb.internalerror = cgidebugerror
.. 使用 FastCGI
FastCGI很容易配置,运行方式如同mod_python。
添加以下到 .htaccess
:
<Files code.py> SetHandler fastcgi-script
</Files>
不幸的是, 不像lighttpd, Apache不能够暗示你的web.py脚本以FastCGI 服务器的形式工作,因此你需要明确的告诉web.py。 添加以下到 code.py
的 if __name__ == "__main__":
行前:
web.wsgi.runwsgi = lambda func, addr=None: web.wsgi.runfcgi(func, addr)
将你的浏览器指向 http://example.com/code.py/
。 不要忘记最后的斜杠,否则你将会看到 not found
消息 (因为在 urls
列表中你输入的没有被匹配到). 为了让其运行的时候不需要添加 code.py
, 启用mod_rewrite 法则 (查看如下)。
Walter 还有一些额外建议.
.. 使用 SCGI
https://www.mems-exchange.org/software/scgi/ 从 http://www.mems-exchange.org/software/files/mod_scgi/ 下载 mod_scgi
代码 windows apache 用户: 编辑 httpd.conf:
LoadModule scgi_module Modules/mod_scgi.so
SCGIMount / 127.0.0.1:8080
重启apache,并在命令行中如下方式启动code.py:
python code.py 127.0.0.1:8080 scgi
打开你的浏览器,访问127.0.0.1 It's ok!
.. 使用 mod_python
mod_python 运行方式如同FastCGI, 但不是那么方便配置。
对于 Python 2.5 按照如下:
cd /usr/lib/python2.5/wsgiref
# or in windows: cd /python2.5/lib/wsgiref
wget -O modpython_gateway.py http://projects.amor.org/misc/browser/modpython_gateway.py?format=raw
# or fetch the file from that address using your browser
对于 Python <2.5 按照如下:
cd /usr/lib/python2.4/site-packages
# or in windows: cd /python2.4/lib/site-packages
svn co svn://svn.eby-sarna.com/svnroot/wsgiref/wsgiref
cd wsgiref
wget -O modpython_gateway.py http://projects.amor.org/misc/browser/modpython_gateway.py?format=raw
# or fetch the file from that address using your browser
重命名 code.py
为 codep.py
或别的名字, 添加:
main = web.wsgifunc(web.webpyfunc(urls, globals()))
在 .htaccess
中, 添加:
AddHandler python-program .py
PythonHandler wsgiref.modpython_gateway::handler
PythonOption wsgi.application codep::main
你应该希望添加 RewriteRule
将 /
指向 /codep.py/
确保访问 /codep.py/
的时候有添加最后的 /
。 否则,你将会看到一条错误信息,比如 A server error occurred. Please contact the administrator.
.. 使用 mod_wsgi
mod_wsgi 是一个新的Apache模块 通常优于mod_python 用于架设WSGI应用,它非常容易配置。
在 code.py
的最后添加:
application = web.wsgifunc(web.webpyfunc(urls, globals()))
mod_wsgi 提供 许多可行方法 来实现WSGI应用, 但一种简单的方法是添加以下到 .htaccess:
<Files code.py>SetHandler wsgi-scriptOptions ExecCGI FollowSymLinks
</Files>
如果在apache的 error.log 文件中出现 "ImportError: No module named web", 在导入web之前,你可能需要在code.py中尝试设置绝对路径:
import sys, os
abspath = os.path.dirname(__file__)
sys.path.append(abspath)
os.chdir(abspath)
import web
同时, 你可能需要查看 WSGI应用的常见问题的 "Application Working Directory" 部分。
最终应该可以访问 http://example.com/code.py/
。
mod_rewrite 法则,Apache
如果希望 web.py 能够通过 'http://example.com' 访问,代替使用 'http://example.com/code.py/', 添加以下法则到 .htaccess
文件:
<IfModule mod_rewrite.c> RewriteEngine onRewriteBase /RewriteCond %{REQUEST_URI} !^/iconsRewriteCond %{REQUEST_URI} !^/favicon.ico$RewriteCond %{REQUEST_URI} !^(/.*)+code.py/RewriteRule ^(.*)$ code.py/$1 [PT]
</IfModule>
如果 code.py
在子目录 myapp/
中, 调整 RewriteBase 为 RewriteBase /myapp/
。 如果还有一些静态文件如CSS文件和图片文件, 复制这些并改成你需要的地址。
转载于:https://www.cnblogs.com/justjavac/archive/2012/11/23/webpy-tutorial-install.html
web.py 0.3 新手指南 - 安装相关推荐
- 简单而直接的Python web 框架:web.py
From:https://www.oschina.net/question/5189_4306 Web.py github 地址:https://github.com/webpy/webpy ...
- 一个强大而简单的 Python Web框架:web.py
From:https://www.oschina.net/question/5189_4306 Web.py github 地址:https://github.com/webpy/webpy ...
- python web.py
浅谈五大Python Web框架:https://www.cnblogs.com/suzhigang/p/6208244.html web.py 0.3 新手指南:http://webpy.org/d ...
- python 实现网站_python 实现网站_用web.py实现python网站版hello world网页
github源码安装 浏览器打开https://github.com/webpy/webpy,下载源码zip格式,解压出来.cmd打开,cd到解压目录,输入 python setup.py insta ...
- python3.7.3安装失败_python 3.7.3安装web.py报错解决方法
安装python最新版本: 第一,请确保使用下面命令安装web.py pip install web.py==0.40-dev1 第二.运行官方例子: import web urls = ( '/(. ...
- Python 3.x 安装 web.py ,血泪!!
Python3.x 安装 web.py ,血泪!! 简述 适用平台 Linux 安装 安装结果 Windows 安装 测试 批注 简述 更新时间:2019-7-14 内容:以前没有发现window p ...
- python web py入门(1)-web.py简介和安装
1.web.py 简介 web.py是一个轻量级的python web框架,简单而且功能强大.相对flask和Django,web.py更适合初学者来学习和了解web开发的基础知识. 2.web.py ...
- Windows下安装Web.py快速指南
环境介绍 首先介绍下安装使用的环境 - Windows 7 - Python 3.6 Web.py介绍 web.py是Python在Web领域一个轻量级的解决方案,所谓轻量,就是非常简单快速满足Web ...
- web.py搭建服务器
python搭建服务器 ------------------安装web.py------------------------ Windows10 python3.5 安装web.py问题 pip ...
最新文章
- 再见,Python!!
- 大数据的3V和三个层面
- [AWDwR4] Iteration F4
- 自主学习之RxSwift(二) -----flatMap
- Android之URL “page={page}category_id={***} string For dynamic query parameters use @Query.
- P2678 [NOIP2015 提高组] 跳石头
- easyUI的combobox实现级联
- vbs 窗体文字获取文档_MDI类型窗体设置背景图片
- plantUML 学习
- 【CF Contest-1251 E2】Voting (Hard Version)【贪心】
- 2022新版UI聚合支付系统四方系统源码+修复漏洞完美版
- php随机生成18位数,PHP随机生成18位不重复的订单号代码实例
- 战争调度(动态规划、记忆化搜索)
- 应用html的DIV+CSS制作牛顿摆
- 计算机专业必读哪些经典书籍?
- mysql rds备份_云数据库RDS如何进行数据备份
- netsh interface portproxy 转发不生效_最新!“海高斯”已登陆珠海金湾区!人不出门,车不上路!...
- binlog2sql 工具安装使用及问题汇总
- Echarts可视化MySQL数据
- 苹果cms v10用户搜索什么就入库添加什么php源码实现
热门文章
- 2.4 Add a dynamic map
- 三天没有更新我的BLOG
- 在Python这条路上踩过的坑(1)
- DB2数据库V8.2版本远程连接方法
- Latex博士论文格式版本(在CASthesis基础上作修改)
- 【Linux】FrameBuffer操作入门
- python脚本中执行另一个脚本_如何用python调用另一个python脚本?
- 电脑安全注意事项_别墅装修设计注意事项 别墅装修的陷阱有哪些
- HttpClient的连接池||HttpClient的请求参数
- 实验5:配置通过静态工厂方法创建的bean、实例工厂方法创建的bean、(FactoryBean测试)★