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: