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 veel ei ole). Oletame, et koodifail, mida soovime käivitada, on app.py.

Selleks, et domeen.ee avamisel käivitataks app.py, tuleb app.py paigutada htdocs/cgi-bin kataloogi.

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

Options +ExecCGI

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 python3.9

# -*- 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

Antud juhul asub fcgi.py skript serveri kataloogis /usr/local/lib/python2.7/site-packages/flup/server. Juhul kui seda ei ole või on vaja kasutada mingeid enda skripte, siis võib selleks luua serverisse näiteks kataloogi python (htdocsist ülespoole) ning erinevad failid sinna paigutada. fcgi.py näitel võib sinna kataloogi laadida näiteks Allan Saddi fcgi.py faili (koopia sellest leiab 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

asenda www.domeen.ee oma lehe teekonnaga.

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

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.

Kui soovid kasutada djangot, siis vaata ka siia.

Loe lähemalt, kuidas kasutada pythoni Flask raamistikku siit.

 

Seotud juhendid

Sinu tagasiside on oluline

cloud cloud cloud
help
Tähtis küsimus jäi vastuseta? Küsi julgelt otse meie klienditoelt
Me aitame sul kindlasti oma küsimusele see tähtis vastus leida. Ja kui me seda teeme siis võtame kiiresti ühendust!
Klienditeenindus
Lisasime diili sinu ostukorvi, said ikka mega hea diili!

Vali paketi periood

1 kuu põhine arveldus

Kuus 12.08

Kokku 12.08

3 kuu põhine arveldus

Kuus 12.08

Kokku 36.24

6 kuu põhine arveldus

Kuus 12.08

Kokku 72.48

1 aasta põhine arveldus

Säästad 20% ehk -24.16

Kuus 10.07

Kokku 120.80

1 aasta
0.00
2 aastat
0.00
3 aastat
0.00
4 aastat
0.00
5 aastat
0.00
6 aastat
0.00
7 aastat
0.00
8 aastat
0.00
9 aastat
0.00
10 aastat
0.00