Back to site
Since 2004, our University project has become the Internet's most widespread web hosting directory. Here we like to talk a lot about web servers, web development, networking and security services. It is, after all, our expertise. To make things better we've launched this science section with the free access to educational resources and important scientific material translated to different languages.

Webpy - vodič za instalaciju

Vodič za instalaciju

Drugi jezici: espanol | Japan 日本語 | chinese 简体中文 | italiano | français

Pregled sadržaja

Instalacija

Da biste instalirali web.py, preuzmite:

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

ili nabavite poslednju dev verziju:

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

raspakujte je i kopirajte web folder u direktorijum u kome se nalazi vaša aplikacija. Ili, da je učinite dostupnom za sve aplikacije, izvršite:

python setup.py install

Napomena: na nekim sistemima, sličnim unix-u, možda ćete trebati da se prebacite na root administratorski nalog, ili da izvršite:

sudo python setup.py install

pogledajte preporučeni postupak instalacije.

Druga mogućnost je da upotrebite Easy Install. Kada je Easy Install pravilno instaliran:

sudo easy_install web.py

Ili PIP

sudo pip install web.py

MacOS X

Da instalirate web.py na mac os x. Važi samo za web.py 0.1...

Razvoj aplikacija

web.py dolazi sa ugrađenim veb serverom. Naučite kako da napišete aplikaciju, prateći ovo uputstvo. Kada ste napisali neku aplikaciju, stavite vaš kod u code.py i pokrenite server ovako:

python code.py

Otvorite vaš pregledač i idite na http://localhost:8080/ da biste videli stranicu. Da biste naveli drugi port, upotrebite python code.py 1234.

Proizvodnja

Veb server koji se startuje kada pokrenete neki web.py program je fin, ali popularni sajtovi na koje idete traže nešto malo ozbiljnije. web.py implementira WSGI i radi sa bilo čime što je kompatibilno sa njim. WSGI je uobičajen API između veb servera i aplikacija, analogan Java-inom Servlet Interface-u. Da pokrenete web.py sa CGI, FastCGI ili SCGI, biće potrebno da instalirate flup (preuzmite ga ovde), čime se obezbeđuju WSGI interfejsi za ove API-je.

Za sve CGI varijante, dodajte ovo na početak vašeg code.py:

#!/usr/bin/env python

I izvršite chmod +x code.py da napravite izvršni fajl.

LightTPD

.. sa FastCGI

FastCGI sa lighttpd je preporučeni način korišćenja web.py-ja u proizvodnji aplikacija. reddit.com na ovaj način obrađuje milione pogodaka.

Vaš lighttpd config fajl može izgledati otprilike ovako:

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"
)

Kod nekih verzija lighttpd-a važno je osigurati da je "check-local" (lokalno traženje) svojstvo fastcgi.server unosa podešeno na vrednost "false", naročito ako se vaš code.py nalazi izvan document root direktorijuma.

Ako dobijate poruke o grešci kako ne možete da uvezete flup, instalirajte ga, ukucavši "easy_install flup" u komandnoj liniji.

Od revizije 145, neophodno je podesiti bin promenljivu okruženja u fastcgi konfiguraciji, ako vaš kod koristi preusmeravanja. Ukoliko vaš kod preusmerava na http://domain.com/, a u adresnom polju vidite http://domain.com/code.py/, moraćete da podesite promenljivu okruženja. Ovo će učiniti da vaša fastcgi.server konfiguracija, odozgo, izgleda otprilike ovako:

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

.. sa CGI

Dodajte sledeće u httpd.conf ili apache2.conf.

Alias /foo/static/ /path/to/static
ScriptAlias /foo/ /path/to/code.py

.. sa CGI koristeći .htaccess

CGI je lak za konfigurisanje, ali nije pogodan za veb sajtove visokih performansi. Dodajte ovo u vaš .htaccess:

Options +ExecCGI
AddHandler cgi-script .py

i usmerite vaš pregledač na http://example.com/code.py/. Nemojte zaboraviti kosu crtu na kraju, u suprotnom ćete videti poruku “not found”, tj. nije pronađeno (jer urls, koju ste definisali, ne odgovara ničemu). Da bi stvari funkcionisale bez da morate da unosite code.py, omogućite mod_rewrite pravila (pogledajte dole).

Napomena: Način na koji je implementiran web.py, prekida rad modula cgitb, jer on hvata stdout. Taj problem sam prevazilazio koristeći ovo:

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

.. sa FastCGI

