Python 3 mod_wsgi

Ympäristö

OS: Ubuntu 18.04 LTS

Apache/2.4.29 (Ubuntu)

Python 3.6.6

Lähde: http://terokarvinen.com/2017/write-python-3-web-apps-with-apache2-mod_wsgi-install-ubuntu-16-04-xenial-every-tiny-part-tested-separately. Luettu 28.9.2018

Python 3 mod_wsgi

Asennus

Asennetaan mod_wsgi paketinhallinnasta, otetaan Python3 versioon yhteensopiva paketti.

$ sudo apt-get install libapache2-mod-wsgi-py3

Apachen restart, jotta moduuli tulee käyttöön.

$ sudo service apache2 restart

Testaus

Tarkistus, että toimii

$ apache2ctl -M|grep -i wsgi

Tulostuu ruudulle: wsgi_module (shared)

Apache VirtualHost WSGIlle

Konfigurointi

Luodaan uusi virtuaalisivusto, tekemällä konfiguraatiotiedosto juhawsgi.conf hakemistoon /etc/apache2/sites-available/

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

Tiedoston sisältö, jossa määritellään domain ja minne se ohjataa palvelimella.

<VirtualHost *:80>
ServerName juhawsgi.juhaimmonen.com

WSGIScriptAlias / /home/juhawsgi/public_wsgi/juha.wsgi
<Directory /home/juhawsgi/public_wsgi/>
Require all granted
</Directory>

</VirtualHost>

Tämän jälkeen otetaan käyttöön Apachen konfiguraatio

$ sudo a2ensite juhawsgi.conf

Testaus

$ apache2ctl configtest —-> tulostuu Syntax ok

Apachen restart

$ sudo service apache2 restart

Kokeillaan moduulin ja virtual hostin toimintaa

curl -sH ‘Host: juhawsgi.example.com’ localhost|grep title

<title>403 Forbidden</title>

Ja tarkistetaan lokista todellinen virheilmoitus

mono@ubuntu-mono-02:~$ tail -1 /var/log/apache2/error.log
[Wed Sep 26 17:12:17.556773 2018] [authz_core:error] [pid 11759] [client 127.0.0.1:40784] AH01630: client denied by server configuration: /home/juhawsgi

juhawsgi käyttäjää ei ole luotu.

Luodaan uusi käyttäjä sovelluskehitystä varten

Käyttäjän luonti

$ sudo adduser juhawsgi

Enter new UNIX password:
Retype new UNIX password:
Full Name []: Juha WSGI test User

Lukitaan käyttäjätunnus, koska se on ryhmätunnus, jolla ei kirjauduta sisään.

$ sudo usermod –lock juhawsgi

Määritellään käyttäjän oikeudet siten, että tämän käyttäjän alle voivat muut käyttäjät tehdä Python-ohjelmia.

$ sudo chmod u=rwx,g=x,o=x /home/juhawsgi
$ sudo mkdir /home/juhawsgi/public_wsgi
$ sudo chown juhawsgi.juhawsgi /home/juhawsgi/public_wsgi

Määritellään, että juhawsgi-käyttäjän kotihakemistossa olevaan alihakemistoon pääsee ryhmän jäsenet.

$ sudo chmod u=rwx,g=srwx,o=x /home/juhawsgi/public_wsgi

Käyttäjäryhmän luonti

Luodaan ryhmä, jota käytetään kehitystyössä.

$ newgrp juhawsgi
$ groups|grep juhawsgi
juhawsgi […]

Testataan, että tiedoston juonti juhawsgi-käyttäjän alle onnistuu

$ touch /home/juhawsgi/public_wsgi/foo
$ ls /home/juhawsgi/public_wsgi
foo

Kirjoitetaan Hello World!

$ nano /home/juhawsgi/juha.wsgi

koodi

def application(env, startResponse):
startResponse(“200 OK”, [(“Content-type”, “text/plain”)])
return [b”Hello World from Python 3 WSGI\n”]

Testataan ohjelma

$ curl -sH ‘Host: wsgi.juhaimmonen.com’ juhaimmonen.com
–> Hello World from Python 3 WSGI

Tulostuu “Hello World from Python 3 WSGI”

Luodaan domain wsgi.juhaimmonen.com

Jatkossa pitää päästä ajamaan ohjelmia selaimella, joten luodaan uusi domain tätä varten NameCheapissa.

Kirjaudutaan NameCheap palveluun: namecheap.com

Valitaan Domain list ja sieltä Advanced DNS, jossa voidaan konfiguroida uusi alidomain.

Kuva 1. Domain konfigurointia Name Cheapissa

Luodaan uusi Arecord, ja tallennetaan se.

Type: A record

Host: juhawsgi

IP: tähän oma IP

Testataan uutta alidomain

http://juhawsgi.juhaimmonen.com

 

 

 

 

 

 

 

 

Leave a Reply

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