日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

web.py 0.3 新手指南 - 安装

發布時間:2025/4/14 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 web.py 0.3 新手指南 - 安装 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Summary

  • 安裝
  • 開發
  • 產品
    • LightTPD
      • .. 使用 FastCGI
    • Apache
      • .. 使用 CGI
      • .. 使用 CGI using .htaccess
      • .. 使用 FastCGI
      • .. 使用 SCGI
      • .. 使用 mod_python
      • .. 使用 mod_wsgi
      • .. 使用 mod_rewrite

安裝

安裝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 新手指南 - 安装的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。