Tehtävänanto saatiin Tero Karvisen Linux-palvelimet kurssilla 1.2.2018 

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

Tehtävät:

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.

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’.

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

Käytän tehtävässä omaa kannettavaa tietokonettani:

Acer Aspire V3-571G

Intel Core i7

8GiB RAM

Käytän Linuxia livetikun avulla, johon on asennettu Xubuntu versio:

xubuntu-16.04.3-desktop-amd64.iso

Muistitikku 4GB USB muistitikku.

Apachen Asennus

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

Käytän selaimena Firefox 54.0 (64-bit)

Käytin apuna Tero Karvisen ohjeita :http://terokarvinen.com/2008/install-apache-web-server-on-ubuntu-4

Aluksi testaan toimiiko localhost, kirjoittamalla osoitteeksi selaimeen localhost. Sivu näyttää tältä.

localhost ei toimi

Alkutilanne on siis tämä. Aloitetaan kotisivun tekeminen asentamalla Apache2. Kirjoitan terminaaliin ensiksi komennon sudo apt-get update. Sen jälkeen kirjoitan komennon  sudo apt-get install apache2. Asennus alkoi 20.41 ja päättyi 20.41.

Apache asennus

Testataan nyt uudestaan sivua localhost. HUOM! Muista aina poistaa selaushistoria, joka testauksen välissä, jotta selain ei hae välimuistista vanhoja tietoja.

Apache toimii

Voimme hakea sivua myös ip osoitteella, saan ip osoitteen näkyviin terminaalissa komennolla ip addr. 

iposoite

Voimme nyt hakea sivua myös ip osoitteella. Kokeilen hakea sivua ip osoitteella 192.168.11.19

iposoitteellapache

Tämä yllä näkyvä oletus aloitussivu on hyvä korvata jollain muulla tekstillä, esim. moi. Laitetaan komento cd /var/www/html. Katsotaan kansion sisältö komennolla ls. Siellä näemme tiedoston index.html.

apache kansio

Voimme muokata kyseistä tiedostoa komennolla sudoedit index.html.

Nyt vain poistamme tekstin ja laitamme oman tekstimme sinne.

Testataan sivua nyt.  Mennään taas selaimella localhost.

defaultsivupoissa

Tehdään seuraavaksi käyttäjälle kotisivu.

Kokeillaan käyttäjän sivua http://localhost/~xubuntu.

notfoundSivu sanoo 404 Not Found. Tämä johtuu siitä, että emme ole tehneet vielä kotisivua.

Aloitetaan laittamalla userdir päälle. Komento on sudo a2enmod userdir. Tämä vaatii apache 2 uudelleenkäynnistyksen, jotta toiminto tulee voimaan. Laitetaan komento sudo service apache2 restart tai sudo /etc/init.d/apache2 restart.

userdir

Testataan nyt kotisivua uudelleen.

kielletty

Sivu sanoo Forbidden. Tämä johtuu siitä, että emme ole tehneet käyttäjälle xubuntu omaa public_html kansiota.

Tehdään  siis käyttäjälle xubuntu oma public_html kansio, jotta saamme jotain esille käyttäjän kotisivulle.

Aloitetaan selvittämällä kuka olemme komennolla whoami. Selviää että olemme xubuntu. Sitten menemme käyttäjän xubuntu kotikansioon. Siellä luomme kansion public_html komennolla mkdir public_html.

 

Nyt katsotaan miltä sivu näyttää kun haemme sitä http://localhost/~xubuntu/.

public_html testiTämä kertoo, että meillä on public_html kansio, mutta se on tyhjä. Tehdään nyt html tiedosto tuonne public_html kansioon. Valitaan cd public_html. Ja sitten luodaan ensiksi teksitiedosto komennolla nano.

nano

Sitten kirjoitetaan html tiedosto.

htmlptiedosto

Tallennetaan ctrl + x index.html.  Mennään sitten uudestaan katsomaan käyttäjän xubuntu kotisivua.

testitoimii

Toimii!

