Linuxpalvelin kotitehtävät pt.3

Tehtävänannot : http://terokarvinen.com/2017/aikataulu-%E2%80%93-linux-palvelimet-ict4tn021-7-ti-ja-6-to-alkukevat-2018-5-op

h3

Tee viisi vapaavalintaista kohtaa. Säädä vaikeustaso oikeaksi: jos olet ihan alussa ja tämä on haastavaa, tee helpoimmat a b c d i. Jos osaat jo perusteet, tee useampia tai vaikeampia kohtia. Tarkoitus on, että tehtävät tehtyäsi osaat enemmän kuin osasit ennen.

a) Asenna Apache, laita käyttäjien kotisivut (http://example.com/~tero) toimimaan. Testaa esimerkkikotisivulla.

b) Surffaa oman palvelimesi weppisivuja. Etsi Apachen lokista esimerkki onnistuneesta (200 ok) sivulatauksesta ja epäonnistuneesta (esim 404 not found) sivulatauksesta. Analysoi rivit.Tee jokin seuraavista (yksi riittää, useampi vapaaehtoisena lisätehtävänä):

c) Tee virhe weppipalvelimella ajettavaan koodiin (esim PHP tai Python), etsi se lokista ja analysoi tuo lokirivi

d) Tee virhe johonkin Apachen asetustiedostoon, etsi ja analysoi tuo rivi. Etsimiseen sopivat esimerkiksi Apachen omat lokit, syslog sekä ‘apache2ctl configtest’.

e) Asenna ja kokeile PhpMyAdmin:a tai jotain muuta valmista weppiliittymää tietokantojen hallinnointiin.

f) Tee palvelimella ajettava weppiohjelma, joka tekee käyttäjälle jonkin yksinkertaisen laskun (esim. painoindeksi BMI)

g) Tee palvelimella ajettava weppiohjelma, joka käyttää tietokantaa. Voit tehdä jonkin yksinkertaisen CRUD-ohjelman, esimerkiksi TODO-listan

h) Tee Apachelle uusi sivu, joka näkyy suoraan palvelimen pääsivulla, mutta jonka sivuja voi muokata normaalin käyttäjän oikeuksilla (name based virtual host, DocumentRoot käyttäjän kotihakemistoon).

i) Kuinka monta eri HTTP Status:ta (200, 404, 500…) saat aiheutettua lokeihin? Selitä, miten aiheutit tilanteet ja analysoi yksi rivi kustakin statuksesta.

j) Asenna LAMP (Linux, Apache, MySQL, PHP). Testaa kunkin komponentin toiminta. Testaa lopuksi kokonaisuus. (Voit aloittaa tilanteesta, jossa Linux-käyttöjärjestelmä on jo asennettu, mutta ei muita (AMP) osia.

k) Kokeile jotain Flaskin uutta ominaisuutta flask-testipalvelimessa. Voit kokeilla esim. muotteja (templates), tietokantaa tai syötteiden ottamista lomakkeilta (forms).

l) Asenna Python Flask + PostgreSQL + Apache mod WSGI. Testaa kunkin komponentin toiminta. Testaa lopuksi kokonaisuus. (vaikea)

Joista tein kohdat a, b c f i. Kohdat  j sekä e on vielä vähän työn alla, vaikka vain viisi oli pakollista.

Varusteet samat kuin aiemmissakin tehtävissä.


a) Terminaaliin “firefox “http://localhost/~alexi/” jolloin saadaan näkymä : käyttäsivutesti

It be workin’!

 

b) 127.0.0.1 – – [01/Feb/2018:16:14:09 +0200] “GET /~alexi/ HTTP/1.1” 200 477 “-” “Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:54.0) Gecko/20100101 Firefox/54.0”
127.0.0.1 – – [01/Feb/2018:16:14:15 +0200] “GET /~alexi/ HTTP/1.1” 200 477 “-” “Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:54.0) Gecko/20100101 Firefox/54.0”
shift+reload oli se mitä tein saadakseni alemman rivin lokiin.

127.0.0.1 – – [01/Feb/2018:16:21:40 +0200] “GET /alexi/ HTTP/1.1” 404 495 “-” “Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:54.0) Gecko/20100101 Firefox/54.0”
127.0.0.1 – – [01/Feb/2018:16:21:43 +0200] “GET /alexi/ HTTP/1.1” 404 495 “-” “Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:54.0) Gecko/20100101 Firefox/54.0”
Tuo “404” kertoo että ei onnistunut : selaimessa luki tällöin “url not found on this server”

