Linux palvelimet ICT4TN021-5
Takaisin juureen

Kotitehtävä h3
12.9.2017

  1. Apachen asennus ja käyttäjän kotisivut
  2. Apachen logit
  3. Palvelimella ajettava weppiohjelma

1. Apachen asennus ja käyttäjän kotisivut

tehtävä a).
Tehtävään kulunut aika noin 40 minuuttia.

Tehtävien alustana toimii Acerin läppäri seuraavilla spekseillä

MODELAcer Aspire ES1-523
CPUAMD A8-7410 @ 2.20 GHz
MEM8.00 GB DDR3
SSDLiteon CV3-CE256 250 GB
GPUAMD Radeon R5

Käyttöjärjestelmänä toimi Ubuntu Desktop 16.04.3 LTS, ja käytin sitä tehtävässä 1 luodulta livetikulta.

Apachen asennus

Ensimmäisenä tehtävä oli asentaa Apache-webbiserveri, ja laittaa käyttäjän kotisivut toimimaan.

Aloitin päivittämällä pakettitiedot, antamalla komentokehoteeseen komennon:
sudo apt-get update
Tämän jälkeen Apachen asennus komennolla:
sudo apt-get install -y apache2

Apache asentui, ja testasin sen toiminnan. Toiminnan voi testata surffaamalla vapaavalintaisella webbiselaimella joko osoitteeseen localhost, tai vaihtoehtoisesti tietokoneen omaan IP-osoitteeseen. Kokeilin kummatkin keinot. Syötin terminaaliin komennon ifconfig joka tulosti koneeni IP-osoitteen. Minun tapauksessa IP-osoite löytyi interfacen wlp2s0 jälkeen kohdasta inet addr:.

Seuraavaksi avasin Firefoxin ja kirjoitin osoiteriville aluksi localhost, ja ruudulle piirtyi Apachen oletussivu. Seuraavaksi syötin koneen IP-osoitteen 192.168.1.104, ja sain saman tuloksen. Tästä päättelin, että Apache toimii.

Käyttäjän kotisivut

Seuraava tehtävä oli laittaa käyttäjän kotisivut toimimaan. Tämä tapahtui laittamalla päälle moduuli nimeltä UserDir. Tein sen antamalla terminaalissa komennon sudo a2enmod userdir. a2enmod on lyhennys sanoista apache 2 enable mod, suomeksi siis apache 2 laita päälle moduuli. Seuraavaksi tulee moduulin nimi UserDir , joka tarkoittaa suomeksi käyttäjähakemistoja.

Kommennon syöttämisen jälkeen terminaali ilmoittaa seuraavaa:

"
Enabling module userdir.
To activate the new configuration, you need to run:
service apache2 restart

"

Kone siis ohjeistaa käynnistämään apache2-palvelun uudestaan. Koneen ehdottamaan komentoon tosin pitää lisätä alkuun sudo, sillä muuten kone ei suostu käyttöoikeuksien puuttuessa ajamaan komentoa. Ajoin komennon sudo service apache2 restart, ja palvelu käynnistyi uudestaan.

Seuraavaksi oli aika luoda sisältöä käyttäjän kotisivulle. Tein sen antamalla komentokehotteeseen seuraavan komentosarjan: (omat kommenttini ##-merkinnän jälkeen)

cd##Mennään käyttäjän kotihakemistoon
mkdir public_html##Luodaan public_html -kansio, joka sisältää kotisivut
cd public_html##Mennään äsken luotuun kansioon
nano index.html##Luodaan index.html-tiedosto, jonka apache oletuksena tarjoaa käyttäjälle.

Nano-tekstieditorissa kirjoitin tekstin "Tervetuloa kotisivuilleni", tallensin ctrl + o ja poistuin ohjelmasta ctrl + x. Kotisivu oli näin luotu, ja oli aika testata toimivuus. Tein sen kirjoittamalla Firefox-selaimen osoiteriville osoitteen 192.168.1.104/~ubuntu. IP-osoite on koneeni IP-osoite, ja ubuntu on käyttäjätunnukseni, jolle sivut loin. Kirjoitettuani osoitteen, selain näytti äsken luomani sivun, joten kotisivut toimivat kaikessa yksinkertaisuudessaan.

2. Apachen logit

tehtävä b).
Tehtävään kului noin 30 minuuttia.

Seuraava tehtävä oli surffailla äsken luoduilla weppisivuilla, ja aiheuttaa Apachen lokeihin merkinnät onnistuneesta ja epäonnistuneesta sivulatauksesta, sekä analysoida rivit.

Aiheutin ensiksi lokimerkinnät. Aluksi surffasin Firefoxilla osoitteeseen 192.168.1.104/~ubuntu/index.html, ja tämän jälkeen osoitteeseen 192.168.1.104/~ubuntu/eitoimi.html.

