5. Python Flask ja tuotantoympäristö

Seuraavana tavoitteena on luoda ensin Python Web App kehitysympäristössä, jonka jälkeen luodaan Flask tuotantoympäristössä käyttäen wsgi-moduulia. Kaikki oppimateriaalit sekä ohjeet tehtävään sivulta terokarvinen.com.

Aloitin asennuksilla käyttäen komentoja

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

Python3-flaskin asennuttua onnistuneesti loin tiedoston komennolla

$ nano hello.py

Tiedostoon täydensin koodin:

from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello():
	return "Flask by Markus Mikael Saikkonen!"

app.run(debug=True)

flask ajetaan komennolla $ python3 hello.py

Testasin luotua nettisivua osoitteessa http://localhost:5000.

Seuraavaksi asennan Python Flaskin tuotantoympäristöön. Ensin asensin ja testasin Apache2-palvelimen toiminnan.

$ sudo apt-get update
$ sudo apt-get -y install apache2

Testaus onnistui kirjoittamalla ‘localhost/’ selainriville.

Tietoturvan kannalta loin uuden käyttäjän markuswsgi, jolle annoin uuden salasanan sekä käyttäjätiedot (koko nimi, loput sivuutetaan). Tämän jälkeen lukitsin käyttäjän ja lisäsin itseni uuteen ryhmään markuswsgi. Komentoina tämä vaihe näytti:

$ sudo adduser markuswsgi
$ sudo usermod --lock markuswsgi
$ sudo adduser $(whoami) markuswsgi

Loin seuraavaksi uuden virtual hostin palvelimelle, johon täydensin edellä luodut tiedot. Komentorivillä tämä vaihe näytti seuraavalta:

$ sudoedit /etc/apache2/sites-available/markuswsgi.conf
<VirtualHost *:80>
        ServerName markus.saikkonen.com

        WSGIDaemonProcess markuswsgi user=markuswsgi group=markuswsgi threads=5
        WSGIScriptAlias / /home/markuswsgi/public_wsgi/markus.wsgi
        <Directory /home/markuswsgi/public_wsgi/>
                WSGIScriptReloading On
                WSGIProcessGroup markuswsgi
                WSGIApplicationGroup %{GLOBAL}
                Require all granted
        </Directory>
</VirtualHost>
$ sudo a2ensite markuswsgi.conf
$ sudo a2dissite 000-default.conf

Asensin WSGI-moduulin, jonka jälkeen uudelleenkäynnistin Apachen ja testasin konfiguraation:

$ sudo apt-get -y install libapache2-mod-wsgi-py3
$ sudo systemctl restart apache2 
$ apache2ctl configtest

Syntax ok

Loin ‘public_wsgi’-kansion ‘markuswsgi’-kansion sisälle. Tämän jälkeen annoin yleiset käyttö- ja muokkausoikeudet:

Loin ‘markus.wsgi’ -tiedoston kyseiseen kansioon komennolla ~$ nano /home/markuswsgi/public_wsgi/markus.wsgi

Loin samaan kansioon ‘hello.py’-tiedoston komennolla ~$ nano /home/markuswsgi/public_wsgi/hello.py

Ajoin ohjelman komennolla $ python3 hello.py

Seuraavaksi tein ‘templates-flask.py’ public_wsgi-kansioon ja ‘base.html’ -tiedoston omaan templates-kansioon public_wsgi-kansion sisälle nano-komennolla.

Ajoin templates-flask.py-ohjelman:

~$ python3 templates-flask.py

Testasin tuloksia osoitteessa http://localhost:5000:

Leave a comment

Design a site like this with WordPress.com
Get started