Linux palvelimet – h3

Tehtävänannot:

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ävät

H3.a

 

Tehtävänantona oli asentaa Apache, ja laittaa käyttäjän kotisivut toimimaan sekä testata esimerkkikotisivulla. Asensin apachen komennolla Selection_043.png. Tämän jälkeen testasin omaa serveriäni kirjoittamalla komentokehoitteeseen Selection_044.png. Firefox selaimeni aukesi ja eteeni ponnahti tämän näköinen sivu:

Apache2 Ubuntu Default Page: It works - Mozilla Firefox_045.png

 

Tästä voi todeta sen, että apachen palvelin toimii localhostin alla. Tämän jälkeen menin terminaalissa komennolla Selection_046.png  käyttäjäkansion alle. (home/ossi). Tämän jälkeen kirjoitin terminaaliin komennot
Selection_051.png
millä mahdollistin käyttäjien omien webbisivujen käyttämisen. Alempi komento käynnisti palvelimen uudestaan. Sitten kirjoitin terminaaliin Selection_055.  Firefox avautui ja esimerkkisivu latautui ongelmitta. Kuvankaappaus sivusta:

Example Domain - Mozilla Firefox_056.png

 

 

H3.b

 

Tehtävänantona oli etsiä apachen lokista onnistunut ja epäonnistunut sivunlataus. Aloitin tehtävän avaamalla terminaalin. Terminaaliin kirjoitin “tail -F /var/log/apache2/access.log”.  Komento jäljittää apachen access-lokia, ja ilmoittaa jos tulee epäonnistunut  tai onnistunut sivunlataus.

Tämän jälkeen avasin uuden terminaali-ikkunan ja uudeleenkäynnistin apachen palvelimen komennoilla:
Selection_057.png
Silloin toiseen terminaali-ikkunaani, siihen mikä jäljitti apachen access-lokia, tuli ilmoitus:

Selection_061.png

Analyysi onnistuneesta sivunlatauksesta(200):

  • : : 1 – –  – ei tietoa mitä tarkoittaa
  • [04/Feb/2018:17:59:51 +0200] – Aika, milloin komento tapahtui. Katsoin rannekkelloani samalla ja aika täsmäsi. +0200 voisi tarkoittaa aikavyöhykettä (UTC+2), mutta tiedosta en ole varma
  • “GET /HTTP/1.1” – GET voisi viitata pyyntöön, minkä client pyytää palvelimelta ajaa tullessaan webbisivuille, asian varmuusaste ei varma. HTTP viittaisi siihen, millä protokollalla data siirtyy, mikä on tässä tapauksessa HTTP-protokolla (yleinen hypertekstin siirtoprotokolla, mitä usein web-palvelimet esimerkiksi käyttää). 1.1  voisi tarkoittaa protokollan versiota, liittyen edelliseen HTTP -osioon, tiedon varmuus ei ole varmaa.
  • 200 – tarkoittaa onnistunutta sivunlatausta, merkitään numerokoodein lokiin
  • 3525 – voisi tarkoittaa palvelimen porttinumeroa, tiedon varmuusaste epävarma.
  • “-” – viittauksen otsikko (Referer Header). Osoite, mihin client yrittää ottaa yhteyttä. Sitä ei ole tässä tapauksessa olemassa, joten siksi lokiin tulee viiva.
  • “Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/64.0.3282.119 Chrome/64.0.3282.119 Safari/537.36” – Käyttäjän tietoja (user agent), mistä näkyy esimerkiksi selain ja käyttöjärjestelmä, tiedon varmuus heikko.

 

Analyysi epäonnistuneesta sivunlatauksesta (404):

Samankaltainen ylläolevan analyysin kanssa, muutamia poikkeuksia lukematta:

  • favicon.ico – Favicon kuva, tarkoittaa varmaankin kuvaa, mikä on toolbarissa:
    Selection_062.png Varmuuden aste tiedosta epävarma.
  • HTTP/1.1 404 500″ – Virkkeessä 404 tarkoittaa epäonnistunutta sivun latausta joka merkitään numerokoodilla 404 (Not Found)500 tarkoittaa varmaankin sisäistä tietoliikennevirhettä, varmuuden aste epävarma.
  • “http:// localhost / ” – Osoitetta, mihin client yrittää ottaa yhteyttä (Refer Header).

 

 

H3.c

 

Tehtävänantona oli tehdä käyttäjäkohtaiselle webbisivun ajettavaan koodin virhe PHP:llä tai Pythonilla . Aluksi lähdin tekemään omia käyttäjäkohtaisia webbisivuja käyttäjälle ossi. Tein kansion nimeltä public_html ja siirryin kansion alle seruaavilla komennoilla:

Selection_047.png

Tämän jälkeen komennoilla
Selection_051.png
mahdollistin sen, että pystyn tekemään oman käyttäjän alle webbisivut.

Sitten tein kansioon uuden html-tiedoston nimeltä index.html käyttämällä komentoa Selection_048.png. Tiedosto sisällöksi kirjoitin seuraavasti:

Terminal - ossi@osmoosi: ~-public_html_052.png

Tämän jälkeen kirjoitin toiseen avoinna olevaan terminaaliin Selection_054.pngTerminaali avasi firefoxin ja näytti tekemäni index.html-sivun, minkä tein aikaisemmassa vaiheessa public_html-kansioon. Kuvankaappaus sivusta:

Omat Webbisivut - Mozilla Firefox_053