Tarkistetaan vielä html että siinä ei ole virheitä, ctrl + u. Ja kopioidaan lähdekoodi ja testataan se sivulla https://validator.w3.org/ ja siellä kohta Validate by Direct Input ja Check.

eierroreita

Apache lokit

b) Surffaa oman palvelimesi weppisivuja. Etsi Apachen lokista esimerkki onnistuneesta (200 ok) sivulatauksesta ja epäonnistuneesta (esim 404 not found) sivulatauksesta. Analysoi rivit.

Pääsen seuraamaan Apache2 lokeja kirjoittamalla komennon sudo tail -f /var/log/apache2/access.log

apachelog

Sain onnistuneen lokimerkinnän (200 ok) kun kirjoitin osoitteen http://localhost/~xubuntu.

127.0.0.1 – – [06/Feb/2018:11:38:04 +0000] “GET /~xubuntu/ HTTP/1.1” 200 281 “-” “Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:54.0) Gecko/20100101 Firefox/54.0”

127.0.0.1 = viittaa link/loopback ip osoitteeseeni

– – = ei tietoa

[06/Feb/2018:11:38:04 +0000] = Päivä/kuukausi/vuosi, kellonaika ja aikavyöhyke milloin tapahtuma on tapahtunut. Kello ei täsmännyt omaani, koska kello oli 13.38.04 (UTC + 2, Suomen talviaika), joten linux koneessani on eri aikavyöhyke käytössä (UTC + 0).

“GET /~xubuntu/ HTTP/1.1” = Tässä luultavasti viitataan haettavaan käyttäjän kansioon, joka on xubuntu, ja http protokollaan, mutta en osaa sen tarkemmin kertoa tästä kohdasta.

200 281 = on http status koodi, 200 = http ok, 281 en saanut selvitettyä tarkoitusta

“-” “Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:54.0) Gecko/20100101 Firefox/54.0” =  Tästä osaan mainita ainoastaan, että tuo Firefox/54.0 viittaa selaimeen ja selainversioon. Tarkistin asian Firefoxin help –> about osiosta.

Epäonnistuneen lokimerkinnän sain (404 not found) kun kirjoitin osoitteen http://localhost/~xubu
127.0.0.1 – – [06/Feb/2018:11:38:29 +0000] “GET /~xubun HTTP/1.1” 404 496 “-” “Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:54.0) Gecko/20100101 Firefox/54.0”

127.0.0.1 = viittaa link/loopback ip osoitteeseeni

– – = ei tietoa

[06/Feb/2018:11:38:04 +0000] = Päivä/kuukausi/vuosi, kellonaika ja aikavyöhyke milloin tapahtuma on tapahtunut. Kello ei täsmännyt omaani, koska kello oli 13.38.04 (UTC + 2, Suomen talviaika), joten linux koneessani on eri aikavyöhyke käytössä (UTC + 0).

“GET /~xubuntu/ HTTP/1.1” = Tässä luultavasti viitataan haettavaan käyttäjän kansioon, joka on xubuntu, ja http protokollaan, mutta en osaa sen tarkemmin kertoa tästä kohdasta.

404 496 = on http status koodi, 404 =  HTTP_NOT_FOUND, eli kyseistä sivua ei löydy käyttäjälle xubun, 496 = ei tietoa.

“-” “Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:54.0) Gecko/20100101 Firefox/54.0” =  Tästä osaan mainita ainoastaan, että tuo Firefox/54.0 viittaa selaimeen ja selainversioon. Tarkistin asian Firefoxin help osiosta.

PHP asennus

Käytin apuna Tero Karvisen ohjeita: http://terokarvinen.com/2016/read-mysql-database-with-php-php-pdo

Asennetaan ensiksi PHP komennolla sudo apt-get install php libapache2-mod-php. Asennus alkoi 14.23 ja loppui samalla minuutilla.

phpasennus

