Linux Palvelimet viikko 3

Harjoitus H3

11-09-2018

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)


Tehtävissä käytän pöytäkonettani, josta lisätietoja löytyy Viikko 1 tehtävistä.

Käyttöjärjestelmänä Xubuntu 18.04.01 LTS, joka pyörii livetikulta joka löytyy myös ensimmäisen viikon tehtävistä.


 

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

Aloitin tehtävän asentamalla Apachen koneelleni.

  • Sudo apt-get -y install apache2

Apache2 Ubuntu Default Page: It works - Mozilla Firefox_001

Apachen asennus on onnistunut. Testattu että apachen esimerkkisivu latautuu selaimella kirjoittamalla osoitekenttään ” localhost ” , sekä localhostin osoitteella ” 127.0.0.1 “.

Seuraavaksi konsoliin seuraavat komennot jotta apachen oletussivu voidaan luoda käyttäjän public_html kansioon johon palaamme kohta. Myös käynnistin apachen uudestaan jotta muutokset tulevat voimaan.

  • ” sudo a2enmod userdir “
  •  ” sudo service apache2 restart “

Seuraavaksi poistin käytöstä apachen testisivun, ja korvasin sen omalla tekstilläni. Teksti näkyi localhost osoitteella, sekä “localhost” nimellä.

Oletussivun index.html jota muokataan löytyi /var/www/html/ ja index.html tiedoston muokkaus vaati sudoedit komentoa jotta sain muutettua oletussivua.

Mozilla Firefox_002

Seuraavaksi loin käyttäjän kotihakemistoon public_html kansion joka tulee toimimaan käyttäjän kotisivujen hakemistona. Siirryin cd komennolla kotihakemistoon ja loin seuraavilla komennoilla seuraavia asioita :

  • ” mkdir public_html ” – Loin itse “kotisivu” kansion kotihakemistoon.
  • ” cd public_html ” – Siirryin luotuun kansioon
  • ” nano index.html ” – Kotisivun index sivun luonti. Kirjoitin tekstitiedostoon ” Hello World “.

Alla kuva osoitteesta localhost/~xubuntu, myös localhostin 127.0.0.1/~xubuntu toimi ja näytti saman sivun.

Mozilla Firefox_003

Sivu toimi myös kotini wifi verkossa puhelimellani (Honor 9, selaimena chrome) ip osoitteella 192.168.1.141, tämä näytti samat sivut kuin yllä olevat kuvat.


 

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ä):

Onnistunut haku:

Lokitietojen ymmärtämiseen käytin apachen sivujen tietopankkia lokitiedoista http://httpd.apache.org/docs/2.4/logs.html .

Apachen lokitiedot löytyvät /var/log/apache2 kansiosta josta löytyy access.log niminen lokitiedosto. Alla kuvakaappaus  komennolla “ tail access.log ” :

Terminal - xubuntu@xubuntu: -var-log-apache2_004.png

127.0.0.1 – – [11/Sep/2018:14:09:48 +0000] “GET /~xubuntu/ HTTP/1.1” 200 293 “-” “Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:61.0) Gecko/20100101 Firefox/61.0”

127.0.0.1 – – : Viittaa yhteyttä ottavaan koneeseen, tässä tapauksessa pöytäkoneeni joka toimii myös sivujen localhostina on merkattuna yhteyden ottajaksi. Eli yhteyttä otettu localhostista sivuille. Mikäli yhteyden ottaja käyttäisi jotain proxya yhteyden ottamiseen näkyisi tässä proxyn osoite, eikä itse koneen jolla käyttäjä on.

[11/Sep/2018:14:09:48 +0000] : Päivämäärä, aika ja aikavyöhyke.

“GET /~xubuntu/ HTTP/1.1” : GET on komento jolla asiakas pyytää, /~xubuntu on sijainti mistä pyytää ja HTTP/1.1 on protokolla jota käyttää pyynnön lähettämiseen.

” 200 293 ” : Statusviesti 200 viittaa onnistuneeseen hakuun, eli sivu on auennut asiakkaalle. 293 loppuosa 293 kertoo asiakkaalle lähetetyn objektin kokoa. Jos asiakaalle ei lähetetty mitään on tuo merkittynä “0” tai ” – “.

“Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:61.0) Gecko/20100101 Firefox/61.0” : Yhteyttä ottavan asiakkaan selaimen ja käyttöjärjestelmät tietoja. Selain luovuttaa nämä identifioidakseen itsensä yhteyttä ottaessa.

Epäonnistunut haku :

Yritin siirtyä selaimella osoitteeseen http://localhost/~xubuntu/asd josta seurasi vastaavanlainen sivu : 404 Not Found - Mozilla Firefox_005.png

Tämä sivu johtuu siitä että public_html kansiosto ei löydy asd nimistä tiedostoa mitä hakea. Lokimerkintä access.log:issa näyttää vastaavalta :

127.0.0.1 – – [11/Sep/2018:14:44:32 +0000] “GET /~xubuntu/asd HTTP/1.1” 404 502 “-” “Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:61.0) Gecko/20100101 Firefox/61.0”

Kaikki näyttää samalta kuin aikaisemmin paitsi statusviesti on ” 404 502 “. 404 kertoo meille että kyseistä tiedostoa ei ole olemassa eikä haku sen vuoksi onnistu.


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

Tällä komennolla sain ladattua php modin apacheen : sudo apt-get install libapache2-mod-php

