安装

安装web.py, 请先下载:

http://webpy.org/static/web.py-0.37.tar.gz

或者获取最新的开发版:

https://github.com/webpy/webpy/tarball/master

解压并拷贝 web 文件夹到你的应用程序目录下。 或者,为了让所有的应用程序都可以使用,运行:

python setup.py install

注意: 在某些类unix系统上你可能需要切换到root用户或者运行:

sudo python setup.py install

查看 推荐设置.

另外一个选择是使用Easy Install. Easy Install 使用如下:

easy_install web.py

或者 PIP

sudo pip 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.stdout

sys.stdout = web._oldstdout
    cgitb.handler()

sys.stdout = _wrappedstdout

web.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 或别的名字, 添加:

app = web.application(urls, globals())
main = app.wsgifunc()

在 .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 的最后添加:

app = web.application(urls, globals(), autoreload=False)
application = app.wsgifunc()

mod_wsgi 提供 许多可行方法 来实现WSGI应用, 但一种简单的方法是添加以下到 .htaccess:

<Files code.py>
    SetHandler wsgi-script
    Options 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 on
  RewriteBase /
  RewriteCond %{REQUEST_URI} !^/icons
  RewriteCond %{REQUEST_URI} !^/favicon.ico$
  RewriteCond %{REQUEST_URI} !^(/.*)+code.py/
  RewriteRule ^(.*)$ code.py/$1 [PT]
</IfModule>

如果 code.py 在子目录 myapp/中, 调整 RewriteBase 为 RewriteBase /myapp/。 如果还有一些静态文件如CSS文件和图片文件, 复制这些并改成你需要的地址。

web.py 安装的更多相关文章

  1. python web.py安装使用

    官方首页:http://webpy.org/) 它的源代码非常整洁精干,学习它一方面可以让我们快速了解python语法(遇到看不懂的语法就去google),另一方面可以学习到python高级特性的使用 ...

  2. web.py安装

    web.py 是python的一个web插件,用于发布web服务安装下载web.py https://github.com/webpy/webpy 安装 解压下载的rar 打开控制台并定位到此文件夹输 ...

  3. python web py安装与简单使用

    web.py是一个轻量级的python web框架,简单而且功能强大.相对flask和Django,web.py更适合初学者来学习和了解web开发的基础知识.   安装: pip install we ...

  4. web.py开发

    web.py需要使用python2.X,所以安装python版本2.7.9 web.py 是一个轻量级Python web框架,它简单而且功能强大 web.py安装 安装python (1)使用pip ...

  5. Python web 框架:web.py

    web.py 是一个Python 的web 框架,它简单而且功能强大.web.py 是公开的,无论用于什么用途都是没有限 制的. web.py 安装: pip install web.py 下面开始我 ...

  6. 安装第三方包web.py发生的错误

    今天新学到了python的模块方面的内容,我的版本是python2.7.13 想安装第三方包web.py的时候, 命令提示符 输入 pip install web.py 总是提示如下错误 You ar ...

  7. 使用PuTTy在CentOS下安装web.py与简单的文件传输

    两周前,出于帮朋友忙的目的,尝试了一下微信公众号的菜单自定义与自动回复功能的实现,成了. 两周后,需要将代码转移至朋友新购的服务器上,发现基本操作全忘记了,麻瓜!所以记一笔,希望也能对大家也有帮助. ...

  8. Windows下安装Web.py快速指南

    环境介绍 首先介绍下安装使用的环境 - Windows 7 - Python 3.6 Web.py介绍 web.py是Python在Web领域一个轻量级的解决方案,所谓轻量,就是非常简单快速满足Web ...

  9. python3.X 安装web.py 失败的解决方法

    python2.x 安装python是非常顺利的 但是 在进行 pip3 install web.py 时提示很多错误 例如缺少模块 语法错误...... 最后试了一下web.py 的dev版本 pi ...

随机推荐

  1. jsp el 自定义方法 tld 说明

    使用 el 的过程中,需要使用到后端代码处理逻辑,这个时候我们就需要自定义 方法. 如我们后端代码定义如下: package com.rhythmk.common; public class FncH ...

  2. 《大话操作系统——做坚实的project实践派》(5)

    有人说我不是仅仅会玩X86吗?我如今铁板钉钉的申明:我事实上兼通:ARM.IA-32.IA-32e.AMD64. ​了解MIPS.但没做过MIPS由于确实没有对应的MIPS硬件平台. ​

  3. APNS .p12文件转换为 .pem文件

    1:先用mac的钥匙串工具,把APN的推送证书转换为 .p12文件: 2:在mac的终端下 把.p12文件转换为 .pem文件 openssl pkcs12 -in apns-dev-cert.p12 ...

  4. tornado zbar 二维码识别 ,配合nginx 反向代理,supervisord 监控

    tornado zbar 二维码识别 ,配合nginx 反向代理,supervisord 监控 1.zbar识别二维码程序,python2.6.6 #!/usr/bin/env python # co ...

  5. 服务器提交了协议冲突. Section=ResponseHeader Detail=CR...的解决方案总结

    今天在HttpWebRequest发送一个网页请求的时候,HttpWebResponse返回了一个奇怪的错误信息: 这个Http协议请求类可是微软封装的,我使用的流程可是中规中矩,不可能是我写错代码, ...

  6. HDU-1090-A+B for Input-Output Practice (II)(骗訪问量的)

    A+B for Input-Output Practice (II) Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/327 ...

  7. 蓝的成长记——追逐DBA(6): 做事与做人:小技术,大为人

    ***********************************************声明*************************************************** ...

  8. 修改HTML5 input placeholder默认颜色

    WebKit和Blink(Safari,Google Chrome, Opera15+)使用伪元素 ::-webkit-input-placeholder Mozilla Firefox 4-18使用 ...

  9. CAS 与 无锁队列

    http://coolshell.cn/articles/8239.html http://www.tuicool.com/articles/VZ3IBv http://blog.csdn.net/r ...

  10. jboss部署web应用

    http://liufei-fir.iteye.com/blog/759772初次部署jboss的web应用,把tomcat/weblogic下的工程移植到jboss上发布 一.修改JBOSS应用服务 ...