Kirjoitin index.html tiedostooni php koodia, yksinkertaisen laskun ja tallensin tiedoston nimellä index.php. Menin testaamaan kotisivuani, mutta lasku ei ole tullut näkyviin. Tämä johtuu siitä, että php ei ole laitettu vielä päälle, vaikka se onkin asennettu.

phpsivu

Voimme käydä laittamassa php päälle seuraavasti. Menen kansioon komennolla  cd /etc/apache2 ja annan siellä komennon grep -ir php. Tämän komennon avulla voin etsiä kaikkia isolla ja pienellä kirjoitettuja php merkintöjä. Saamme näkyviin seuraavan.

phpetsiminen

Menen muokkaamaan tiedostoa mods-available/php7.0. conf  komennolla sudoedit mods-available/php7.0.conf ja siellä ohjeistetaan lisämään risuaita (#) viimeisten rivien eteen vasemmalle. Kirjaan myös kuka muutokset on tehnyt ja milloin. Tallennetaan muutokset ctrl + x.

phpconf

Apache2 tarvitsee näiden muutosten jälkeen uudelleen käynnistyksen: sudo service apache2 restart.

Nyt voimme käydä tarkistamassa toimiiko php http://localhost/~xubuntu/index.php. Ja näyttää toimivan.

toimivaphp

PHP loki

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

Php error lokia voi seurata komennolla sudo tail -f /var/log/apache2/error.log. Tein virheen php koodiin kirjoittamalla väärin komennon. Kun koitin ladata sivua uudelleen sain error lokiin tämän merkinnän ja käyttäjälle sivu näyttää tyhjää.

[Tue Feb 06 12:48:49.275115 2018] [:error] [pid 15062] [client 127.0.0.1:50186] PHP Parse error:  syntax error, unexpected ‘)’ in /home/xubuntu/public_html/index.php on line 16

[Tue Feb 06 12:48:49.275115 2018] = Tiistai Helmikuu päivä/kellonaika/vuosi, ei taaskaan täsmää oman kelloni kanssa koska koneen aika on UTC + 0

[:error] = ilmoittaa, että virhe on tapahtunut?

[pid 15062] = ei tietoa mitä tämä tarkoittaa

[client 127.0.0.1:50186] = viittaa kyseessä olevaan asiakkaaseen, tuossa myös loopback IP osoitteeni, :50186 en ole varma viitataanko tässä verkkomaskiin vai porttiin.

PHP Parse error:  syntax error, unexpected ‘)’ = kertoo mikä virhe on tapahtunut, tässä tapauksessa odottamaton ) merkintä

in /home/xubuntu/public_html/index.php on line 16 = missä kansiossa, tiedostossa ja millä rivillä virhe on

Apache virheloki

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

Menin aluksi apache2conf. tiedostoon.  Menen ensiksi root kansioon. Valitsen siellä etc kansion. Etc kansiossa valitaan apache2 ja apache2 kansiossa apache2.conf. Muutin tätä tiedostoa niin, että poistin yhden risuaidan(#) yhdeltä riviltä.

Tallensin tiedoston ja koitin uudelleen käynnistää apachen. Sain tämän virheilmoituksen.

errorkuvaapache

Kirjoitin ohjeiden mukaisen komennon ja sain näkyviin tämän virheilmoituksen.

Feb 06 13:31:23 xubuntu apache2[15281]: * The apache2 configtest failed.

 

Feb 06 13:31:23 = Helmikuu/päivämäärä/kellonaika

xubuntu apache2 = epäilen, että tässä tarkoitetaan konetta ja ohjelmaa jossa ongelma havaittiin.

[15281]: = ei tietoa tästä

* The apache2 configtest failed. = kerrotaan, mitä on tapahtunut eli apache2 kongifurointitesti on epäonnistunut.

Eri HTTP statuksia

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

Hain ensiksi http lokien seurannan komennolla.

httpstatus

200

Tämän sain aiheutettua, kun menin osoitteeseen http://localhost/~xubuntu. Ja käyttäjän xubuntu home kansiossa on public_html kansiossa missä on tiedosto index.html joka toimii oikein. Käyttäjälle sivu näyttää tältä.

testitoimii

127.0.0.1 – – [06/Feb/2018:16:20:59 +0000] “GET /~xubuntu/ HTTP/1.1” 200 653 “-” “Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:54.0) Gecko/20100101 Firefox/54.0”