/etc/apache2/mods-available kansiosta löytyy php7.2.conf tiedosto josta täytyy muuttaa asetuksia siten että käyttäjällä on mahdollisuus ajaa PHP:tä omalla sivullaan. Tiedoston muokkaaminen vaati sudoedit oikeudet.

Jotta uudet asetukset tulevat voimaan täytyy apache käynnistää uudelleen :

  • Service apache2 restart

Lisäsin public_html kansioon valmiin koodin jonka löysin githubista LINKKI.

Koodi vaatii toimiakseen calculator.php tiedoston public_html kansioon, tämän jätetin kuitenkin tarkoituksellisesti luomatta jotta sain lokiin merkinnän virheestä.

[Tue Sep 11 15:29:27.908021 2018] [php7:error] [pid 15767] [client 127.0.0.1:56748] script ‘/home/xubuntu/public_html/calculator.php’ not found or unable to stat, referer: http://localhost/~xubuntu/

[Tue Sep 11 15:29:27.908021 2018] – Kyseisen lokitapahtumat päivämäärä ja tarkka kellonaika

[php7:error] – Php7 ilmoittaa moduulin josta virheilmoitus on tullut, sekä virheilmoituksen vakavuusaste. Tässä tapauksessa vain virhe.

[pid 15767] – Pid on lyhenne Process ID ja numerot prosessin id numero.

[client 127.0.0.1:56748] – Asiakkaan ip osoite

script ‘/home/xubuntu/public_html/calculator.php’ not found or unable to stat, referer: http://localhost/~xubuntu/ – Lopuksi itse virheilmoitus. Tässä tapauksessa ilmoitus että kyseistä tiedostoa ei löydy. Referer: kenttä ilmoittaa miltä sivulta yritettiin päästä kyseiselle sivulle jota ei ollut olemassa.


 

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

Päätin tehdä muutoksia itse ports.conf tiedostoon joka löytyy /etc/apache2/

Muutokset vaativat sudo oikeudet joten oikea komento tiedoston muokkaukseen on sudoedit ports.conf.

Terminal - xubuntu@xubuntu: -etc-apache2_006.png

Kuvan oton jälkeen muutin kaikki komennot merkinnöiksi “#” risuaidalla ja käynnistin apachen uudelleen.

Uudelleenkäynnistys komennon annettuani sain terminaaliin suoraan virheilmoitusta.

Terminal - xubuntu@xubuntu: -etc-apache2_007

Job for apache2.service failed because the control process exited with error code.
See “systemctl status apache2.service” and “journalctl -xe” for details.

Katsoin virheilmoituksen antaman systemctl status apache2.service ja se näytti vastaavalta:

Terminal - xubuntu@xubuntu: -var-log-apache2_008

Tutkimisen jälkeen virhe johtuu suoraan siitä että apache ei löydä ports.conf tiedostosta mitään asetuksia, sillä kaikki asetukset ovat muutettu kommenteiksi eikä niitä oteta huomioon.

Löysin myös apachen error.log tiedostossa seuraavanlaisen tapahtuman:

[Tue Sep 11 15:58:43.982618 2018] [mpm_prefork:notice] [pid 15766] AH00169: caught SIGTERM, shutting down

Error.log:issa ei ole ilmoitusta virheestä, ainoastaan että apache on sammumassa. Päättelin tämän virheilmoituksen kellonajasta, sillä systemctl status apache2.service virheilmoitukset ovat 30 sekunttia myöhemmin. Tästä voin päätellä että virhe on tapahtunut vasta apachen uudelleen käynnistymisen yhteydessä.

Poistettuani risuaidat ports.conf tiedostosta käynnistin apachen uudestaan, tällöin lokitiedot näyttivät jälleen normaaleilta eikä uusia virheilmoituksia tullut.


 

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

Status 1:

127.0.0.1 – – [11/Sep/2018:19:07:36 +0000] “GET /~xubuntu/ HTTP/1.1” 200 325 “-” “Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:61.0) Gecko/20100101 Firefox/61.0”

127.0.0.1 – – : Kuten aikaisemmin mainittu tämä on yhteyttä ottavan IP osoite.

[11/Sep/2018:19:07:36 +0000] : Päivämäärä, aika ja aikavyöhyke.

“GET /~xubuntu/ HTTP/1.1” : GET on komento jolla asiakas pyytää, /~xubuntu on sijainti mistä pyytää ja HTTP/1.1 on protokolla jota käyttää pyynnön lähettämiseen.

” 200 325 ” : Statusviesti 200 viittaa onnistuneeseen hakuun, eli sivu on auennut asiakkaalle. 325 loppuosa kertoo asiakkaalle lähetetyn objektin kokoa.

“Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:61.0) Gecko/20100101 Firefox/61.0” : Yhteyttä ottavan asiakkaan selaimen ja käyttöjärjestelmät tietoja. Selain luovuttaa nämä identifioidakseen itsensä yhteyttä ottaessa.

Status 2:

127.0.0.1 – – [11/Sep/2018:19:14:01 +0000] “GET /~xubu HTTP/1.1” 404 495 “-” “Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:61.0) Gecko/20100101 Firefox/61.0”

Sama muuten kuten yllä paitsi statusviesti 404 tarkoittaa ettei sivustoa löydy tai ole olemassa. Tässä yritin yhdistää http://127.0.0.1/~xubu, eli kirjoitin käyttäjän xubuntu väärin.

En valitettavasti onnistunut aiheuttamaan HTTP 500 statuksella alkavia virheilmoituksia lokitiedostoon.

 

 

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 )

Connecting to %s