Edellisessä osassa kytkettiin uimarit uimaseuraan siten, että uimaseura tietää aina siihen kuuluvat uimarit.
Tässä osassa pyydetään users.cs.helsinki.fi-palvelimelle mysql ja tomcat, sekä asennetaan ohjelmisto UimariHarjoitus. Ohjeessa oletetaan, että yhteydet luodaan laitoksen koneilta.
Kone users.cs.helsinki.fi on tietojenkäsittelytieteen laitoksen opiskelijoille tarkoitettu palvelin, jossa voi ajaa omia ohjelmistoja. MySQL-tietokannan lisäksi users-koneella on mahdollista käyttää sekä Oracle-tietokantaa, että PostgreSQL-tietokantaa. Users-koneelle pääsee kirjautumaan komennolla.
ssh users.cs.helsinki.fi -l <omatunnus>
MySQL-tietokannan saa käyttöön kirjoittamalla users-koneella komennon wanna-mysql. Kun kirjoitat komennon, sinulle luodaan tietokanta ja siihen liittyvä konfiguraatiotiedosto .my.cnf. Huom! Kun ajat komentoa wanna-mysql, ohjelma kysyy myös salasanaa mysql:n root-käyttäjälle. Kirjoita salasana muistiin!
tunnus@users:~$ wanna-mysql Set up the /home/tunnus/.my.cnf configfile. Initializing database in /home/tunnus/mysql directory. Database initialized. Now to start it for the first time, and then secure it. <ohjelma käynnistyy, näet käynnistykseen liittyviä tulosteita> ... PAY ATTENTION TO THIS! New password for your mysql root user: Re-enter new password: Removing anonymous users, test database and remote root account. 110530 14:37:34 [Note] /usr/sbin/mysqld: Normal shutdown 110530 14:37:34 [Note] Event Scheduler: Purging the queue. 0 events 110530 14:37:34 InnoDB: Starting shutdown... 110530 14:37:35 InnoDB: Shutdown completed; log sequence number 0 44233 110530 14:37:35 [Note] /usr/sbin/mysqld: Shutdown complete Start the database with /usr/local/bin/start-mysql Stop with /usr/local/bin/stop-mysql Create databases and users with mysql -u root -p tunnus@users:~$
Kun olet luonut tietokannan, skripti ehdottaa tietokannan käynnistämistä komennolla start-mysql. Tämä skripti ei sovellu tarkoituksiimme, sillä se käynnistää mysql-tietokannan skip-networking -parametrilla. Skip-networking tarkoittaa että palvelin ei ota vastaan TCP-IP-yhteyksiä, jolloin emme saisi tietokantaan yhteyttä JDBC:n (ja JPA:n) yli.
Haluamme käyttää MySQL:ää siten, että palvelimme kuuntelee pyyntöjä jossain tietyssä portissa. Oletusporttia, 3306, ei kannata käyttää, sillä palvelin ja portti on henkilökohtainen. Pyritään käyttäämään käyttäjätunnukseemme liittyvää id:tä portin luonnissa. Jos käyttäjätunnustamme ei näy suoraan konsolissa, saamme sen selville komennolla whoami. Käyttäjätunnukseemme liittyvän käyttäjäid:n löytää komennolla id -u <tunnus>. Tuleva tomcat-asennuksemme käyttää oletuksena käyttäjäid:tä porttina, joten yritetään porttia käyttäjäid+1 mysql:n käyttöön.
tunnus@users:~$ whoami tunnus
tunnus@users:~$ id -u tunnus numero
Käynnistetään mysql arvolla numero + 1. Komento stop-mysql sulkee tietokannan. MySQL-palvelimen sulkeminen vaatii root-käyttäjän salasanan, jonka kirjoitit aiemmin muistiin.
tunnus@users:~$ /usr/sbin/mysqld --port (numero + 1) & tunnus@users:~$ 110530 <aika> [Note] Plugin 'FEDERATED' is disabled. 110530 <aika> InnoDB: Started; log sequence number 0 44233 110530 <aika> [Note] Event Scheduler: Loaded 0 events 110530 <aika> [Note] /usr/sbin/mysqld: ready for connections. Version: '5.1.41-3ubuntu12.10' socket: '/home/tunnus/mysql/socket' port: (numero + 1) (Ubuntu) tunnus@users:~$
Jos käynnistys epäonnistuu, ja saat virheilmoituksen jossa kerrotaan portin olevan käytössä, tai oma käyttäjätunnuksesi on suurempi kuin 65536, etsi vapaa portti väliltä 40000-65000 ja käytä sitä. Komennosta netstat -nap | grep LISTEN | grep tcp saattaa olla hyötyä alkuun pääsemisessä.
Kirjaudutaan tietokantaan ja listataan jo olemassa olevat tietokannat.
tunnus@users:~$ mysql -u root -p Enter password: <anna tähän root-käyttäjän salasana> Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 1 Server version: 5.1.41-3ubuntu12.10 (Ubuntu) Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | +--------------------+ 2 rows in set (0.02 sec) mysql>
Tietokannat information_schema ja mysql ovat oleellisia MySQL-kannan toiminnan kannalta -- älä poista niitä.
Luodaan MySQL-tietokantaan kanta uimarit, ja lisätään sinne uusi käyttäjä jolla on oikeudet uimarit-tietokannan käyttöön. Tietokantaa ei kannata käyttää "arkikäytössä" root-käyttäjän avulla, vaan kannattaa luoda erillinen käyttäjätunnus tietokannan käyttöön.
Kirjaudutaan tietokantaan (oletetaan että tietokanta on päällä).
tunnus@users:~$ mysql -u root -p Enter password: <anna tähän root-käyttäjän salasana> Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 1 Server version: 5.1.41-3ubuntu12.10 (Ubuntu) Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>
Luodaan tietokanta uimarit.
mysql> create database uimarit; Query OK, 1 row affected (0.03 sec) mysql>
Listataan kaikki tietokannat, näemme listalla tietokannan uimarit.
mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | uimarit | +--------------------+ 3 rows in set (0.00 sec) mysql>
Luodaan seuraavaksi käyttäjä u, jolla on salasana u. Käyttäjällä u on oikeudet kirjautua kaikilta koneilta. Lisää käyttäjätunnusten luonnista löytyy MySQL:n manuaalista, osa 12.4.1.1. kuvaa komennon create user syntaksin ja osa 5.4.3 käsittelee käyttäjätunnuksia ja oikeuksia kirjautumiseen.
mysql> create user 'u'@'%' identified by 'u'; Query OK, 0 rows affected (0.01 sec) mysql>
Lisätään käyttäjälle u oikeudet uimarit-tietokannan käyttöön.
mysql> grant all on uimarit.* to 'u'@'%'; Query OK, 0 rows affected (0.02 sec) mysql>
Mainiota! Kirjaudutaan seuraavaksi ulos MySQL-tietokannasta (jota olemme käyttäneet root-tunnuksella), ja kirjaudutaan takaisin sisään käyttäen käyttäjätunnusta u.
mysql> exit
Bye
tunnus@users:~$ mysql -u u -p
Enter password: <tähän käytetään käyttäjätunnuksen u salasanaa, joka asetettiin aiemmin u:ksi>
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.1.41-3ubuntu12.10 (Ubuntu)
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
Listataan seuraavaksi vielä tietokannat ja valitaan käyttöön tietokanta uimarit.
mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | uimarit | +--------------------+ 2 rows in set (0.00 sec) mysql> use uimarit; Database changed mysql>
Kun olemme valinneet tietokannan uimarit käyttöön, voimme seuraavaksi lisätä sinne tauluja. Myöhemmin oma ohjelmamme luo taulut, mutta tehdään nyt testitaulu käsin. Tarkistetaan ensiksi onko tietokannassa tauluja, jonka jälkeen luomme taulun jippii.
mysql> show tables; Empty set (0.00 sec) mysql> create table jippii (id int, viesti varchar(255)); Query OK, 0 rows affected (0.03 sec)
Suorittamalla kyselyn select * from jippii; huomaamme ettei taulussa ole tietoa.
mysql> select * from jippii; Empty set (0.00 sec) mysql>
Noniin, nyt meillä on MySQL tietokanta, käyttäjä ja käyttäjän salasana. Poistetaan vielä taulu jippii, jottei se jää roskaamaan tietokantaa, varmistetaan että taulu poisteettiin, ja lopuksi poistutaan tietokannasta.
mysql> drop table jippii; Query OK, 0 rows affected (0.02 sec) mysql> show tables; Empty set (0.00 sec) mysql> exit; Bye tunnus@users:~$
Seuraavaksi hankimme käyttöömme tomcat-palvelimen. Laitoksella on käytössä tomcatin versio 6, jota olemme käyttäneet myös sovelluksia kehittäessä. Tomcat-palvelimen saa käyttöön komennolla wanna-tomcat.
tunnus@users:~$ wanna-tomcat This script will create a new tomcat environment for you in directory /home/tunnus/tomcat. Please see http://users.cs.helsinki.fi/tomcat for more information. Do you want to create a new tomcat installation in /home/tunnus/tomcat (y/n)? <syötä y> .... Tomcat environment has been setup for you. Now you can run 'start-tomcat'. tunnus@users:~$
Käynnistetään palvelin komennolla start-tomcat.
tunnus@users:~$ start-tomcat Using CATALINA_BASE: /home/tunnus/tomcat Using CATALINA_HOME: /usr/share/tomcat6 Using CATALINA_TMPDIR: /home/tunnus/tomcat/temp Using JRE_HOME: /usr/lib/jvm/java-6-sun Using CLASSPATH: /usr/share/tomcat6/bin/bootstrap.jar Tomcat has been started. It should be visible through URL http://t-tunnus.users.cs.helsinki.fi/ If you have problems, your tomcat log files are available from /home/tunnus/tomcat/logs Please, remember to stop (with stop-tomcat) tomcat instances with are not used. tunnus@users:~$
Kun menet web-selaimella osoitteeseen http://t-<tunnus>.users.cs.helsinki.fi/, näet sivun jossa on otsikkona viesti "It works!".
Tomcat-palvelimen saa suljettua komennolla stop-tomcat.
Lisätään seuraavaksi oma ohjelmistomme users.cs.helsinki.fi-tietokoneelle.
Lisää projektin kirjastoihin MySQL JDBC ajuri.