127.0.0.1 = viittaa link/loopback ip osoitteeseeni

– – = ei tietoa

[06/Feb/2018:16:20:59 +0000] = Päivä/kuukausi/vuosi, kellonaika ja aikavyöhyke milloin tapahtuma on tapahtunut. Kello ei täsmännyt omaani, koska kello oli 13.20.59 (UTC + 2, Suomen talviaika), joten linux koneessani on eri aikavyöhyke käytössä (UTC + 0).

“GET /~xubuntu/ HTTP/1.1” = Tässä luultavasti viitataan haettavaan käyttäjän kansioon, joka on xubuntu, ja http protokollaan, mutta en osaa sen tarkemmin kertoa tästä kohdasta.

200 653 = http status, 200 = HTTP_OK eli sivu toimitettu oikein käyttäjälle, 653 = ei tietoa.

“-” “Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:54.0) Gecko/20100101 Firefox/54.0” =  Tästä osaan mainita ainoastaan, että tuo Firefox/54.0 viittaa selaimeen ja selainversioon. Tarkistin asian Firefoxin help –> about osiosta.

403

Tämän sain aiheutettua kun tein käyttäjän kotisivua. Ennen kuin käyttäjällä on public_html kansio tulee tämä ilmoitus kun menee http://localhost/~xubuntu. Käyttäjälle sivu näyttää tältä.

kielletty

127.0.0.1 – – [06/Feb/2018:16:17:58 +0000] “GET /~xubuntu HTTP/1.1” 403 509 “-” “Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:54.0) Gecko/20100101 Firefox/54.0”

127.0.0.1 = viittaa link/loopback ip osoitteeseeni

– – = ei tietoa.

[06/Feb/2018:16:17:58 +0000] = Päivä/kuukausi/vuosi, kellonaika ja aikavyöhyke milloin tapahtuma on tapahtunut. Kello ei täsmännyt omaani, koska kello oli 13.17.58 (UTC + 2, Suomen talviaika), joten linux koneessani on eri aikavyöhyke käytössä (UTC + 0).

“GET /~xubuntu HTTP/1.1” = Tässä luultavasti viitataan haettavaan käyttäjän kansioon, joka on xubuntu, ja http protokollaan, mutta en osaa sen tarkemmin kertoa tästä kohdasta.

403 509 = http status, 403 = HTTP_FORBIDDEN eli komento on ymmärretty mutta serveri ei suostu tekemään sitä, koska ei ole oikeuksia. 509 = ei tietoa.

“-” “Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:54.0) Gecko/20100101 Firefox/54.0” =  Tästä osaan mainita ainoastaan, että tuo Firefox/54.0 viittaa selaimeen ja selainversioon. Tarkistin asian Firefoxin help –> about osiosta.

404

Tämän sain aiheutettua, kun kirjoitin väärin http://localhost/~xubun. Sivua ei löydy, koska tämän nimistä käyttäjää/kansiota ei ole olemassa. Käyttäjälle sivu näyttää tältä.

404

127.0.0.1 – – [06/Feb/2018:16:31:50 +0000] “GET /~xubuntu/index.php HTTP/1.1” 404 508 “-” “Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:54.0) Gecko/20100101 Firefox/54.0”

127.0.0.1 = viittaa link/loopback ip osoitteeseeni

– – = ei tietoa.

[06/Feb/2018:16:31:50 +0000] = Päivä/kuukausi/vuosi, kellonaika ja aikavyöhyke milloin tapahtuma on tapahtunut. Kello ei täsmännyt omaani, koska kello oli 13.31.50 (UTC + 2, Suomen talviaika), joten linux koneessani on eri aikavyöhyke käytössä (UTC + 0).