Seuraavaksi luin lokit antamalla terminaalissa komennon cat /var/log/apache2/access.log

Apachen lokit sijaitsevat kansiossa /var/log/apache/ ja access.log sisältää lokit sivupyynnöistä.

Antamani cat-komento printtasi näytölle koko lokin, ja lokista minua kiinnosti kaksi viimeistä riviä, joilla oli kaksi äsken aiheuttamaani tapahtumaa:

192.168.1.104 - - [12/Sep/2017:12:14:12 +0000] "GET /~ubuntu/index.html HTTP/1.1" 200 309 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:54.0) Gecko/20100101 Firefox/54.0"

192.168.1.104 - - [12/Sep/2017:12:14:21 +0000] "GET /~ubuntu/eitoimi.html HTTP/1.1" 404 514 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:54.0) Gecko/20100101 Firefox/54.0"

Ensimmäiseksi lukee tietokoneen IP-osoite, jolla Apache pyörii.

Hakasulkeissa on tapahtuman aikaleima sekuntin tarkkuudella, sekä aikavyöhyke. Kyse on sen koneen ajasta, jolla Apache pyörii. Seuraavaksi lainausmerkeissa on sana GET, joka siis tarkoittaa sivupyyntöä. Sanan jälkeen lukee sen sivun osoite, mitä käyttäjä on pyytänyt. Tässä tapauksessa index.html

Seuraavaksi on kaksi numerosarjaa, 200 ja 309. Ensimmäinen on HTTP-statuskoodi, joista on selitykset esimerkiksi tässä Wikipedian artikkelissa.

Numero 200 tarkoittaa OK, eli että pyyntö on mennyt läpi. Numero 309 on vastauksen pituus tavuina.

Jälkimmäisessä lokimerkinnässä on pyydetty sivua eitoimi.html, jota ei siis palvelimelta löydy. HTTP-statuskoodi oli tällä kertaa 404. Koodi 404 tarkoittaa Not found, eli että pyydettyä sivua ei löytynyt.

3. Palvelimella ajettava weppiohjelma

Tehtävä f)
Tehtävään kului noin 2 tuntia.

Seuraavaksi tehtäväksi valitsin palvelimella ajettavan weppiohjelman, joka laskee käyttäjälle painoindeksi BMI:n. Luvun lisäksi halusin että ohjelma antaa sanallisen palautteen.

Tehtävänannon idea oli hyödyntää LAMP-stäkkiä, joten päätin tehdä ohjeman php:llä. Aikaisempaa kokemusta php-ohjelmoinnista minulla ei juuri ollut, joten hyödynsin w3schools.comin PHP-tutoriaaleja.

Aluksi oli asennettava php-moduuli. Tämä tapahtui syöttämällä terminaaliin komento:

sudo apt-get install -y libapache2-mod-php

Seuraavaksi php-moduulin käyttö käyttäjien kotihakemistossa piti aktivoida. Se tapahtui seuraavin komennoin:

cd /etc/apache2/mods-available
sudoedit php7.0.conf

Näin päästiin editoimaan php:n konfiguraatiotiedostoa. Kuten tiedostossa opastetaan, neljä viimeistä riviä piti kommentoida ulos. Tämä tapahtui lisäämällä rivien alkuihin #-merkki. Tämän jälkeen tallennus ctrl + o ja nanon sulku ctrl + x.

Seuraavaksi apache täytyi vielä käynnistää uudestaan komennolla sudo service apache2 restart

Seuraavaksi oli aika ryhtyä php:n kimppuun. Kirjoitin koodin Windows-koneellani, koska siinä minulla oli ennestään asennettuna Sublime Text -tekstieditori. Sublime Text on helppokäyttöinen ja miellyttää silmää. Koodin olisi voinut kirjoittaa millä tahansa tekstieditorilla, mutta itse päädyin Sublime Textiin. Kun koodi oli valmis, tallensin sen nimellä painoindeksi.txt, ja siirsin WinSCP:llä renki-serverilleni. Tallensin sen .txt-muotoon, jotta voin avata tiedoston lähdekoodimuodossa Ubuntu-koneellani koodin kopiointia varten. Kirjoitin Ubuntussa Firefoxin osoiteriville renki.dy.fi/linux/painoindeksi.txt, painoin ctrl + a ja ctrl + c kopioidakseni kaiken. Tämän jälkeen avasin terminaalin, ja annoin komennot:

cd
cd public_html
nano painoindeksi.php

Tämän jälkeen liitin koodin nanoon right clickaamalla terminaalia, ja valitsemalla paste. Seuraavaksi tallennus ctrl + o ja nanon sulku ctrl + x

Linkin kirjoittamani laskurin lähdekoodiin löydät tästä.

Kun laskuri oli valmis, oli aika testata toiminta. Kirjoitin Firefoxin osoiteriville laskurin osoitteen localhost/~ubuntu/painoindeksi.php:

Hyvin toimii!