Luodaan uusi tietokantayhteys Services-välilehdellä. Valitse oikealle hiirennapilla Databases, ja New Connection. Uudessa ikkunassa valitse ajuriksi MySQL (Connector/J driver) ja täytä kentät. Kenttään Port tulee aiemmin valitsemasi mysql-portti.

Muutetaan persistence.xml-tiedostoa siten, että viittaamme ensiksi persistence.xml-tiedostoa siten, että käytössämme on viimeksi luotu JDBC-yhteys.

Muuta myös taulujen luontistrategiaksi Create.
Valitse projekti oikealla hiirennapilla, ja valitse Clean and Build. Tämä luo projektista war-tiedoston (web application archive) projektin dist-kansioon. Projektilla UimariHarjoitus on nyt tiedosto UimariHarjoitus.war dist-kansiossa.
Kopioidaan paketti users-koneelle.
tunnus@kone:~$ scp ~/NetBeansProjects/UimariHarjoitus/dist/UimariHarjoitus.war users.cs.helsinki.fi:
Mennään koneelle users.cs.helsinki.fi, ja siirretään pakkaus tomcat-kansiossa olevaan webapps-kansioon.
tunnus@kone:~$ ssh users.cs.helsinki.fi tunnus@users:~$ mv UimariHarjoitus.war tomcat/webapps/ tunnus@users:~$
Jos tomcat on päällä, pyrkii se käynnistämään sovelluksen automaattisesti. Näet tomcatin logeista tomcat/logs/catalina.out ohjelman logiin kirjoittamat viestit. Jos tomcat ei ole päällä, käynnistä se, ja selaa osoitteeseen http://t-tunnus.users.cs.helsinki.fi/UimariHarjoitus/Lista.
Lisätään muutama uimari käyttöliittymän kautta ja kirjaudutaan tietokantaan.
tunnus@users:~$ mysql -u u -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 9 Server version: 5.1.41-3ubuntu12.10 (Ubuntu) Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | uimarit | +--------------------+ 2 rows in set (0.00 sec) mysql> use uimarit; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed mysql> show tables; +-------------------+ | Tables_in_uimarit | +-------------------+ | SEQUENCE | | UIMARI | | UIMASEURA | | UIMASEURA_UIMARI | +-------------------+ 4 rows in set (0.00 sec) mysql> select * from UIMASEURA; +----+----------------+ | ID | NIMI | +----+----------------+ | 1 | Uimaseura | | 51 | Uusi Uimaseura | +----+----------------+ 2 rows in set (0.00 sec) mysql> select * from UIMARI; +----+-----------------+--------------+--------------+ | ID | NIMI | SYNTYMAVUOSI | UIMASEURA_ID | +----+-----------------+--------------+--------------+ | 2 | Oiva Uimari | 1944 | 1 | | 52 | Jaska Vauhdikas | 3431 | 1 | +----+-----------------+--------------+--------------+ 3 rows in set (0.00 sec) mysql> exit; Bye
Muista sulkea tomcat ja mysql kun et käytä niitä enää!