H5

Lähteet lisätty pohjalle tekstin seasta jotta blogi olisi selvelmpi. Blogi myös lisätty oikeaan kategoriaan. 28.09.2018

Kurssi lisätty lähteisiin. 02.11.2018

 

Tehtävän tekemisessä käytetty käyttöjärjestelmä Xubuntu18.04 x64

Ennen kuin katsoin tehtävää ajoin muutaman komennon,

setxkbmap fi ; sudo apt-get update ; sudo apt-get install -y chromium-browser leafpad gedit

setxkbmap fi tietenkin vaihtaa näppäinkielen suomeksi, apt-get update hakee päivitetyt tiedot paketinhallintaan, apt-get install -y chromium-browser leafpad gedit asentaa 3 ohjelmaa.

Muista sudo ufw allow 22/tcp jos olet etäyhteydessä koneesseen!!

sudo ufw enable

sudo ufw allow 80/tcp jos sinulla on julkinen nettisivu.

ufw on tulimuuri jota ei ole pakollista laittaa vielä käyntiin mutta eipä siitä haittaakaan ole.

ufw pitää kuitenkin laittaa käyntiin kun asentaa mysql tai mariadbn

a) Asenna LAMP (M=MariaDB).

Apache2

Aloitin asennuksen Apache2lla ajamalla komennon sudo apt-get install -y apache2

Kun apache2 oli asentunut kokeilin chromium selaimella vastaako localhost.

4

Sitten tyhjensin Apache2 oletussivun komennolla echo "Default" | sudo tee /var/www/html/index.html

Asensin sitten myös curlin ja lynxin komennolla sudo apt-get install -y curl lynx helpottamaan testausta.

xubuntu@xubuntu:~$ curl localhost
Default

Sitten laitoin käyttäjien nettisivut toimintaan.

sudo a2enmod userdir
sudo systemctl restart apache2
xubuntu@xubuntu:~$ mkdir public_html

cd public_
nano index.html

xubuntu@xubuntu:~/public_html$ curl localhost/~xubuntu/
Xubuntun sivu

PHP

Kun apache2 toimi ryhdyin asentamaan phpta ajamalla ensin komennon

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

Jonka jälkeen kommentoin ifmoduulin pois käyttämällä komentoa

sudoedit /etc/apache2/mods-available/php7.2.conf

php1.png

kun se oli tehty tietenkin käynnistin apache2 uudelleen.

sudo systemctl restart apache2

Sitten testasin toimiiko php, ensin tietenkin muutin index.html tiedoston index.php tiedostoksi komennolla mv index.html index.php

Sitten käyttämällä gedittiä kirjoitin index.php tiedostoon php testin print(2+2)

xubuntu@xubuntu:~/public_html$ curl localhost/~xubuntu/
Php testi
4

Php näyttäisi toimivan!

Mariadb

MUISTA TULIMUURI sudo ufw enable

Kun PHP oli toiminnassa siirryin mariadbn asennukseen.

sudo apt-get install -y mariadb-client mariadb-server php-mysql

Mariadb-client ja server ovat pakollisia ja php-mysql on php lisäosa joka toimii myös mariadbn kanssa vaikka siinä lukee mysql.

Sitten kirjauduin mariadb root käyttäjällä mariadbhen ja laitoin sille salasanan.

Muista käyttää vahvoja salasanoja.

sudo mariadb --user=root --password

Komennolla

CREATE DATABASE nikolist CHARACTER SET utf8;

teet uuden tietokannan jonka nimi on nikolist jossa voi käyttää utf8 merkistöä.

Sitten tein uuden käyttäjän komennolla

GRANT ALL ON nikolist.* TO nikolist@localhost IDENTIFIED BY 'salasana';

Käyttäjän nimeksi kannattaa yleensä laittaa sama nimi kuin tietokannalla, ja salasanaksi ei kannata tietenkään laittaa salasana vaan valita vahva salasana ja pistää se muistiin esimerkiksi leafpadiin koska tulet vielä tarvitsemaan sitä.

Sitten poistutaan root käyttäjältä exit komennolla.