Molemmissa näkyy ipv4-osoite –> päivämäärä ja kellonaika sekä vyöhyke (verrattuna muihin kelloihin, tämä tieto on kohdillaan) ,”get” viittaa siihen mistä sivu ja sen sisältäö haetaan,
numeroista edeltävät viittaavat statukseen (200 ok ja 404 virheellinen)ja jälkimmäinen en ole varma,tiedoston tai sivuston koko ehkä?
Tätä seuraa “Mozilla / 5.0” merkkaa yhteensopivuutta ; sulkeissa olevat meinaavat käyttöjärjestelmää ja sen versioita yms.
Gecko on googlailun mukaan se johon Firefox pohjautuu..?

c) Tällattis

[Sun Feb 04 13:08:03.084372 2018] [:error] [pid 2488] [client 127.0.0.1:40862] PHP Notice: Undefined index: paino in /home/alexi/public_html/index.php on line 13
[Sun Feb 04 13:08:03.084413 2018] [:error] [pid 2488] [client 127.0.0.1:40862] PHP Notice: Undefined index: pituus in /home/alexi/public_html/index.php on line 14
[Sun Feb 04 13:08:03.116973 2018] [:error] [pid 2488] [client 127.0.0.1:40862] PHP Warning: Division by zero in /home/alexi/public_html/index.php on line 16
– Viikonpäivä, päivämäärä, kellonaika sekunnilleen ja vuosi –> ilmoitus virheestä —> pid on prosessinumero? en ole varma –> clientin ip ja portti(?) –> varoitus php:n asiasta *tähän varoituksen syy*

f) Lähtökohta on siis se, että apache on asennettu jo, mutta mikäli ei ole niin se käy seuraavasti :

“$ sudo apt-get install apache2” terminaaliin, jolloin se asentuu,

Tämän jälkeen “$ sudo a2enmod userdir” komento terminaaliin jotta saadaan hakemistomoduuli käyttöön,

ja perään vielä “sudo systemctl restart apache2.service” jotta weppipalvelin käynnistetään uudelleen.

Kuvista (ja tehtävä a!) voidaan havaita että palvelin toimii (selitän tämän sillä, että muuten osoitteessa “localhost/~alexi/” ei näkyisi mitään). Joten seuraavaksi php:n kimppuun. Eli annetaan komento “sudo apt-get install php” jolloin se asentuu. Tämä ei kuitenkaan riitä, vaan php täytyy käydä laittamassa päälle, sillä se on disabloituna vakiona. Komennolla “sudoedit /etc/apache2/mods-available/php7.0.conf” aukeaa näkymä jossa on koodiriviä, ja siellä oleva <IfModule> koko sarja täytyy kommentoida “tyhjäksi” jolloin php lähtee toimimaan. Kommentoinnin jälkeen annetaan taas komento palvelimen uudelleenkäynnistykselle, ja testataan :itsaphp

Horosho! Tuo 4 on php-koodia ja se näkyy, joten php toimii. Esimerkkikoodina käytin “<?php print(2*2) ?>”

Sitten itse laskurin pariin, koodailin tällaisen setin sitä varten :

Vähän jouduin googlailemaan miten nuo kirjoitetaan ja mitä komentoja käyttää, mutta tuo tuntui olevan järkevin. Sitten ctrl+x, y, enter, ja testi alla :

bmilaskuristart

 

Alla testi omilla arvoilla : bmilaskurinarvot

..ja tulos näkyy alla :

bmilaskuritulos

NaN jäi ikävästi häiritsemään, ja muokkasin tuota sen verran että tuloksen saatua se ei vie uudelle sivulle vaan näyttää sen tuossa.

i)

200, 179, 285, 301, 304, 404, 476, 477, 501, 504

eli 1xx-sarjat ovat informatiivisia, 2xx-sarjat indikoivat onnistumista, 3xx-sarjat uudelleenohjausta, 4xx-sarjat clientin puolella olevista erroreista ja 5xx-sarjat serverin puolen erroreista

Nämä sain aikaiseksi mm. :
– ottamalla yhteyden apachella tehtyyn testisivuun
– -||-, mutta ilman nettiyhteyttä
– refreshaamalla sivun
– ajamalla koodia sivulla

https://en.wikipedia.org/wiki/List_of_HTTP_status_codes – oli sorsana, ilman tätä tiesin käytännössä 404,504 ja 200 entuudestaan jossakin määrin.

 

~Alexi

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

w

Connecting to %s