Linux Palvelimet viikko 5

Harjoitus H5

25-09-2018

a) Asenna LAMP (M=MariaDB).
b) Tee PHP-ohjelma, joka lukee tietueita MariaDB-tietokannasta.
c) Lisää PHP-ohjelmaasi mahdollisuus lisätä tietueita tietokantaan.
d) Pelaa SQLzoo:ta (tätä d-kohtaa ei tarvitse raportoida)


Suoritan tehtävät pöytäkoneellani, jonka tiedot löytyvät Viikon 1 tehtävistä. Linuxina pyörii livetikulta Xubuntu 18.04.01 LTS.


a) Asenna LAMP (M=MariaDB)

L = Linux, pyörii livetikulta eikä vaadi erillistä asennusta. Testattu järjestelmän toimivuutta avaamalla nettiselain ja suorittamalla google haku. Terminaalin toimivuus todettu vaihtamalla näppäinasettelu suomeksi, päivittämällä paketinhallinta, sekä asentamalla Shutter kuvakaappauksia varten.

  • setxkbmap fi – Näppäinasettelun muuttamiseksi
  • sudo apt-get update – Päivittääkseen paketinhallinta
  • sudo apt-get -y install shutter – Kuvakaappauksia varten

Kuvakaappaus vielä terminaalista shutterilla, joten todettu shutter toimivaksi oikein.

Terminal - xubuntu@xubuntu: ~_001.png


A = Apache

Asennettu Apache terminaalista komennolla:

  • sudo apt-get -y install apache2

Apache asentui oikein ja vastasi localhostista:

Apache2 Ubuntu Default Page: It works - Mozilla Firefox_002.png

Seuraavaksi poistin apachen oletussivun:

  • echo Default VEX! | sudo tee /var/www/html/index.html

Lopputulos näytti vastaavalta:

Mozilla Firefox_003.png

Seuraavilla komennoilla apacheen kotihakemisto, käyttäjän kotisivuja varten. Annettu käyttäjälle myös oikeus ajaa omia sivuja luodusta hakemistosta.

  • mkdir public_html – hakemiston luonti
  • nano index.html – public_html hakemistoon index tiedosto
  • sudo a2enmod userdir – sallii omien sivujen käytön apachessa
  • systemctl restart apache2 – tämä käynnistää apachen uudestaan jotta muutokset tulevat voimaan.

Sivu vastasi käyttäjän hakemistosta oikein:

Mozilla Firefox_004

Apache näytti toimivan testien mukaan oikein joten siirryin seuraavaan kohtaan.


M = Mariadb

Ohjelman asennus tapahtui seuraavalla komennolla:

  • sudo apt-get -y install mariadb-client mariadb-server

Järjestelmän tulimuuri oli jo päällä, eikä ssh yhteyttä ole käytössä joten reikää ssh:ta varten en tehnyt hyökkäyspinta-alan minimoimiseksi.

Käynnistin mariadb:n ja kirjauduin sisään mariadb:hen root tunnuksella

  • sudo mariadb -u root

Mariadb terminal.png

Seuraavaksi tein tietokannan “miikatodo”.

  • CREATE DATABASE miikatodo;

Ja varmistin että uusi tietokanta näkyy valikossa:

  • SHOW DATABASES;

mariadb-miikatodo.png

Sitten tein miikatodo tietokantaa varten oman käyttäjän (“*” merkkien tilalle laitetaan käyttäjälle laitettava salasana ):

  • GRANT ALL ON miikatodo.* TO miikatodo@localhost IDENTIFIED BY ‘******’

Sen jälkeen kirjauduin sisään miikatodo käyttäjälle:

  • mariadb -u miikatodo -p

mariadb-user.png

Pääsin kirjautumaan käyttäjälle, toki ensimmäisen kerran salasanaa syöttäessä näppäilyvirheen takia kirjautuminen epäonnistui.