“GET /~xubuntu/index.php HTTP/1.1” = Tässä luultavasti viitataan haettavaan käyttäjän kansioon, joka on xubuntu, ja http protokollaan, mutta en osaa sen tarkemmin kertoa tästä kohdasta.

404 508 = http status 404 = HTTP_NOT_FOUND, 508 = ei tietoa

“-” “Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:54.0) Gecko/20100101 Firefox/54.0” =Tästä osaan mainita ainoastaan, että tuo Firefox/54.0 viittaa selaimeen ja selainversioon. Tarkistin asian Firefoxin help –> about osiosta.

500

Tämän sain aiheutettua, kun muutin index.php tiedostoa siten, että php koodissa oli kirjoitusvirhe. Käyttäjälle sivu näyttää tältä.

500

127.0.0.1 – – [06/Feb/2018:16:33:46 +0000] “GET /~xubuntu/index.php HTTP/1.1” 500 185 “-” “Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:54.0) Gecko/20100101 Firefox/54.0”

127.0.0.1 = viittaa link/loopback ip osoitteeseeni

– – = ei tietoa.

[06/Feb/2018:16:33:46 +0000] = Päivä/kuukausi/vuosi, kellonaika ja aikavyöhyke milloin tapahtuma on tapahtunut. Kello ei täsmännyt omaani, koska kello oli 13.33.46 (UTC + 2, Suomen talviaika), joten linux koneessani on eri aikavyöhyke käytössä (UTC + 0).

“GET /~xubuntu/index.php HTTP/1.1” = Tässä luultavasti viitataan haettavaan käyttäjän kansioon, joka on xubuntu, ja http protokollaan, mutta en osaa sen tarkemmin kertoa tästä kohdasta.

500 185 = http status, 500 = HTTP_INTERNAL_SERVER_ERROR eli odottamaton virhe, ja selain ei pysty näyttämään sivua. 185 = ei tietoa tästä.

“-” “Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:54.0) Gecko/20100101 Firefox/54.0” =  Tästä osaan mainita ainoastaan, että tuo Firefox/54.0 viittaa selaimeen ja selainversioon. Tarkistin asian Firefoxin help –> about osiosta.

301

En osaa sanoa, miten aiheutin tämän lokin, löysin sen tehdessäni muita läksyjä.

127.0.0.1 – – [06/Feb/2018:16:20:59 +0000] “GET /~xubuntu HTTP/1.1” 301 572 “-” “Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:54.0) Gecko/20100101 Firefox/54.0”

127.0.0.1 = viittaa link/loopback ip osoitteeseeni

– – = ei tietoa

[06/Feb/2018:16:20:59 +0000] = Päivä/kuukausi/vuosi, kellonaika ja aikavyöhyke milloin tapahtuma on tapahtunut. Kello ei täsmännyt omaani, koska kello oli 13.20.59 (UTC + 2, Suomen talviaika), joten linux koneessani on eri aikavyöhyke käytössä (UTC + 0).

“GET /~xubuntu HTTP/1.1” = Tässä luultavasti viitataan haettavaan käyttäjän kansioon, joka on xubuntu, ja http protokollaan, mutta en osaa sen tarkemmin kertoa tästä kohdasta.

301 572 = 301 = HTTP_MOVED_PERMANENTLY, 572 = ei tietoa

“-” “Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:54.0) Gecko/20100101 Firefox/54.0” =  Tästä osaan mainita ainoastaan, että tuo Firefox/54.0 viittaa selaimeen ja selainversioon. Tarkistin asian Firefoxin help –> about osiosta.

 

LÄHTEET:

https://httpstatuses.com/

https://ci.apache.org/projects/httpd/trunk/doxygen/group__HTTP__Status.html#ga02e6d59009dee759528ec81fc9a8eeff

Karvinen, Tero: Oppitunnit 2018-2-1, Linux palvelimet-kurssi

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

http://terokarvinen.com/2008/install-apache-web-server-on-ubuntu-4

http://terokarvinen.com/2016/read-mysql-database-with-php-php-pdo

 

 

Advertisements