FastCGI je lak za konfigurisanje i funkcioniše jednako dobro kao mod_python.

Dodajte ovo u vaš .htaccess:

<Files code.py>      
SetHandler fastcgi-script
</Files>

Na žalost, za razliku od lighttpd-a, Apache ne potseća da “želi” da se vaša web.py skripta ponaša kao FastCGI server, tako da to morate izričito da kažete web.py-u. Dodajte ovo u code.py, ispred vaše if __name__ == "__main__": linije:

web.wsgi.runwsgi = lambda func, addr=None: web.wsgi.runfcgi(func, addr)

i usmerite svoj pregledač na http://example.com/code.py/. Ne zaboravite kosu crtu na kraju, u suprotnom ćete videti poruku “not found”, tj. “nije pronađeno” (jer urls lista, koju ste definisali, ne odgovara ničemu). Da bi stvari funkcionisale bez da morate da unosite code.py, omogućite mod_rewrite pravila (pogledajte dole).

Walter ima neke dodatne savete.

.. sa SCGI

https://www.mems-exchange.org/software/scgi/ preuzmite mod_scgi fajl sa izvornim kodom ovde: http://www.mems-exchange.org/software/files/mod_scgi/ windows apache korisnik: uredite vaš httpd.conf:

LoadModule scgi_module Modules/mod_scgi.so
SCGIMount / 127.0.0.1:8080

restartujte apache i potom pokrenite vaš code.py donjom komandom:

python code.py 127.0.0.1:8080 scgi

i otvorite vaš pregledač, posetite 127.0.0.1 U redu je!

.. sa mod_python

mod_python funkcioniše jednako dobro kao FastCGI, ali nije tako jednostavan za konfigurisanje.

Za Python 2.5 uradite ovo:

cd /usr/lib/python2.5/wsgiref
# or in windows: cd /python2.5/lib/wsgiref
wget -O modpython_gateway.py http://svn.aminus.net/misc/modpython_gateway.py
# or fetch the file from that address using your browser

Za Python <2.5 uradite="">

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://svn.aminus.net/misc/modpython_gateway.py
# or fetch the file from that address using your browser

Preimenujte vaš code.py u nešto poput codep.py i dodajte:

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

U vaš .htaccess dodajte:

AddHandler python-program .py
PythonHandler wsgiref.modpython_gateway::handler
PythonOption wsgi.application codep::main

Takođe, verovatno želite da dodate RewriteRule, usmeravajući / na /codep.py/

Budite sigurni da ste upisali /codep.py/ sa još jednom kosom crtom - / na kraju. U suprotnom, dobićete poruku o grešci, u stilu A server error occurred . Please contact the administrator (Došlo je do greške na serveru. Molimo da kontaktirate administratora).

.. sa mod_wsgi

mod_wsgi je novi Apache modul koji obično nadmašuje mod_python kod hostovanja WSGI aplikacija, i koji je lak za instalaciju.



Na kraju vašeg code.py, dodajte:

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

mod_wsgi nudi mnogo mogućih načina za pokazivanje WSGI aplikacije u Apache-ovoj URL hijerarhiji, a jedan jednostavan način za to bi bio da dodate sledeće u vaš .htaccess:

<Files code.py>
    SetHandler wsgi-script
    Options ExecCGI FollowSymLinks
</Files>

Ukoliko dobijete poruku "ImportError: No module named web" (Greška pri uvozu: Ne postoji modul pod nazivom web), u vašem apache error.log fajlu, možete probati da podesite apsolutnu putanju u code.py-u pre uvoženja web-a:

import sys, os
abspath = os.path.dirname(__file__)
sys.path.append(abspath)
os.chdir(abspath)
import web

Takođe, možda želite da pročitate sekciju "Application Working Directory" (radni direktorijum aplikacije) na strani Common problems with WSGI application (uobičajeni problemi sa WSGI aplikacijom).

Trebalo bi da bude dostupna na http://example.com/code.py/, kao i obično.

mod_rewrite pravila za Apache

Ako želite da web.py bude dostupan na 'http://example.com', umesto na 'http://example.com/code.py/', dodajte sledeća pravila u fajl .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>

Ako se code.py nalazi u pod-folderu myapp/, podesite RewriteBase na RewriteBase /myapp/. Ako imate statične fajlove, kao što su CSS fajlovi i slike, kroz koje treba proći, duplirajte liniju sa ikonama za svaku putanju koju želite da dozvolite.





Published (Last edited): 01-12-2012 , source: http://webpy.org/install