Valitsin miikatodo käyttäjällä miikatodo tietokannan komennolla:

  • use miikatodo

Loin uuden taulun “Tasks” tietokantaan, johon voi syöttää tiedoksi tehtävän nimen ja siihen tarvittavan ajan.

  • CREATE TABLE Tasks (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(1024), time FLOAT);

VARCHAR(X) tarkoittaa että sarakkeeseen voi kirjoittaa tekstiä, maksimissaan 1024 merkin verran. FLOAT sarake ottaa vastaan lukuja.

Kirjoitin sarakkeisiin dataa:

  • INSERT INTO Tasks (name, time) VALUES (“Wash the dishes”,0.5);
  • INSERT INTO Tasks (name, time) VALUES (“Cook”,1);
  • INSERT INTO Tasks (name, time) VALUES (“Train linux excersices”,2);

Tarkistin että data on oikeasti tullut oikein tietokantaan:

  • SELECT * FROM Tasks

SELECT.png

Testasin myös tietojen päivittämisen ja poiston:

  • UPDATE Tasks SET time=0.75 WHERE name=”Cook”;
  • DELETE FROM Tasks WHERE id=2;

Näillä komennoilla sain tehtävän “Cook” ajan muutettua 0.75 ja poistettua sarakkeen jonka id oli 2, eli “Wash the dishes”.

Varmistettu että komennot toimivat:

  • SELECT * FROM Tasks

SELECT2.png

Näiden testien perusteella CRUD näytti toimivan mariadb:ssä oikein joten pääsin siirtymään seuraavaan vaiheeseen.


P = PHP

Asensin PHPn komennolla:

  • sudo apt-get -y install php

Ja jotta php:ta voitaisiin ajaa tulee sijainnista /etc/apache2/mods-available/ muokata tiedostoa php7.2.conf.

php.png

Merkatut rivit täytyi muuttaa kommenteiksi “#” merkeillä jotta Php:ta voidaan ajaa. Tiedoston muuttaminen vaati sudo oikeudet, tein muutokset seuraavalla komennolla:

  • sudoedit php7.2.conf

Selection_012.png

PHP näytti tulostavan tekstiä oikein sivulle.


b) Tee PHP-ohjelma, joka lukee tietueita MariaDB-tietokannasta.

Kyseisen tehtävän tekemiseen olen käyttänyt linkistä löytyviä ohjeita.

http://terokarvinen.com/2016/read-mysql-database-with-php-php-pdo

Ajoin seuraavan komennon terminaalista jotta php:lla pystyisi hakeman tietoa tietokannasta:

  • sudo apt-get -y install php-mysq
  • systemctl restart apache2

Apache täytyi myös käynnistää uudelleen jotta php voi tulostaa tietokannan tietoja weppisivulle.

Muutin kotihakemiston public_html kansiosta löytyvää indexin koodia vastaavanlaiseksi:

Selection_014.png

PHP onnistuneesti luki tietoa tietokannasta ja tulosti ne sivuille.


c) Lisää PHP-ohjelmaasi mahdollisuus lisätä tietueita tietokantaan.

Käytin tunnillakin käyttämäämme koodia pohjana joka löytyy linkistä:

http://terokarvinen.com/2018/php-database-select-and-insert-example-php-pdo

Muokkasin koodiin tietokannan miikatodo Tasks taulun sarakkeet ja koodi ja lopputulokset näyttivät vastaavalta:

Terminal - xubuntu@xubuntu: ~-public_html_016.png

Selection_015.png

Sain lisättyä formin kautta tietoja tietokantaan, ja ne näkyivät myös mariadb:ssä. Poistelin misclickit, kun tietojen lähetyksen jälkeen sivua päivittäessä mikäli formin laatikoissa oli tekstiä loi se automaattisesti tietokantaan taas uuden tehtävän.


 

Advertisements

One thought on “Linux Palvelimet viikko 5”

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s