Konsta Toivonen - Haaga-Helia ammattikorkeakoulu

Etusivulle Takaisin

Tehtävien toimeksianto: http://terokarvinen.com/2017/aikataulu-%E2%80%93-linux-palvelimet-ict4tn021-7-ti-ja-6-to-alkukevat-2018-5-op

Tehtävissä käytetyt laitteet:
HP ProBook 655 G2: Xubuntu 16.04 LTS


H3

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

Päivitin saatavilla olevien pakettien listan komennolla: "sudo apt-get update"
Asensin Apache2-palvelimen komennolla: "sudo apt-get install -y apache2"
Kokeilin Apache2 toimivuuden selaamalla selaimella osoitteeseen: "localhost"


Muokkasin Apachen oletusetusivua polussa /var/www/html/index.html

Mahdollistin käyttäjäkohtaisten sivujen ylläpidon komennolla: "sudo a2enmod userdir"
Käynnistin Apache2 uudelleen komennolla: "sudo sytemctl restart apache2.service"
Loin käyttäjälle xubuntu "public_html" kansion ja loin sen sisään index.html-tiedoston.

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

Avasin access.log-tiedoston polussa /var/log/apache2/ komennolla tail /var/log/apache2/access.log
valitsin rivin: 127.0.0.1 - - [02/Feb/2018:19:11:48 +0000] "GET /~xubuntu/ HTTP/1.1" 200 943 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:54.0) Gecko/20100101 Firefox/54.0"

Analysoin sitä seuraavasti:
asiakkaan osoite: 127.0.01(localhost) 2.2.2018 klo 19:11:48
asiakas pyytää resurssia "/~xubuntu/ HTTP/1.1" komennolla GET, protokollalla HTTP/1.1, statuskoodi 200 eli onnistunut vastaus, 943 tavua siirretty.
"-" tarkoittaa ymmärtääkseni, ettei sivulle siirrytty toisen sivun kautta, vaan suoraan osoitteella.
Käytetty selain on "Mozilla-yhteensopiva" (X11 = X Window System 11 ikkunointijärjestelmä; Ubuntu, 64bit linux julkaisuversio 54.0, Gecko pohjainen verkkoselain Firefox 54.0.


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

Voidakseni ajaa web-palvelimellani koodia oli minun ensin asennettava koodin ajamiseen tarvittava paketti "libapache2-mod-php"
Se tapahtui komennolla "sudo apt-get install libapache2-mod-php"
Sen jälkeen sallin käyttäjäkohtaisen php-koodin ajamisen palvelimella kommentoimalla osan riveistä php7.0.conf -tiedostossa (/etc/apache2/mods-available/php7.0.conf).
Tämän jälkeen käynnistin apache2:n uudelleen komennolla: "sudo systemctl restart apache2.service"
Seuraavaksi loin "testi.php" tiedoston aiemmin luomaani "public_html" -kansioon.
Kirjoitin yksinkertaisen php-koodin, johon sisällytin virheen.
Avasin luomani php-tiedoston Mozilla Firefox -selaimella osoitteessa: localhost/~xubuntu/testi.php
Avasin apache2 virhelokin viimeisen rivin komennolla: tail -1 /var/log/apache2/error.log

virherivi meni näin:
[Sun Feb 04 15:45:14.827688 2018] [:error] [pid 20095] [client 127.0.0.1:60982] PHP Fatal error: Uncaught Error: Call to undefined function prin() in /home/xubuntu/public_html/testi.php:2\nStack trace:\n#0 {main}\n thrown in /home/xubuntu/public_html/testi.php on line 2

ja analysoin sitä seuraavasti:
Sunnuntai Helmikuu 4 klo 15:45:14 2018,
prosessi-id 20095,
asiakas 127.0.0.1 (localhost) portissa 60982,
PHP fataali virhe:
virhettä ei saatu kiinni:
kutsuttu tuntematonta funktiota "prin()" tiedostossa /home/xubuntu/public_html/testi.php: "2\nStack trace:\n#0 {main}\n"-tämä osio jää minulta ymmärtämättä,
tiedostossa testi.php, rivillä 2.


d) Tee virhe johonkin Apachen asetustiedostoon, etsi ja analysoi tuo rivi. Etsimiseen sopivat esimerkiksi Apachen omat lokit, syslog sekä ‘apache2ctl configtest’.
Saadakseni virheen Apachen lokiin muutin tiedoston /etc/apache2/mods-available/userdir.conf toista riviä. "UserDir public_html" > "...htmll"
Käynnistin apache2 uudelleen komennolla "sudo systemctl restart apache2.service"
Nyt avatessani selaimella osoitteen "localhost/~xubuntu" en päädykkään tekemälleni index.html sivulle vaan virhesivulle.

Virhelokiin /var/log/apache2/error.log on tullut rivi:
[Mon Feb 05 09:20:24.155783 2018] [authz_core:error] [pid 18885] [client 127.0.0.1:57710] AH01630: client denied by server configuration: /home/xubuntu/public_htmll

Analysoin sitä seuraavasti:
autentikointimodulissa virhe
prosessi-id 18885
asiakas 127.0.0.1(localhost), portissa 57710
Virhekoodi AH01630: pääsy asiakkaalle estetty palvelimen asetuksessa: /home/xubuntu/public_htmll (virhe johtuu väärin asetetusta käyttäjäkohtaisesta hakemistosta.)


e) Asenna ja kokeile PhpMyAdmin:a tai jotain muuta valmista weppiliittymää tietokantojen hallinnointiin.

Asensin phpMyadmin-sovelluksen komennolla "sudo apt-get install phpmyadmin php-mbstring php-gettext"
Asennusruudussa valitsin palvelinohjelmakseni apache2, valinta on tehtävä painamalla välilyöntiä.

Tietokanta-asetuksia valittaessa valitsin automaattiset asetukset.
Annoin phpmyadminille salasanan ja vahvistin sen.
Asennuksen jälkeen käynnistin apache2 uudelleen komennolla "sudo systemctl restart apache2.service"
Avasin phpmyadminin selaimessa osoitteella "localhost/phpmyadmin" ja kirjauduin sisään.

Loin "students"-tietokantaan uuden taulun "oppilaat" valitsemalla tietokannan painamalla yläpalkista painiketta "Databases", minkä jälkeen valitsin listasta "students"-tietokannan.
"students"-tietokantaan lisäsin taulun "Oppilaat" osiossa Create table


Oppilaat tauluun lisäsin sarakkeen Op.1, johon lisäsin arvot 3 ja 4.

Lähteet:
http://terokarvinen.com/2016/read-mysql-database-with-php-php-pdo
http://terokarvinen.com/2016/mysql-install-and-one-table-database-sql-crud-tutorial-for-ubuntu
https://httpd.apache.org/docs/2.4/logs.html
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/User-Agent/Firefox
https://www.digitalocean.com/community/tutorials/how-to-install-and-secure-phpmyadmin-on-ubuntu-16-04