Tästä totesin, että käyttäjäkohtaiset kotisivut toimivat. Sitten asensin LAMP:in kirjoittamalla terminaaliin komennolla:
Selection_063.png
Tämän jälkeen mahdollistin php:n käytön kotisivuillani kirjoittamalla komennon Selection_064.png ja sieltä kommentoin tiedostossa olevan if-lauseen pois toiminnosta seuraavasti:

Terminal - ossi@osmoosi: ~_066.png

Tämän jälkeen uudelleenkäynnistin palvelimen komennollaSelection_067.png. Sen jälkeen, kokeilin ensin toimiiko PHP sivuillani, joten muokkasin index.html sivuani menemällä terminaalissa public_html kansiooni ja siellä komennolla Selection_068.png muutin .html -päätteisen tiedostoni .php päätteiseksi. Sen jälkeen komennolla Selection_069.png lisäsin index-tiedostooni php-koodia:

Terminal - ossi@osmoosi: ~-public_html_070.png

Tämän jälkeen uudelleenkäynnistin taas palvelimen ja kokeilein webbisivua ja webbisivulla näkyikin koodaamani php rivi. Sitten avasin uuden terminaalin ja aloin seurata apachen error-lokia komennolla Selection_071.png.Tämän jälkeen kirjoitin php-koodiin virheellistä syntaksia:Selection_073.png Sitten päivitin webisivun painamalla f5 selaimesta ja apachen error-lokista tulostui seuraavaa:

Selection_072.png

Analyysi error-lokiin tulostuneesta rivistä:

  • Sun Feb 04 22:07:16.167326 2018 – hyvin tarkka aika lokiin kirjautuneesta virheestä
  • [:error] [pid 11797] [client :: 1:35582] – kertoo että kyseessä on virhe, pid:stä en osaa sanoa mitä tarkoittaa, sama  clientistä ja sen jälkeisistä numeroista
  • PHP Parse error: syntax error, unexpected ‘print’ (T-PRINT) – kertoo virheen syyn (tässä tapauksessa PHP virhe, syntaksi virhe, ja missä syy näkyy (unexpected ‘print’)) T-PRINT:istä en tiedä varmuudella mitä tarkoittaa.
  • in /home/ossi/public_html/index.php on line 11 – Kertoo tarkan sijainnin, missä virhe on tapahtunut (kansio/tiedosto/rivi)

 

 

H3.d

 

Tehtävänantona oli aiheuttaa virhe johonkin apachen asetustiedostoihin ja katsoa lokista, mitä tapahtuu sekä analysoida sitä. Aloitin avaamalla terminaalin ja vaihtamalla kansioon /etc/apache2 ja siellä kirjoitin komennon Selection_074.png.  Muokkasin apache2.conf tiedostoa lisäämällä random tekstiä yhdelle riville, mitä ei yleensä kannata tehdä:

Terminal - ossi@osmoosi: -etc-apache2_076.png

Tämän jälkeen käynnistin palvelimen uudestaan komennolla Selection_067 ja huomasin, ettei apache lähtenytkään käyntiin, vaan tuli seuraava virheviesti:
Terminal - ossi@osmoosi: -etc-apache2_077.png

Tämän jälkeen kirjoitin komennon Selection_078.png ja tulostui seuraavaa:

Terminal - ossi@osmoosi: -etc-apache2_079.png

Analyysi virheilmoituksesta:

  • AH00526: Syntax error on line 107 of /etc/apache/apache2.conf – kertoo virhekoodin (AH00526, varmuus epävarma), kertoo virheen tyypin (Syntax error), kertoo myös virheen tarkan sijainnin (line 107 of /etc/apache/apache2.conf )
  • Invalid command ‘uhifa…’, perhaps misspelled or defined by a module not included in the server configuration – kertoo mikä virhe tai syntaksi on ja kertoo syyn virheeseen
  • Action ‘configtest’ failed – configuraatio testiä ei voitu tehdä loppuun, sillä oli jotain virheitä konfiguraatioissa (epävarma tieto).
  • The Apache error log may have more information – Kertoo, että apache error log voi sisältää enemmän infoa.

 

H3.f

 

Tehtävänantona oli tehdä yksinkertainen laskuri php:llä webbisivuilleni. Aloitin avaamalla terminaalin ja sitten menemällä kansioon public_html , ja siellä muokkasin index-tiedostoa komennolla Selection_069 ja tein sinne seuraavia muutoksia:

Terminal - ossi@osmoosi: ~-public_html_080.png

Tämän jälkeen tein uuden .php tideoston komennolla Selection_081.png. Tein laske.php tiedostoon php-scriptin, mikä suorittaa yhteenlaskutoimituksen. laske.php ottaa index.php-tiedostoon laitetuista formeista arvot ja laskee ne yhteen sekä näyttää ne omalla sivullaan, localhost/~ossi/laske.php. Kuvankaappaus laske.php -tiedostosta:

Terminal - ossi@osmoosi: ~-public_html_082.png

Kuvankaappaukset vielä webbisivuista:

Selection_083.pngSelection_084.png

 

Tätä dokumenttia saa kopioida ja muokata GNU General Public License (versio 2 tai uudempi) mukaisesti. http://www.gnu.org/licenses/gpl.html

Pohjana Tero Karvinen 2012: Linux kurssi, http://terokarvinen.com

 

Lähteet:
Apacheohje: http://terokarvinen.com/2008/install-apache-web-server-on-ubuntu-4
Apache2-lokianalyysi: https://stackoverflow.com/questions/9234699/understanding-apaches-access-log
Error Messages: https://www.easyname.com/en/support/hosting/158-what-do-the-http-status-codes-401-403-404-and-500-mean
LAMP-stack ohje: http://terokarvinen.com/2016/read-mysql-database-with-php-php-pdo

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