Flask asennus

Jatketaan aiempaa Python3, Apache2, mod_wsgi harjoitusta, ja asennetaan Flask.

Flask asennus

$ sudo apt-get update
$ sudo apt-get -y install python3 ipython3 python3-flask curl

HelloWorld ohjelma testausta varten

$ nano moi.py

from flask import Flask
app = Flask(__name__)

@app.route(‘/’)
def hello_world():
return ‘Hello World by Flask at juhaimmonen.com!\n\n’

if __name__ == ‘__main__’:
app.run(host=’178.128.199.241′, port=80)

Luodaan WSGI-ohjelma

$ nano moi.wsgi

import sys

if sys.version_info[0]<3:       # require python3

raise Exception(“Python3 required! Current (wrong) version: ‘%s'” % sys.version_info)

sys.path.insert(0, ‘/home/vagrant/flask/’)
from moi import app as application

Muokataan Virtual Host asetuksia

$ sudoedit /etc/apache2/sites-available/juhawsgi.conf

<VirtualHost *:80>

ServerName juhawsgi.juhaimmonen.com

WSGIScriptAlias / /home/juhawsgi/public_wsgi/moi.wsgi

WSGIDaemonProcess moi user=juhawsgi group=juhawsgi threads=5

<Directory /home/juhawsgi/public_wsgi/>
WSGIProcessGroup moi
WSGIApplicationGroup %{GLOBAL}
WSGIScriptReloading On

Require all granted
</Directory>

</VirtualHost>

Testaus

Ajetaan wsgi-ohjelma: http://juhawsgi.juhaimmonen.com

Internal server error

Apachen error.log:ssa virheilmoitus

:49692] mod_wsgi (pid=22534, process=’moi’, application=”): Failed to parse WSGI script file ‘/home/juhawsgi/public_wsgi/moi.wsgi’.
[Mon Oct 01 13:23:55.127252 2018] [wsgi:error] [pid 22534] [remote
:49692] mod_wsgi (pid=22534): Exception occurred processing WSGI script ‘/home/juhawsgi/public_wsgi/moi.wsgi’.
[Mon Oct 01 13:23:55.132929 2018] [wsgi:error] [pid 22534] [remote
:49692] File “/home/juhawsgi/public_wsgi/moi.wsgi”, line 3
[Mon Oct 01 13:23:55.132952 2018] [wsgi:error] [pid 22534] [remote
:49692] if sys.version_info[0]<3:\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc
2\xa0 # require python3

Debugattu virettä python3 konsolissa, ja muutettu sisennyksiä ja kommentin paikkaa moi.wsgi tiedostossa:

import sys

#require python
if sys.version_info[0]<3:

raise Exception(“Python3 required! Current (wrong) version: ‘%s'” % sys$

sys.path.insert(0, ‘/home/juhawsgi/public_wsgi/’)
from moi import app as application

Testattu uudestaan, ja nyt ohjelma toimii. URL: http://juhawsgi.juhaimmonen.com

Testattaessa myös komentoriviltä, ohjelma toimii.

$ curl -sH ‘Host: juhawsgi.juhaimmonen.com’ juhaimmonen.com

Hello World by Flask at juhaimmonen.com!

Koodin muuttamisen testaaminen

Tavoite olisi saada koodiin tehtävät muutokset näkymään ilman Apachen restarttia. Tällöin ei myöskään tarvittaisi sudo-oikeuksia.

Apachen virtual host konfiguraatiossa on rivi, jonka pitäisi mahdollistaa se

WSGIScriptReloading On

Editoidaan moi.py-tiedostoa ja muutetaan tekstiä, jonka ohjelma tulostaa. Eli editoidaan riviä

return ‘Hello World by Flask at juhaimmonen.com!\n\n’

muotoon

return ‘Flask koodia at juhaimmonen.com!\n\n’

Tällä ei kuitenkaan ollut toivottua vaikutusta. Sama vanha teksti näkyy edelleen selaimessa.

Apachen restartin jälkeen tulostuu oikea teksti

Tämän jälkeen muutettu tiedoston moi.wsgi aikaleimaa komennolla touch ja muokattu moi.py:n tulostamaa tekstiä.

moi.py-muutos:

return ‘Flask koodia päivityksen jälkeen juhaimmonen.com!\n\n’

$ touch moi.wsgi (komentoriviltä, muuttaa tiedoston päivityksen aikaleimaa)

Nyt ohjelma toimii kuten pitääkin, ja päivityksiä voi tehdä ilman sudo-oikeuksia. Muutin siis aluksi väärän tiedoston aikaleimaa.

 

 

Leave a Reply

Your email address will not be published. Required fields are marked *