Pythoni rakenduste kasutamine

Veebiserverites on pythonis kirjutatud koodi jooksutamine vaikimisi lubatud.
Seda tuleb teha läbi FastCGI, mille rakendamise saab seadistada .htaccess faili kaudu.

Vaikimisi on FastCGI kasutamine seadistatud veebilehe htdocs/cgi-bin kataloogi sees (loo see ise kui seda pole). Oletame, et koodifail, mida soovitakse käivitada on app.py.
Selleks, et domeen.ee avamisel käivitataks app.py, tuleks app.py paigutada htdocs/cgi-bin kataloogi sisse.

Seejärel tuleb htdocs/.htaccess faili lisada reeglid, mis lubavad .py failide tuvastamise FastCGI skriptina ja suunavad veebipäringud sinna faili.

AddHandler fcgid-script .py
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ cgi-bin/app.py/$1 [QSA,L]
app.py skript peab tagastama FastCGI-le vastuse. Selleks kasutame koodis fcgi moodulit. Näide app.py skriptist:

#!/usr/bin/env python
# -*- coding: UTF-8 -*-

import sys
from flup.server import fcgi
import urlparse

class Request(object):
    def __init__(self, environ):
        self.url = environ['REQUEST_URI']
        parsed = urlparse.urlparse(self.url)

        # REQUEST path
        self.path = parsed.path

        # GET data
        self.params = urlparse.parse_qs(parsed.query)

def app(environ, start_response):
    req = Request(environ)

    start_response('200 OK', [('Content-Type', 'text/html')])
    return('''<html>
     <head>
          <title>Pythoni veebileht</title>
     </head>
     <body>
          <h1>Test</h1>
    %s<br>
          %s
     </body>
</html>''' % (req.path, req.params))

if __name__ == "__main__":
    fcgi.WSGIServer(app).run()
Anname failile käivitamise õigused:
chmod +x ~/htdocs/cgi-bin/app.py
fcgi.py skript leidub antud juhul serveri kataloogis /usr/local/lib/python2.7/site-packages/flup/server . Juhul kui seda pole või on vaja kasutada mingeid enda skripte, siis võib selleks näiteks luua serveris kataloogi python (htdocsist ülespoole) ning sinna alla erinevaid failid paigutada. fcgi.py näitel näiteks sinna alla laadida Allan Saddi fcgi.py faili (koopia sellest leiab näiteks lingilt https://raw.githubusercontent.com/keikubo/Python-FastCGI-Sample/master/lib/fcgi.py). Seejärel täienda app.py koodi, et skript oskaks seal kataloogis olevaid faile kasutada.

import sys
sys.path.insert(0, "/www/apache/domains/www.domeen.ee/python")
#from flup.server import fcgi
import fcgi
kus www.domeen.ee asenda oma lehe teekonnaga.

Pythoni koodi ei pea paigutama cgi-bin kataloogi, selle võib ka jätta näiteks otse htdocs/ kataloogi. Sellisel juhul peaks htdocs/.htaccess olema järgnev:

AddHandler fcgid-script .py
Options +ExecCGI
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ app.py/$1 [QSA,L]
ehk tuleb lisada Options +ExecCGI (cgi-bin kataloogile rakendub see vaikimisi), et pythoni koodi FastCGI kaudu käivituda saaks ning muuta cgi-bin/app.py teekond app.py-ks.

Nüüd ava testimiseks oma veebilehe link http://domeen.ee/kontakt/test?abc=123&def=456
Sealt peaks avanema leht kujul:



Test

/kontakt/test
{'abc': ['123'], 'def': ['456']}



,kus /kontakt/test viitab avatud lingile ja {'abc': ['123'], 'def': ['456']} lingi lõppu lisatud muutujatele ja nende väärtustele.

Kui peaksid nägema 500 Internal Server Errorit, siis kontrolli, et app.py failil oleksid 755 õigused.

Juhul kui soovid kasutada djangot, siis vaata ka siia.

Loe ka, kuidas kasutada pythoni Flask raamistikku siit.


Ei leidnud, mida otsisid? Küsi meilt, me aitame!

Helista numbril 683 5188 või kirjuta abi@veebimajutus.ee

Või saada oma küsimus siin, võtame sinuga ühendust nii pea, kui võimalik.

Vale vastus
Cart