Tehtävänanto:
h3.
– Asenna LAMP (Linux, Apache, MySQL, PHP). Testaa kunkin komponentin toiminta. (Voit aloittaa tilanteesta, jossa Linux-käyttöjärjestelmä on jo asennettu, mutta ei muita (AMP) osia.
– 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ä):
– Tee virhe PHP-koodiin, etsi se lokista ja analysoi tuo lokirivi
– Tee virhe johonkin Apachen asetustiedostoon, etsi se lokista (Apachen omasta tai syslog:ista), ja analysoi tuo rivi.
– Asenna ja kokeile PhpMyAdmin:a
– Tee PHP-ohjelma, joka tekee käyttäjälle jonkin yksinkertaisen laskun (esim. painoindeksi BMI)
– Tee PHP-ohjelma, joka käyttää tietokantaa. Voit tehdä jonkin yksinkertaisen CRUD-ohjelman, esimerkiksi TODO-listan
– 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).
– Kuinka monta eri HTTP Status:ta (200, 404, 500…) saat aiheutettua lokeihin? Selitä, miten aiheutit tilanteet ja analysoi yksi rivi kustakin statuksesta.
Tehtävänannon lähde: http://terokarvinen.com/2016/aikataulu-linux-palvelimet-alkusyksy-2016
Harjoituksessa käytetty laitteisto:
- 16GB Kingston DataTraveler 100 G3 USB 3.0 muistitikku
- Tietokone (ga-b85m-d3h, E3-1230 V3, 8GB ddr3 1600MHz, r9 280x)
- Oheishärpäkkeet
Alustavat valmistelut:
Seuraavat toimet suoritan aina, kun alan tekemään linux-harjoitusten eri osioita.
Boottasin Xubuntu-livetikulle valitsemalla USB-muistitikun käynnistyksen yhteydessä bootattavaksi levyksi. Kun kysyttiin haluanko testata Xubuntua vaiko asentaa sen, valitsin vaihtoehdon “Try Xubuntu without installing“. Lyhyen latauksen päästä pääsin työpöydälle.
Yhdistin heti kotini langattomaan verkkoon työpöydän oikeasta yläkulmasta sekä muutin näppäimmistön layoutin suomiversioksi. Tämä onnistui asetukset -> näppäimmistö -> layout -> täppä pois “use system defaults”, jonka jälkeen alhaalta “add”-painikkeesta lisätään suomi näppäimmistön kieleksi. Sitten oikealla olevista nuolista siirretään Finnish-vaihtoehto English-vaihtoehdon yläpuolelle, ja ääkköset pelittää.
Avasin terminaalin, johon syötin heti ensimmäisenä komennon “$ sudo apt-get update“. Kyseinen komento päivittää pakettivarastot, ja se kannattaa suorittaa aina ennen kuin hyödyntää paketinhallintaa mihinkään.
Apachen asennus:
Alustavien toimenpiteiden jälkeen, aloitin harjoituksen tekemisen maanantaina 12. syyskuuta kello 13.55. Avasin terminaalin, johon kirjoitin komennon “$ sudo apt-get install apache2“. Kun kysyttiin halaunko jatkaa latausta, vastasin “yes”.
Seuraavaksi tarkastelin oman webbiserverini default-sivua. Tämä onnistui syöttämällä komentoriville komennon “$ firefox “http://localhost“. Komento avasi seuraavan näköisen aloitussivun Firefox-selaimeeni:
Nyt minun täytyi sallia userdir-moduulin käyttöönotto. Syötin komennon “$ sudo a2enmod userdir“. Jotta uusi konfigurointi tuli voimaan, täytyi minun ajaa komento “$ sudo service apache2 restart“.
Sitten loin kotihakemistooni kansion “public_html” komennolla: “$ mkdir public_html”
xubuntu@xubuntu:~$ mkdir public_html xubuntu@xubuntu:~$ ls Desktop Documents Downloads Music Pictures Public public_html Templates Videos
Tämän jälkeen surffasin sivulle komennolla: $ firefox “http://localhost/~xubuntu/“. Tällä hetkellä se näytti tältä:
Seuraavaksi nano-tekstieditoria hyödyntäen, tein simppelin index-html tekstitiedoston kotihakemiston kansioon public_html. Laitoin sinne simppelin html-pohjan, jonka katsoin sivulta http://www.w3schools.com/html/. Tallensin teksitiedoston painamalla Ctrl + x -> y (yes) ja sitten enter.
Päivitin sivun http://localhost/~xubuntu/ todetakseni, että unohdin lisätä UTF-8 metan html-koodiin. Lisäsin- tagien sisään “”> ja tallensin. Nyt sivuni näytti tältä, ja ääkköset pelitti oikein:
Apachen lokien analysointi:
Tarkoituksena oli siis etsiä Apache lokista esimerkki onnistuneesta (200 ok) sivulatauksesta ja epäonnistuneesta (esim 404 not found) sivulatauksesta.
Apachen lokitiedot löytyivät kansiosta $ cd /var/log/apache2/. Komento “ls” listasi sijainnin kaikki eri lokit:
xubuntu@xubuntu:/var/log/apache2$ ls access.log error.log other_vhosts_access.log
Kyseisistä lokeista tarkasten tässä harjoituksessa access -ja error.logia.
Access.logia seurasin komennolla “$ tail -F /var/log/apache2/access.log“. Päivitin sivuni http://localhost/~xubuntu/ samalla, kun pidin lokia auki.
Tulos:
127.0.0.1 - - [12/Sep/2016:12:39:28 +0000] "GET /~xubuntu/ HTTP/1.1" 200 506 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:47.0) Gecko/20100101 Firefox/47.0"
- 127.0.0.1 on remote host.
- – – Jotain tietoa puuttuu tässä kohtaa
- 12.syyskuuta kello 12:39:28. Kellonaika ja päivämäärä, jolloin palvelin lopetti pyynnön käsittelyn. Lopussa aikavyöhyke.
- GET /~xubuntu/ HTTP/1.1″ 200 506 = Se mitä palvelin teki: haki resurssin ~xubuntu ja käytti siihen protokollaa HTTP/1.1.200 on palvelimen lähettämä statuskoodi. Se tarkoittaa, että sivunlataus onnistui. 506 on bitteinä palvelimelta saadun vastauksen koko.
- Mozilla/5.0 on se selain, jolla tähän URL:iin navigoitiin.
- (X11; Ubuntu; Linux x86_64; rv:47.0) Gecko/20100101 Firefox/47.0 = user agent. Se indentifioi selaimen ja käyttöjärjestelmän webbipalvelimelle.
Käytin apuna analysoinnissa: http://httpd.apache.org/docs/2.4/mod/mod_log_config.html
Seuraavaksi tarkoituksena oli luoda epäonnistunut sivunlataus error.logiin. Avasin lokin komennolla “$ tail -F/var/log/apache2/error.log“. *** access.log… (keskiviikko 14.9.)
Tarkastelin lokia samalla, kun navigoin sivulle komennolla $ firefox “http://localhost/~xubuntukohan/ “. Kirjoitin nimeni tarkoituksella väärin nähdäkseni tuottaako se errorin lokiin. Sivu antoi kuin antoikin 404 errorin:
Jostain syystä en kuitenkaan saa error-lokissa tapahtumasta mitään tietoa. ***
*** EDIT (keskiviikko 14.9. kello 23.55) :
404 error tulee access.log, eikä error.log…
127.0.0.1 - - [14/Sep/2016:20:53:18 +0000] "GET /~xubuntukohan/ HTTP/1.1" 404 504 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:47.0) Gecko/20100101 Firefox/47.0"
- 127.0.0.1 on remote host.
- – – Jotain tietoa puuttuu tässä kohtaa
- 14.syyskuuta kello 20:53:18. Kellonaika ja päivämäärä, jolloin palvelin lopetti pyynnön käsittelyn. Lopussa aikavyöhyke.
- GET /~xubuntu/ HTTP/1.1″ 404 504 = Se mitä palvelin teki: haki resurssin ~xubuntu ja käytti siihen protokollaa HTTP/1.1.200 on palvelimen lähettämä statuskoodi. Se tarkoittaa, että sivunlataus onnistui. 504 on bitteinä palvelimelta saadun vastauksen koko.
- Mozilla/5.0 on se selain, jolla tähän URL:iin navigoitiin.
- (X11; Ubuntu; Linux x86_64; rv:47.0) Gecko/20100101 Firefox/47.0 = user agent. Se indentifioi selaimen ja käyttöjärjestelmän webbipalvelimelle.
Käytin apuna analysoinnissa: http://httpd.apache.org/docs/2.4/mod/mod_log_config.html
MySQL asennus:
MySQL tietokannan asensin tiistaina 13.9. kello 20.50 eteenpäin. Seurasin prosessissa tarkasti näitä Tero Karvisen ohjeita: http://terokarvinen.com/2016/mysql-install-and-one-table-database-sql-crud-tutorial-for-ubuntu.
Asensin tietokannan komennolla “$ sudo apt-get install mysql-server mysql-client“. Kun kysyttiin haluanko jatkaa latausta, vastasin “yes”.
Hetken päästä ponnahti esiin tämän näköinen ruutu:
Siihen keksin monimutkaisen salasanan root käyttäjälle, ja jatkoin eteenpäin. Salasana piti vielä vahvistaa kirjoittamalla se uudestaan.
Tämän jälkeen kirjauduin MySQL root käyttäjälle komennolla “$ mysql -u root -p“. Se kysyi salasanaani, jonka syötin siihen. Rivillä näkyi “mysql>”, joten kirjautuminen onnistui.
Kirjoitin komentoriville “CREATE DATABASE student CHARACTER SET utf8;“. Seuraavaksi “SHOW DATABASES;“. “GRANT ALL ON student. * TO student@localhost IDENTIFIED BY ’96ict-infrastruktuuripalvelualustammekohanz170!’;. Tässä siis luotiin tietokanta sekä käyttäjä, jolle asetettiin salasana.
Poistuin root käyttäjältä komennolla “exit“. Tämän jälkeen kokeilin kirjautua juuri luomalleni käyttäjälle komennolla “$ mysql -u student -p“. Kirjoitin salasanan, ja pääsin sisään.
Tarkoituksena oli kaiken tämän jälkeen automatisoida MySQL kirjautuminen säilömällä kirjautumistunnukset kotihakemistoni konfigurointitiedostoon. Loin nanolla tiedoston:
xubuntu@xubuntu:~$ nano .my.cnf
Kirjoitin tekstitiedostoon seuraavat tiedot ja tallensin.
Nyt, kun kirjoitan komennon “$ mysql“, minut kirjataan automaattisesti sisään kysymättä salasanaa.
Seuraavaksi testasin ohjeiden mukaisesti CRUDia (Create, Read, Update, Delete).
http://terokarvinen.com/2016/instant-firewall-sudo-ufw-enable
C: CREATE
Tässä tehtiin nyt oma tietokanta. Suoritin alla olevassa kuvassa näkyvät komennot:
C: Create records: INSERT
Lisäsin tietokantaan kolme henkilöä:
R: Read: SELECT
U: UPDATE
Päivitin ylempänä nimeeni myös sukunimen.
D: DELETE
mysql> DELETE FROM students WHERE name="Jaakko"; Query OK, 1 row affected (0.00 sec)
Koko CRUD tuli nyt kokeiltua. Lopetin MySQL:llä säätämisen tuntia myöhemmin kello 21.50.
PHP:
Muutin index.html-tekstitiedoston nimen index-php:ksi komennolla: “$ mv index.html index.php”. Nyt voin halutessani lisätä php-koodia sivulleni.
Sitten asensin seuraavan paketin komennolla “$ sudo apt-get install libapache2-mod-php“. Kun kysyttiin haluanko jatkaa latausta, vastasin “yes”.
Menin hakemistoon “cd /etc/apache2“, ja kirjoitin komentoriville komennon “$ grep -ri php“. Siitä seurasi tällainen näkymä:
Ilmeisesti Php on asentunut oikein.
Php.conf tiedostosta tuli myös kommentoida ifmodulet pois, eli $ sudoedit /etc/apache2/mods-available/php7.0.conf
(kommentoi pois ##) (ifmodule)
Lisätehtävä:
” -Tee virhe johonkin Apachen asetustiedostoon, etsi se lokista (Apachen omasta tai syslog:ista), ja analysoi tuo rivi.”
Tarkastelin syslogia komennolla “$ tail -F /var/log/syslog/“. Tarkoituksenani on tehdä jokin virhe apachen asetustiedostoon, ja nähdä se lokista.
Kokeilin muuttaa ports.conf-asetuksia muokkaamalla tekstitiedostoa:
xubuntu@xubuntu:/etc/apache2$ nano ports.conf
Kyseinen asennustiedosto näytti tältä:
# If you just change the port or add more ports here, you will likely also # have to change the VirtualHost statement in # /etc/apache2/sites-enabled/000-default.conf Listen 80 Listen 443 Listen 443 # vim: syntax=apache ts=4 sw=4 sts=4 sr noet
Yritin tehdä tiedostoon mahdollisimman paljon virheitä ja tallensin. Tästä ei kuitenkaan seurannut mitään virheilmoitusta lokiin.
Jatkan harjoitusta vielä keskiviikkona ja kokeilen jotain muuta.
Yhteenveto:
Tässä harjoituksessa asennettiin onnistuneesti Apache, MySQL ja PHP aiemmin asennetun Linuxin päälle. Lisäksi tehtiin minimalistiset webbisivut omalle Apache-palvelimelle, joiden toimivuutta testattiin Apachen lokitietoja tarkkailemalla.
Lähteet:
http://terokarvinen.com/2016/aikataulu-linux-palvelimet-alkusyksy-2016
http://terokarvinen.com/2016/mysql-install-and-one-table-database-sql-crud-tutorial-for-ubuntu
http://terokarvinen.com/2008/install-apache-web-server-on-ubuntu-4
http://httpd.apache.org/docs/2.4/mod/mod_log_config.html
Pingback: Palvelinten hallinta – Harjoitus 6 – Markus Pyhäranta
Pingback: Digitekniikat – Oppimistehtävä 4 – WordPress – Markus Pyhäranta
Pingback: Digitekniikat – Oppimistehtävä 4 – WordPress & Web Hosting – Markus Pyhäranta
Pingback: Ubuntu-virtuaalipalvelimen käyttöönotto ja Domain-nimen osoittaminen palvelimeen DigitalOceanissa – Markus Pyhäranta
Pingback: Linux palvelimet h3 | Jaakko Vehkamäki