a) Ratkaise valitsemasi vanha arvioitava laboratorioharjoitus tältä kurssilta. (Löytyy DuckDuckGolla tai Googlella sekä linkeistä tältä sivulta). b) Tarkista, että olet viitannut jokaisessa tehtävässä kaikkiin lähteisiin. Esimerkiksi kurssiin, tehtävänantoihin, käyttämiisi toisten kotitehtävärapotteihin, manuaalisivuihin, kotisivuihin…
c) Kaikki tehtävät arvioitavaksi. Palauta linkki sivuun, josta löytyvät kaikki kotitehtäväraporttisi. Arviointi tehdään ensisijaisesti tästä linkistä. Linkki voi olla esimerkiksi blogin etusivu (jos blogissa on vain kotitehtävät) tai sivuun, jossa on linkki kuhunkin tehtävään. Kaikki tehtävät -linkin palautus Moodlessa kohtaan ”Kaikki tehtävät arvioitavaksi”.
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’).
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.
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
[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,
Olimme tunnilla jo tehneet tunnukset DigitalOcean sivustolle joten kirjauduin sisään ja tein uuden virtuaalikoneen joka DigitalOceanille kulkee nimellä Droplet.
Valitsisin sijainniksi Amsterdam jotta palvelin olisi Euroopassa.
Palvelulta meni hetki ja palvelin oli luotu ja käynnissä
Koska minulla oli jo olemassa olevan domain nimi kirjauduin joker.com palvelun ja loin uuden tietueen uudelle palvelimelle.
Kirjauduin ssh:lla palvelimelle
Ensi töikseni asensin ufw palomuurin
sudo apt-get install ufw
ja seuraavaksi lisäsin säännön joka salli ssh yhteydet ja saman tien käynnistin palomuurin
sudo ufw allow 22/tcp
sudo ufw enable
Loin itselleni tunnuksen komennolla sudo adduser dennis ja lisäsin itselleni sudo oikeudet sudo adduser dennis sudo sekä adm ryhmän komennolla sudo adduser dennis adm. Tämän jälkeen varmistin että pääsen kirjautumaan sisään uudella tunnuksella ennenkuin estän root tunnukselta ssh kirjautumisen.
Ja kirjautuminen onnistui joten annoin seuraavan komennon
sudo nano /etc/ssh/sshd_config
Ja etsin sieltä rivin PermitRootLogin jonka vaihdoin yes –> no
Tämän jälkeen käynnistin ssh palvelun uudelleen sudo service ssh restart jonka jälkeen yritin kirjautua root tunnuksella ssh yhteyden yli ja se ei enää onnistu
Viimeistelin palvelin asennuksen vielä päivityksillä
sudo apt-get update
sudo apt-get upgrade
Apache asennus
Apache asennus
sudo apt-get install apache2
Palomuurista portin 80 avaus
sudo ufw allow 80/tcp
vaihdoin oletus etusivun komennolla
echo “Nothing to see heree” | sudo tee /var/www/html/index.html
a) Asenna Apache, laita käyttäjien kotisivut (http://example.com/~tero) toimimaan. Testaa esimerkkikotisivulla.
sudo apt-get -y install apache2
Käyttäjien kotihakemistot aktivoidaan seuraavalla komennolla
sudo a2enmod userdir
Tämän jälkeen apache palvelu on käynnistettävä uudelleen jotta asetukset astuvat voimaan. Komento on seuraavanlainen
sudo systemctl restart apache2
Käyttäjän koti hakemistossa, joka sijaitse /home/käyttäjätunnus/ tulee löytyä hakemisto nimeltä public_html. Hakemisto luodaan tarvittaessa alla olevalla komennolla. On hyvä varmistaa pwd komennolla että sijaitaan omassa koti hakemistossa ennen uuden kansion luomista.
mkdir public_html
Itse kotisivun voi nopeasti luoda siirtymällä ensin vasta luotuun public_html kansioon ja sen jälkeen editorilla luoda index.html niminen tiedosto.
nano index.html
Tämän jälkeen voi varmistaa että kotisivu näkyy menemällä selaimella osoiteeseen omapalvelin/~käyttäjätunnus
f) Tee palvelimella ajettava weppiohjelma, joka tekee käyttäjälle jonkin yksinkertaisen laskun (esim. painoindeksi BMI)
Käytin sovelluksena swdt1ta001 kurssilla tehtyä painoindeksi sovellusta jonka teimme javascriptillä.
EI TOIMI!!! Miksi?
i) Kuinka monta eri HTTP Status:ta (200, 404, 500…) saat aiheutettua lokeihin? Selitä, miten aiheutit tilanteet ja analysoi yksi rivi kustakin statuksesta.
m) Vaihda Apachen oletussivu. Eli laita palvelimen etusivulla (ilman tildeä) näkyvä sivu niin, että alkuperäinen on jonkun käyttäjän kotihakemistossa ja voit muokata sitä ilman pääkäyttäjän oikeuksia.
Apache2 oletus asetukset sijaitsevat /etc/apache2/sites-available/000-default.conf tiedostossa josta selviää että oletus kotisivu sijaitsee hakemistossa /var/www/html/
Hakemistot on suojattu joten kaikki komennot on tehtävä sudo komennon kautta.
sudo mv index.html index2.html
ja loin nopeasti uuden sivun kommennolla
sudo nano index.html
n) Laita kaksi nimeä samaan IP-osoitteeseen. Voit simuloida nimipalvelun toimintaa /etc/hosts -tiedoston avulla. Eli niin, että samalla palvelimella osoitteella teronlenkkisivu.com tulee eri sisältö kuin osoitteella opipentest.com.
Ensin loin uudet erilliset hakemistoto sivuille komennoilla
last kommenolla näkyy viimeiset onnistuneet kirjautumiset järjestelmään
last
lastb komennolla näkyy epäonnistuneet korjautumiset ja alla kuvaruutu kaappaus virtuaalikoneen epäonnistuneista kirjautumisesta. -F lisäys näyttää täydellisen päiväyksen.
a) Tein Debian Live USB tikun jo tunnilla joten tämä kohdan kirjoitukset ovat muistinvaraisia. Vaikka käytän pääsääntöisesti Mac konetta tein Debian-Livetikun työ kannattavallani koska siinä löytyi valmiiksi rufus sovellus.
b) Testasin Debian-Livetikun samaisella HP EliteBook 840 työ kannattavallani ja se käynnistyi hyvin ja jopa tunnisti koneessa olevan sisäänrakennetun 4G modeemin.
Mutta koska tämän enempi en ehtinyt tunnin aikana tehdä jatkoin myöhemmin asentamalla samaisen Debian version Mac koneeni VMware Fusion ympäristöön käynnistämällä sen ensin Live tilassa .iso näköistiedostolta suoraan.
Käynnistettyäni Debianin virtuaalikoneella asensin ensin lshw sovelluksen. Tämän tein seuraavilla komennoilla
sudo apt update
sudo apt-get install lshw
itse sovelluksen suortin tämän jälkeen komennolla
sudo lshw -short -sanitize
c) Ensimmäisenä sovelluksena asensin kuvankäsittely sovelluksen Inkscape
sudo apt-get -y install inkscape
Toisena sovelluksena asensin curl sovelluksen
sudo apt-get install curl
Tämän jälkeen käytin curl sovellusta seuraavan sovelluksen asennuksessa joka oli Microsftin Edge