Uudelle käyttäjälle kirjaudutaan mariadb --user=nikolist --password komennolla ja sitten tietenkin syötetään salasana.

Käyttämällä USE nikolist komentoa vaihdat käytössäolevan tietokannan nikolistiksi.

CREATE TABLE consoles(id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(1024)); Komennolla teet uuden taulun nimeltä consoles johon tulee id numero ja nimi VARCHAR on merkkien määrä mitä saat kirjoittaa name kohtaan.

Komennoilla

INSERT INTO consoles(name) VALUES ('NES');

INSERT INTO consoles(name) VALUES ('SNES');

INSERT INTO consoles(name) VALUES ('Nintendo 64');

Lisäsin tauluun NES SNES ja Nintendo 64sen.

SELECT * FROM consoles;

Näytti kaiken mitä taulu consoles sisälsi.

DELETE FROM consoles WHERE id=1;

Komennolla voit poistaa taulusta tietoja.

Sitten vielä lisäsin automaattisen kirjautumisen käyttäjälle nikolist.

Ensin tietenkin menin xubuntu käyttäjän kotihakemistoon cd komennolla.

nano .my.cnf komennolla tein uuden tiedoston johon kirjoitin

[client]
user=nikolist
password=salasana
database=nikolist

Sitten chmod og-rwx .my.cnf komennolla otin muilta käyttäjiltä oikeudet tiedoston käyttöön pois.

Kun se oli tehty mariadb komennolla pääsi suoraan käyttäjälle sisään ilman salasanaa.

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

En osaa PHP kieltä melkein yhtään joten kopioin http://terokarvinen.com/2016/read-mysql-database-with-php-php-pdo koodin ja muutin sitä toimimaan omilla asetuksillani.

Ymmärrän ainakin sen verran että koodi muodostaa yhteyden mariadbn kanssa halutulla käyttäjällä ja tulostaa sieltä halutun taulun.

php2.png

Koodi ei tietenkään toiminut heti joten katsoin lokeista mikä voisi olla vialla.

cd /var/log/apache2

tail error.log

[php7:error] [pid 16703] [client ::1:42060] PHP Fatal error: Uncaught PDOException: could not find driver in /home/xubuntu/public_html/index.php:14\ jne jne jne.

Päättelin tästä että php-mysql paketti olisi unohtunut mutta se ei ollut ongelmana joten käynnistin apache2 uudelleen sudo systemctl restart apache2 komennolla ja se toimi.

xubuntu@xubuntu:~/public_html$ curl localhost/~xubuntu/
Php testi mariadb

2 SNES

3 Nintendo 64

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

Sitten aloin miettiä miten PHPlla lisätään tietueita tietokantaan.

Lisäsin ensin kaavakkeen mihin voi kirjoittaa ja tietoja ja lähettää ne napilla.

curl php

Sitten lisäsin muuttujan $name = $_GET["name"]; joka hakee arvonsa kaavakkeen teksti kentästä nimeltä name.

En muistanut miten lisäys tauluun toimi joten kuinka ollakkaan terokarvinen.com sivulta löysin esimerkin http://terokarvinen.com/2018/php-database-select-and-insert-example-php-pdo hakusanoilla php database insert.

Sieltä nappasin koodipätkän ja muutin taulun nimen nikolistiksi.

php3

Se toimi melkein moitteettomasti…

Listaan lisääntyy aina uudelleen viimeksi lisätty asia kun sivun lataa uudelleen.

Osaamiseni PHPsta ei riitä tämän ongelman ratkaisemiseen.

Lopullinen koodi:

koodit.png

Lähteet:

terokarvinen.com

http://terokarvinen.com/2016/read-mysql-database-with-php-php-pdo  Koodi tietueiden lukemiseen mariadbstä PHPlla.

http://terokarvinen.com/2018/php-database-select-and-insert-example-php-pdo Koodi tietueiden lisäämiseen mariadbhen PHPlla.

http://terokarvinen.com/2018/aikataulu-%E2%80%93-linux-palvelimet-ict4tn021-3003-to-8-14-alkusyksy-2018p1-%E2%80%93-5-op

Advertisements