Webkehityspino, tietokannanhallinta, SQLZoo

Tehtävänanto:

h6. a) Asenna valitsemasi palvelinpuolen weppikehityspino, esimerkiksi LAMP tai Flask.

b) Asenna tietokanta (tietokannanhallintajärjestelmä), esimerkiksi MySQL tai PostgreSQL.

c) Pelaa SQLZoo:ta. Ei tarvitse dokumentoida jokaista ratkaisua.

d) Kokeile tietokannassasi tietueiden luontia, lukemista, muokkaamista ja poistamista (CRUD).

LAMP:in ja MySQL:n asennus

Koska tein tätä aluksi vanhan tehtävänannon mukaan asensin itselleni LAMP:in ja MySQL:n. Päädyin howtoubuntu-sivulle etsiessäni LAMP:in asennusohjeita ja seurasin niitä: http://howtoubuntu.org/how-to-install-lamp-on-ubuntu . Tuolta sivulta siirryin DigitalOceanin ohjeeseen sillä se oli hiukan kattavampi: https://www.digitalocean.com/community/tutorials/how-to-install-linux-apache-mysql-php-lamp-stack-on-ubuntu .

Koska Apachen olin jo asentanut, ennen kuin aloitin tehtävän, jatkoin DigitalOceanin ohjeen mukaisesti asentamalla MySQL:n komennolla:

sudo apt-get install mysql-server libapache2-mod-auth-mysql php5-mysql

Koska pyöritän Xubuntua livetikulta, en asettanut root salasanaa, vaikka asennuksessa niin kehotettiin. Jos kyseessä olisi tuotantoon menevä serveri tämä tulisi tietenkin asettaa.

Seuraavaksi aktivoin MySQL:n komennolla:

sudo mysql_install_db

Vielä yksi komento ja MySQL:n asennus olisi valmis:

sudo /usr/bin/mysql_secure_installation

Tässä vaiheessa MySQL kyselee erilaisia asetuksia. Itse päädyin seuraaviin: Setting the root password ensures that nobody can log into the MySQL
root user without the proper authorisation.

Set root password? [Y/n] n
… skipping.

By default, a MySQL installation has an anonymous user, allowing anyone
to log into MySQL without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] y
… Success!

Normally, root should only be allowed to connect from ’localhost’.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] y
… Success!

By default, MySQL comes with a database named ’test’ that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] n
… skipping.

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] y
… Success!

Cleaning up…

All done!  If you’ve completed all of the above steps, your MySQL
installation should now be secure.

Thanks for using MySQL!

En poistanut tietokantaa ”test” sillä halusin pitää jonkinlaisen testausympäristön asennettuna.

Seuraavaksi asensin ohjeiden mukaisesti PHP:n. Se onnistui komennolla:

sudo apt-get install php5 libapache2-mod-php5 php5-mcrypt

Seuraavaksi muokattiin apachen asetuksia ja luotiin testisivu ohjeiden mukaisesti:

sudo nano /etc/apache2/mods-enabled/dir.conf

Kopioin esimerkin mukaisen tekstin nanoon:

<IfModule mod_dir.c>

 DirectoryIndex index.php index.html index.cgi index.pl index.php inde$

</IfModule>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

Testi-sivu luotiin myös nanolla:

sudo nano /var/www/info.php

Testi-sivulle tuli lyhyt pätkä PHP:tä :

<?php
phpinfo();
?>

Tallennuksen jälkeen uudelleenkäynnistin Apachen ja yritin päästä sivulle komennolla firefox http://localhost/info.php. Sain tutun 404 virheilmoituksen. Käynnistin serverin uudestaan,  mutta sama ilmoitus tuli edelleen. Tarkistin vielä uudestaan että jokaisessa kohtaa oli oikeat tiedot. Tämän jälkeen käynnistin serverin uudestaan ja kaikki tuntui toimivan. Johonkin oli ilmeisesti jäänyt koipioidessa kirjoitusvirhe. Sain eteeni PHP:n info-sivun:

phpinfo() - Mozilla Firefox_002

SQLZoo

Tein osan SQLZoon perusharjoituksista.

Harjoittelin select lauseita:

Selection_003

Select selectin sisällä:

Selection_004

Ja SUM, COUNT funktioita sekä GROUP BY ja HAVING käyttöä

Selection_005

Tietuiden luonti, lukeminen, muokkaaminen ja poistaminen eli CRUD

Tätä osiota tehdessäni käytin hyväkseni W3Schoolin SQL-osiota:

http://www.w3schools.com/sql/default.asp

Käynnistetään MySQL komennolla sudo mysql. Tämän jälkeen luodaan uusi tietokanta nimeltä testi komennolla CREATE DATABASE testi; ja siirrytään käyttämään kyseistä tietokantaa komennolla USE testi; .

CREATE

Luon tietueen Gadgets ja annan sille joitakin muuttujia:

CREATE TABLE Gadgets ( GadgetID int, Model varchar(100), Owner varchar(50));

Tämän jälkeen luodaan jotain luettavaa:

INSERT INTO Gadgets VALUES (’1′,’Motorola MotoG’,’Lauri Alho’);

INSERT INTO Gadgets VALUES (’2′,’Macbook Pro’,’Antti Lehmussaari’);

Read eli SELECT

mysql> SELECT Model FROM Gadgets;
+—————-+
| Model          |
+—————-+
| Motorola MotoG |
| Macbook Pro    |
+—————-+
2 rows in set (0.00 sec)

mysql> SELECT GadgetID, Owner FROM Gadgets ORDER BY Owner;
+———-+——————-+
| GadgetID | Owner             |
+———-+——————-+
|        2 | Antti Lehmussaari |
|        1 | Lauri Alho        |
+———-+——————-+
2 rows in set (0.00 sec)

UPDATE

mysql> UPDATE Gadgets SET Owner=’Frans the Cat’ WHERE Owner=’Antti Lehmussaari’;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0

mysql> SELECT GadgetID, Owner FROM Gadgets;
+———-+—————+
| GadgetID | Owner         |
+———-+—————+
|        1 | Lauri Alho    |
|        2 | Frans the Cat |
+———-+—————+

mysql> UPDATE Gadgets SET Model=’IPhone5S’WHERE GadgetID=’1′;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0

mysql> SELECT Owner, Model FROM Gadgets;
+—————+————-+
| Owner | Model |
+—————+————-+
| Lauri Alho | IPhone5S |
| Frans the Cat | Macbook Pro |
+—————+————-+

DELETE

mysql> DELETE FROM Gadgets WHERE Owner=’Lauri Alho’;
Query OK, 1 row affected (0.00 sec)

mysql> SELECT * FROM Gadgets;
+———-+————-+—————+
| GadgetID | Model | Owner |
+———-+————-+—————+
| 2 | Macbook Pro | Frans the Cat |
+———-+————-+—————+

Mainokset

Vastaa

Täytä tietosi alle tai klikkaa kuvaketta kirjautuaksesi sisään:

WordPress.com-logo

Olet kommentoimassa WordPress.com -tilin nimissä. Log Out /  Muuta )

Google+ photo

Olet kommentoimassa Google+ -tilin nimissä. Log Out /  Muuta )

Twitter-kuva

Olet kommentoimassa Twitter -tilin nimissä. Log Out /  Muuta )

Facebook-kuva

Olet kommentoimassa Facebook -tilin nimissä. Log Out /  Muuta )

w

Muodostetaan yhteyttä palveluun %s