ict4tn021-3014 läksyt h5

https://terokarvinen.com/2020/linux-palvelimet-2021-alkukevat-kurssi-ict4tn021-3014/

Tuotanto-Flask. Tee tuotantotyyppinen asennus Flaskista käyttäen Apachen WSGI-modulia. Kokeile, että pystyt muokkaamaan koodia ilman sudoa ja saat uuden version käyttöön käynnistämättä Apachea uudelleen. (’touch foo.wsgi’).

Tehty https://terokarvinen.com/2020/deploy-python-flask-to-production/ ohjeen mukaisesti osittain muokattuna.

Tein asennuksen droplet002.dennisgustafsson.net palvelimelle jossa on jos asennettuna Apache2.

$ curl -s localhost
Nothing to see heree

Aloitin luomalla uuden käyttäjän ja sille salasanan.

$ sudo adduser riverwsgi
Adding user `riverwsgi' ...
Adding new group `riverwsgi' (1002) ...
Adding new user `riverwsgi' (1002) with group `riverwsgi' ...
Creating home directory `/home/riverwsgi' ...
Copying files from `/etc/skel' ...
New password:
Retype new password:
passwd: password updated successfully
Changing the user information for riverwsgi
Enter the new value, or press ENTER for the default
	Full Name []: River WSGI
	Room Number []:
	Work Phone []:
	Home Phone []:
	Other []:
Is the information correct? [Y/n] y

Ja tämän jälkeen estin käyttäjän kirjautumisen palvelimelle.

sudo usermod --lock riverwsgi

Lisäsin myös itseni käyttäjän ryhmään.

sudo adduser $(whoami) riverwsgi
Adding user `dennis' to group `riverwsgi' ...
Adding user dennis to group riverwsgi
Done.

Lisätään hakemisto verkkosivuille ja lisätään oikeudet valmiiksi

sudo mkdir /home/riverwsgi/public_wsgi

Muokataan hakemiston oikeuksia niin että kaikilla riverwsgi ryhmän jäsenille on kansion muokkaus oikeudet

 sudo chmod g=rwxs /home/riverwsgi/public_wsgi

Luodaan uusi Named based virtual host river.dennisgustafsson.net ensin lisäsin osoitteen DNS tietoihin.

Tämän jälkeen tein palvelimella tarvittavat muutokset.

sudoedit /etc/apache2/sites-available/riverwsgi.conf

Tämän jälkeen vielä aktivoin uuden virtuaalisen sivuston ja poistin oletusasetukset käytöstä

$ sudo a2ensite riverwsgi.conf
Enabling site riverwsgi.
To activate the new configuration, you need to run:
  systemctl reload apache2
$ sudo a2dissite 000-default.conf

Tämä tosin antoi virhe ilmoituksen kun WSGI moduuli puuttuu.

Eli WSGI moduliin asennus seuraavaksi.

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

$ sudo systemctl restart apache2
dennis@droplet002:~$ sudo apache2ctl configtest
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message
Syntax OK

Ja palvelin vastaakin jo osoitteessa http://river.dennisgustafsson.net

Seuraavaksi luodaankin itse wsgi tiedosto

$ sudo nano /home/riverwsgi/public_wsgi/river.wsgi

Sitten pitää vielä luoda itse ”hello” sovellus

$ sudo nano /home/riverwsgi/public_wsgi/hello.py

Lopputulos päättyy virheeseen…

[Sun Mar 14 18:31:18.134225 2021] [wsgi:error] [pid 1950:tid 140443863582464] [remote 84.251.88.81:58062] mod_wsgi (pid=1950): Failed to exec Python script file ’/home/riverwsgi/public_wsgi/river.wsgi’.
[Sun Mar 14 18:31:18.134329 2021] [wsgi:error] [pid 1950:tid 140443863582464] [remote 84.251.88.81:58062] mod_wsgi (pid=1950): Exception occurred processing WSGI script ’/home/riverwsgi/public_wsgi/river.wsgi’.
[Sun Mar 14 18:31:18.134416 2021] [wsgi:error] [pid 1950:tid 140443863582464] [remote 84.251.88.81:58062] Traceback (most recent call last):
[Sun Mar 14 18:31:18.134444 2021] [wsgi:error] [pid 1950:tid 140443863582464] [remote 84.251.88.81:58062] File ”/home/riverwsgi/public_wsgi/river.wsgi”, line 5, in
[Sun Mar 14 18:31:18.134450 2021] [wsgi:error] [pid 1950:tid 140443863582464] [remote 84.251.88.81:58062] from hello import app as application
[Sun Mar 14 18:31:18.134457 2021] [wsgi:error] [pid 1950:tid 140443863582464] [remote 84.251.88.81:58062] File ”/home/riverwsgi/public_wsgi/hello.py”, line 1, in
[Sun Mar 14 18:31:18.134462 2021] [wsgi:error] [pid 1950:tid 140443863582464] [remote 84.251.88.81:58062] from flask import Flask
[Sun Mar 14 18:31:18.134479 2021] [wsgi:error] [pid 1950:tid 140443863582464] [remote 84.251.88.81:58062] ModuleNotFoundError: No module named ’flask’

Vertailu toimivan paikallisen virtuaalikoneen ja ei toimivan pilvessä olevan välissä löytyi pitkään etsimisen ja testailun jälkeen ero. Paikaillisesti oli asennettu python3-flask kun taas pilvessä oli jostain syystä python-plask.

Komento jolla asennetut sovellukset sai selville on,

apt list --installed

Ensin komento

sudo apt-get autoremove python-flask

Jonka ajon jälkeen komento

sudo apt-get -y install python3-flask

ja varmuuden vuoksi vielä

sudo systemctl restart apache2

Tämän jälkeen asennus toimi.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *