tiistai, 4. syyskuuta 2012

Apachen asennus ja Apache-lokien tarkastelua

Tero Karvisen Linux-johdantokurssilla (ICT1TN002-33) sain muun ryhmäni ohella tehtäväkseni asentaa maailman suosituimman weppipalvelimen, Apachen Ubuntuuni (Ubuntu 12.04). Asennetun Apachen lokiin minun oli määrä aiheuttaa tieto onnistuneesta sivun latauksesta sekä ilmoitus siitä, ettei sivua löydy. Sokerina pohjalla raportin lopussa on muistiinpanoja ensitapaamisestani Telnetin kanssa.

Apachen poisto, asennus, käyttöönotto ja testaus one-linerilla

Koska olin jo edellisellä tunnilla asentanut läppäriini Apachen, päätin poistaa sen hävittäen kaikki asetustiedostot ja asentaa apachen saman tien (4.9.2012 klo 20.35) uudelleen, koska kyseessä ei ole erityisen massiivinen projekti. En voinut välttää kiusausta kokeilla tehdä koko hommaa one-linerilla, joten typoja uhmaten komensin Ubuntuani seuraavalla tavalla:
sudo apt-get purge apache2 && sudo apt-get update && sudo apt-get install apache2 && sudo a2enmod userdir && sudo service apache2 restart && rm -r /home/erkkimon/public_html/ && mkdir /home/erkkimon/public_html/ && echo 'Hello world.' > /home/erkkimon/public_html/index.html && ssh himanen@192.168.100.48 'wget http://192.168.100.32/~erkkimon/index.html -o /dev/null' && ssh himanen@192.168.100.48 'wget http://192.168.100.32/~erkkimon/index.fail -o /dev/null'

Onnistuinko? – Lokien analyysi

One-linerin ajettuani, muutaman kerran sudolle ja SSH:lle salasanani annettuani ja hetken odoteltuani pääsin selvittämään, onnistuinko. Aluksi selvitin, oliko Apache kuullut asiakaskoneeni kaksi kutsua:
cat /var/log/apache2/access.log | tail -2
192.168.100.48 - - [04/Sep/2012:20:59:30 +0300] "GET /~erkkimon/index.html HTTP/1.0" 200 325 "-" "Wget/1.11.4"
192.168.100.48 - - [04/Sep/2012:20:59:31 +0300] "GET /~erkkimon/index.fail HTTP/1.0" 404 538 "-" "Wget/1.11.4"
Lokin mukaan siis asiakas IP-numerosta 192.168.100.48 on pyytänyt wget-asiakasohjelmalla Apachelta tiedostoa /~erkkimon/index.html HTTP-protokollan yli 4.9.2012 klo 20.59:30 ja sekuntia myöhemmin tiedostoa index.fail samasta hakemistosta. Tämän jälkeen katsoin Apachen virhelokista, onko Apache oletukseni mukaisesti ilmoittanut, ettei index.fail-tiedostoa ole.
erkkimon@ubuntu:~$ cat /var/log/apache2/error.log | tail -1
[Tue Sep 04 20:59:31 2012] [error] [client 192.168.100.48] File does not exist: /home/erkkimon/public_html/index.fail
Oletus oli oikea: Apache kirjasi virhelokiinsa, että 4.9.2012 klo 20.59:31 asiakas IP-osoitteesta 192.168.100.48 pyysi HTTP-protokollan yli tiedostoa /home/erkkimon/public_html/index.fail, mutta sitä ei ollut palvelimen tiedostojärjestelmässä.

Telnetiin tutustumista

Tehtävänäni oli myös kokeilla Telnetiä localhostilla sekä lisätehtävänä ladata sivu telnetillä localhostissa pyörivältä Apache-palvelimelta.

Aluksi testasin vain avata yhteyden ja rämpätä [Enter]-painiketta. Lopputuloksena oli vain rivinvaihtoja,  kunnes palvelin (localhost) kyllästyi leikkiimme ja sulki telnet-yhteyden. Siirryin kokeilemaan sivun lataamista telnetillä.

En aluksi tiennyt, miten sivu ladataan telnetillä. Löysin kuitenkin nopeasti vastauksen Microsoftin (!) Telnet-artikkelista. Puolustuksekseni totean, että klikkasin ekaa Google-hakutulosta ja vasta raporttiin linkkiä lisätessäni (= nyt) huomasin, että lähdesivusto on Microsoftin.
telnet localhost 80
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
GET /~blaa/index.html
Hello world.
Connection closed by foreign host.
Lataaminen siis tehtiin GET-komennolla. Syntaksissa mielenkiintoa herättää tiedostopolun ilmoittaminen absoluuttiselta näyttävässä muodossa. Lisäksi laitoin merkille, että Apachen lokeissa ja Telnet-komennoissa on yhteisiä piirteitä.

Joka tapauksessa GET-komento palautti halutun tiedoston sisällön, joten homman voidaan todeta toimivan.

PS. One-linerin kirjoittamisen aloitushetken ja lokimerkinnän välillä on noin 25 minuutin ero. En suinkaan kirjoittanua one-lineria 25 minuuttia; toisessa koneessani on Mac OS X, joten aluksi minun tarvitsi ottaa Mac OS X -koneessa SSH-demoni käyttöön, asentaa Xcode, jonka jälkeen asensin Xcoden comman-line -ympäristön. Tämän jälkeen asensin MacPortsin, jonka jälkeen asensin sillä wgetin (sudo ports selfupdate && sudo ports install wget). Tämän raportin fokuksessa ei kuitenkaan ole wgetin asennus Mac OS X -koneelleni, joten päätin jättää wgetin asennuksen raportoinnin maininnan tasolle.

Ei kommentteja:

Lähetä kommentti