Linux Palvelimet – Harjoitus 3 (13.9.2017) – Juha-Matti Räty a1600547

Harjoitus 3, Linux palvelimet ict4tn021 alkusyksy 2017

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 2017: Linux kurssi, http://terokarvinen.com

Kurssisivu: http://terokarvinen.com/2017/aikataulu-linux-palvelimet-ict4tn021-4-ti-ja-5-to-alkusyksy-2017-5-op

 

a) Asenna Apache, laita käyttäjien kotisivut (http://example.com/~tero) toimimaan. Testaa esimerkkikotisivulla. Tämä a-kohta on vaihdettu.

14.35 Suoritetaan komentokehotteeseen seuraavanlaiset kommenot:

setxkbmap fi
sudo apt-get update
sudo apt-get install apache2
sudo a2enmod userdir

14.39 Luodaan valmiiksi käyttäjäkohtainen public_html kansio ennen restarttia:
mkdir /home/xubuntu/public_html

nano /home/xubuntu/public_html/index.html

14.45 Kirjoitetaan “Testataan” ja painetaan ctrl+x, y ja enter. Sen jälkeen:

sudo service apache2 restart
hostname -I

Selaimella testataan toimiiko käyttäjäkohtainen osoite: iposoite/~xubuntu tai localhost/~xubuntu

 

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

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

Teen tehtävät b) ja i) samassa. Logien tarkastelua terminaalilla:

cd /var/log/apache2
less access.log

Osoite johon käyttäjä on mennyt (127.0.0.1 = localhost), Aikaleima, pyynnön tyyppi (GET), sivu/tiedosto jonka käyttäjä on ladannut, HTTP versio + status sekä headersien mukana tullut tieto webbiselaimesta (selain, selaimen versio, käyttöjärjestelmä yms.)

Ihan ensinmäinen rivi on HTTP status 200 joka tarkoittaa että sivulle on päästy. Tämä tuli logiin kun avasin localhost ja apache näytti apachen default pagen. Alemmalla rivillä näkyy, että selain on myös ladannut tiedoston ubuntu-logo.png onnistuneesti.

Kahdesta seuraavasta rivistä voimme todeta, että selain yritti ladata /favicon.ico tiedostoa, vaikkei sitä ollut sivulle määriteltynä. Useimmat selaimet toimivat näin. Mikäli ne eivät löydä HTML headista faviconiin linkkiä, se yrittää automaattisesti defaultia /favicon.ico. Logeihin se on tullut 404 HTTP errorina, sillä sitä tiedostoa ei palvelimella ole.

Seuraavaksi menin localhost/~xubuntu kansioon, mutta sivu antoi taas 404 virhettä selain ei osannut ohjata kyseiselle sivulle. Tässä vaiheessa en ollut vielä määritelly userdiriä apachessa.

Sitten suoritin sudo a2enmod userdir, sekä sudo service apache2 restart. Tämän seurauksena userdir oli apache asetuksista päällä, mutta koska en ollut luonut /home/xubuntu/public_html/ kansiota ja yritin käydä sivulla, siitä aiheutui HTTP status 403 eli forbidden.

Sen jälkeen loin kyseisen kansion ja sinne tiedoston index.html, joten päivittämällä sivu tuli ensinmäisenä HTTP 301 eli Moved Permanently ja heti perään HTTP 200, koska sivu ladattiin onnistuneesti.

Hieman tämän jälkeen saatiin HTTP 304 eli Not Modified, koska sivu avattiin uudelleen, muttei mitään muutoksia tullut aikaisempaan versioon, joten mitään ei ladattu palvelimelta.

 

 

g) Tee palvelimella ajettava weppiohjelma, joka käyttää tietokantaa. Voit tehdä jonkin yksinkertaisen CRUD-ohjelman, esimerkiksi TODO-listan

Koodi jonka sain jo koulutunnilla valmiiksi. Erittäin alkeellinen, mutta toimiva. Less is more?

Taulu (Vaatii mysql-palvelimen ja tietokannan):

CREATE TABLE todo(id INT AUTO_INCREMENT PRIMARY KEY, value VARCHAR(1024));

Ohjeet mysql tietokannan luomiseen: http://terokarvinen.com/2016/mysql-install-and-one-table-database-sql-crud-tutorial-for-ubuntu

HUOM. Tätä PHP-koodia ei tule käyttää kuin palvelimen MySQL/PHP CRUD testaamiseen. Koodissa on erittäin suurella todennäköisyydellä tietoturva-aukkoja, josta syystä sitä ei tulisi käyttää sellaisenaan julkisella palvelimella.

Koodi toimii GET-pyynnöillä:
Lisää: ?add={TEKSTI}
Muokkaa: ?update={ID}&value={TEKSTI}
Poista:  ?delete={ID}

Koska WordPress ei halunnut tehdä yhteistyötä, koodi löytyy linkistä: https://gist.github.com/JuhaRaty/8cf243c2ebffc8ca1eb87bc746db6cfb

Alkunäkymä (todo.php):

todo.php?add=Käy parturissa

todo.php?update=1&value=Sheivaa kaljuksi

todo.php?delete=1

 

Leave a comment