Pythoni näidisrakendus (Flask)

Virtualenv on tööriist, mille abil saab luua isoleeritud pythoni keskkondi. Virtualenv loob kataloogi, milles hakatakse hoidma pythoni projekti jaoks vajalikke paigaldatud moodulite koodi. See võimaldab kliendil serverisse paigaldada selliseid mooduleid, mida serverisse eelinstalleeritud pole või paigaldada nendest erinevaid versioone.

Virtualenvi tuleb kasutada SSH keskkonnas käsurealt. SSH ligipääsu saab lisada iseteenindusest.

Loome kõikide virtualenv'ide jaoks kataloogi:

mkdir ~/.virtualenvs

Loome konkreetse projekti virtualenvi python 3.5'ga, nimetame selle "flask-website":

python3.5 -m venv ~/.virtualenvs/flask-website

Aktiveerime projekti virtualenvi:

source ~/.virtualenvs/flask-website/bin/activate

Nüüd on võimalik paigaldada vajalikke mooduleid, kasutades selleks tööriista pip. Piagaldame Flaski (Flask on pisike pythoni koodiraamistik):

pip install Flask

Paigaldame pythoni FastCGI kaudu jooksutamiseks vajaliku flup mooduli:

pip install flup6

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). Selleks, et pythoni Flaski rakendus FastCGI kaudu tööle panna, tuleb luua ~/htdocs/cgi-bin kataloogi fail dispatch.fcgi:

#!/usr/bin/env python3.5

import os, sys

DOMAIN = "domeen.ee" # Teie domeeni nimi (ilma www.-ta)
PREFIX = "/www/apache/domains/www.%s" % (DOMAIN,)

# Add a custom Python path.
sys.path.insert(0, os.path.join(PREFIX, ".virtualenvs/flask-website/lib/python3.5/site-packages/"))

from flup.server.fcgi import WSGIServer
from flask import Flask

app = Flask(__name__)

@app.route("/")
def hello():
    return "Hello World! <a href=\"test/\">to test</a>"

@app.route("/test/")
def test():
    return "Test!"

class ScriptNameStripper(object):
   def __init__(self, app):
       self.app = app

   def __call__(self, environ, start_response):
       environ['SCRIPT_NAME'] = ''
       return self.app(environ, start_response)

app = ScriptNameStripper(app)

if __name__ == '__main__':
    WSGIServer(app).run()

Failile tuleb anda käivitamise õigus:

chmod +x ~/htdocs/cgi-bin/dispatch.fcgi

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

AddHandler fcgid-script .fcgi
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ cgi-bin/dispatch.fcgi/$1 [QSA,L]

Abistavad tähelepanekud


Koodimuudatuste rakendumine

Kui veebilehte on juba avatud, siis võib django protsess jooksmas olla ja koodi muutmise järel ei kajastu kohe muudatused uuel lehe laadimisel. Seetõttu tuleks peale koodimuudatusi jooksev pythoni protsess peatada, et see saaks uuesti lehe värskendamisel värske koodiga tööle hakata.

pkill -f dispatch.fcgi


Pythoni veateadete logi

Veebiserveri pealogile pole kahjuks klientidele võimalik ligipääsu lubada, mistõttu ei saa vaadata pythoni koodi veateateid, kuid abiks võib olla koodi käsitsi käivitamine käsurealt:

python ~/htdocs/cgi-bin/django.fcgi

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