Linux Palvelin tehtävä 3

Harjoitus 3

Tero Karvisen tehtävänanto

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)

Apache kotisivu

a) Ihan ensimmäiseksi lähdin kokeilemaan osoitetta ‘localhost’ nähdäkseen että mitä onko minulla mitään joka vaikuttaisi minun ‘localhost’ sivuun.

localhost not working.png

Kävin sivulla ja ei yhdistänyt mitään, joten voin aloittaa lataamalla apache2 ja pystyttää oma kotisivu.

Apache kotisivun toimimaan samiseksi asensin aluksi Apache2 komennolla –

$ sudo apt-get install apache2

Asennuksen jälkeen päivitin ‘localhost’ sivua nähdäkseen että onnistuiko asennus.

localhost working.png

Asennus näytti onnistuneen ja ‘localhost’ toimii. Kokeilin myös omalla ip-osoitteella (jonka sain selville komennolla ‘ip addr’) ja se toimi sillä kanssa.

Seuraavaksi lähdin tekemään omaa sivua joka toimisi localhostissa.

Userdir käyttöönotto Serverillä

Aluksi minun piti  aktivoida userdir ja sen tein komennolla

$ sudo a2emod userdir

Sitten piti uudellenkäynnistää demoni komennolla

$ sudo service apache2 restart

Kotisivun muokkaaminen

Aloitin ihan aluksi menemällä koti hakemistoon komennolla

$ cd

Loin kansion public html:lle

$ mkdir public_html

Tarkistin kanssa nimeni

$ whoami

Sitten menin omalle sivulleni käyttäen firefox selainta.

$ $firefox “http://localhost/~robert/”

localhost robert.png

Näen että kotisivu toimii mutta ajattelin lisätä jotain pientä sisältöä jotta kotisivu näyttäisi tyyllikkäältä.

Loin html tiedoston ‘public_html’ kansioon

$ nano index.html

index html.png

Tämän tehtyä päivitin sivun ja sain tuloksena:

robert index sivu.png

Totesin että toimii ja menin jatkamaan hommia.

Apache lokien tarkistus

b) Onnistunut lokitapahtuma

Aluksi siirryin kansioon missä on apachen loki tapahtumat.

$ cd /var/log/apache2/

Kyseisessä kansiossa oli sitten 3 eri tiedostoa (access.log’, ‘error.log’ ja ‘other_vhosts_access.log’). Avasin sitten ‘access.log’ komennolla:

$ tail access.log

apache onnistunut epäonnistunut.png

127.0.0.1 – – [03/Feb/2018:18:26:58 +0200] “GET /~robert/ HTTP/1.1” 200 492 “-” “Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:58.0) Gecko/20100101 Firefox/58.0”

Otin yhden rivin tarkastelua varten. Ensimmäisenä on ip-osoite. Sitten tulee lokin aikatapahtuma (Minulla on asetettu Suomen aika). Sitten tuntuu olen GET komento että se luo yhdeyten ‘robert’ sivulle. 200 näyttää että pyyntö onnistui ja sivu lataus onnistui. Suluissa oleva teksti tuntuu olevan versiot. Uskoisin että versio Ubuntusta. Yritin etsiä että mikä olisi ‘Gecko/20100101 Firefox/58.0″‘ mutta mitä löysin ja ehkä tajusin oikein niin se firefoxin käyttäjä agentti veriso.

Epäonnistunut lokitapahtuma

127.0.0.1 – – [03/Feb/2018:18:58:13 +0200] “GET /~rober/ HTTP/1.1” 404 497 “-” “Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:58.0) Gecko/20100101 Firefox/58.0”

Sama tiedot kuin onnistuneessa lokissa mutta kirjoitin osoitteen väärin (‘rober’) ja sieltä tuli 404 virhe.

404 not found.png

Webbipalvelimen virhe (PHP tai Python)

c) Aiheuttaakseen virheen PHP minun aluksi piti asentaa se ja se tapahtui komennolla

$ sudo apt-get install libapache2-mod-php

Mutta koska en ole vielä muokannut php että se toimisi niin koodi ei näy sivulla mutta koodin sorsan kaikki voivat nähdä. Tulos ennen php muokkaamista on tälläinen:

php ja php koodi.png

Kansion pääsin muokkaamaan komennolla:

$ sudoedit /etc/apache2/mods-available/php7.1.conf

Muutoksien jälkeen käynnistin serverin uudellen komennolla:

$ sudo service apache2 restart

Tässä vaiheessa huomasin että mitään ei tapahtunut ja ihmettelin että miksi. Huomasin sitten että minun ‘index’ sivu oli ‘.html’ päätteinen ja sen olisi pitänyt olla ‘.php’ päätteinen että voisin testata mitään php koodia. Muutin sitten nopeasti komennolla:

$ mv index.html index.php

Ja sitten restarttasin serverin varmuuden vuoksi taas uudelleen. Sain vastaavan tuloksen:

php toimii lasku.png

Sitten lähdin tekemään jonkinlaisen virheen. Muutin koodia ja sain virheen.

[Sat Feb 03 23:14:28.250118 2018] [php7:warn] [pid 12114] [client 127.0.0.1:43794] PHP Warning: A non-numeric value encountered in /home/robert/public_html/index.php on line 10

Ekana on päivämäärä ja kellonaika milloin kyseinen tapahtuma tapahtui. Sitten tulee varoitus jossa ilmoittaa että se koskee php:ta. Sitten tulee PID (eli process identification number) on numero prosessorille jota tämä toiminto käyttää. Client eli käyttäjä kuka käyttää. Sitten tulee se virhe missä se ilmoittaa että minkälainen komento ja missä rivillä vielä. Sen korjattaessa koodi toimii normaalisti.

Apache2 virhe

d) Tein hyvin simppelin virheen ‘apache2.conf’ tiedostoon. Tiedostoon pääsin

$ sudo nano /etc/apache2/apache2.conf

Koska tämän kansion muokkaamisen tarvitaan ‘sudo’ oikeudet. Muokkasin tiedostoa ja käynnistin serverin uudelleen komennolla:

$ sudo systemctl restart apache2.service

syslog apache error.png

Serverin uudellen käynnistymsen jälkeen avasin ‘localhost’ ja sain seuraavan näkymän

localhost unable to connect.png

BMI laskuri

f) Lähdin tekemään hyvin simppelin painoindeksi laskurin. Ensimmäiseksi minun piti päästä ‘index.html’ tiedostoon muuttamaan sitä. Laskurin olisin voinut tehdä monella kielellä, mutta päätin tehdä javascriptillä tätä tehtävä, koska tuttu kieli minulle ja saisin helpoiten tehtyä.

$ cd public_html

Ja sitten muuttamaan ‘index.html’ tiedostoa.

$ nano index.html

BMI sorsa.png

Koodi yläpuolella ja lopputulos alapuolella. Koodi kanssa toimi.

BMI.png

My bmi.png

Nähtävästi laskurin mukaan minä olen ylipainoinen… Pitää kai pudottaa pari kiloa!

 

 

 

 

 

Advertisements

One thought on “Linux Palvelin tehtävä 3

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 )

Connecting to %s