2011. február 11., péntek

JBoss-orientált fejlesztőkörnyezet kialakítása - 1.

Frissítve: 2011.09.02.

A fejlesztők körében gyakori, hogy Windows-on fejlesztenek és Linux alatt csak üzemeltetik az alkalmazásokat. Ezzel korábban én is így voltam, azonban nemrég elhatároztam hogy kliens oldalon is áttérek a Linuxra, így ennek a lépéseit fogom most ismertetni. A váltás után leginkább az Eclipse megjelenésével nem voltam megbarátkozva, de erről a blog következő részében még részletesen fogok írni.

A fejlesztő környezetet az Ubuntu 10.10, SunJDK 6, MySQL 5.1, Eclipse 3.5, JBoss 5.1, JBoss Seam 2.2 és JBoss Tools 3.1 eszközökből állítottam össze.

Ubuntu 10.10
A képfájlt az Ubuntu letöltési oldaláról mentettem le. A telepítési folyamat elég egyszerű volt, olyan next->next->finish jellegű. A telepítés befejezésével egy teljesen használható rendszert kaptam, nem kellett külön meghajtó programokat keresgélnem és feltelepítenem mint Windows alatt, a bluetooth-tól kezdve a webkameráig minden egyből működött. Érdemes még megemlítenem, hogy más disztribúciókhoz képest az Ubuntu 10.10 alapértelmezett megjelenése is kifejezetten jóra sikerült, csak a fontok terén kellett egy kicsit utána állítanom.

Általában többféle java implementáció is megtalálható a gépemen, azonban legtöbbször a SUN megvalósítását szoktam használni. A Sun JDK telepítéshez először felvettem a sun-os repositoryt, majd telepítettem a csomagokat.
sudo add-apt-repository ppa:ferramroberto/java
sudo apt-get update
sudo apt-get install sun-java6-jdk sun-java6-plugin sun-java6-fonts
Mivel még régebben felraktam az OpenJDK-t, így az alapértelmezett Java-t át kellett állítanom a Sun JDK-ra. Ehhez megnéztem, hogy milyen Java implementációim vannak jelenleg: sudo update-java-alternatives -l, majd kiválasztottam a felsorolásból a java-6-sun-t: sudo update-java-alternatives -s java-6-sun. Végül a java -version -al megbizonyosodtam az átállás sikerességéről.

Minden fejlesztőnek van egy kedvenc keretrendszere, az enyém a JBoss Seam. Már jó pár éve használom és eddig nem okozott csalódást. Azt hiszem nem árulok el nagy titkot azzal, hogy a blogom olvasói még sokat fognak vele  találkozni. Visszatérve a telepítésre, letöltöttem a JBoss Seam 2.2 -es verzióját, majd kicsomagoltam a /usr/local/seam könyvtárba.

A JBoss 5.1 szervert kicsomagoltam az unzip jboss-5.1.0.GA-jdk6.zip paranccsal a /usr/local/jboss-5.1.0.GA könyvtár alá, majd készítettem egy szimbolikus linket: ln -s jboss-5.1.0.GA jboss. A jboss frissítése esetén mostmár csak a linket kell átállítani, így a /usr/local/jboss mindig az aktuális szerverre fog mutatni. Mivel a JBoss alatti könyvtárszerkezet nem követi a Linuxos fájlrendszer konvenciókat, ezért a  jboss/server/all/log, jboss/server/all/tmp és jboss/server/all/work könyvtárakra létrehoztam egy-egy szimbolikus linket, melyek a /var/log/jboss, /var/jboss/tmp és /var/jboss/work könyvtárakra mutatnak. 
A mysql eléréséhez, a mysql-connector-java.jar JDBC driver-t bemásoltam  a jboss/server/all/lib könyvtár alá. A datasource bekonfigurálásához a jboss/docs/examples/jca/mysql-ds.xml sablont átmásoltam a jboss/server/default/deploy könyvtárba majd módosítottam az alábbiak szerint:

<datasources>
  <local-tx-datasource>
   <jndi-name>testDatasource</jndi-name>
   <connection-url>
    jdbc:mysql://localhost:3306/testDB
   </connection-url>
   <driver-class>com.mysql.jdbc.Driver</driver-class>
   <user-name>testUsr</user-name>
   <password>testPwd</password>
   <exception-sorter-classname>
    org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter
   </exception-sorter-class-name>
   <metadata>
    <type-mapping>mySQL</type-mapping>
   </metadata>
  </local-tx-datasource>
</datasources>

A következő pár lépést akkor érdemes elvégezni, ha a JBoss-t Linuxos szolgáltatásként is el szeretnénk indítani. Hozzunk létre egy jboss nevű felhasználót akinek a nevében fog majd futni a JBoss alkalmazás szerver: useradd -s /bin/bash -g jboss jboss. A jboss felhasználónak biztonsági okok miatt ne adjunk meg jelszót, így csak root -ként lesz lehetőségünk a jboss felhasználóra váltani a su jboss paranccsal. Ha eddig nem a jboss felhasználóval dolgoztunk, módosítsuk a /usr/local/jboss/ alatti fájlok tulajdonosi és csoport jogait a jboss felhasználóra ill. csoportra: chown jboss:jboss /usr/local/jboss/ -R. Ahhoz, hogy a JBoss szervert linuxos szolgáltatásként tudjuk futtatni, a jboss/bin/jboss_init_redhat.sh scriptet át kell másolni az /etc/init.d/ könyvtárba, majd be kell állítani a JBOSS_HOME, JBOSS_USER, JBOSS_CONF, JAVA_PATH változókat és az update-rc.d jboss_init_redhat.sh defaults parancsal telepíteni az alapértelmezett futási szintekre, melynek az eredményét a chkconfig -l paranccsal ellenőrizhetjük. Ezután a JBoss-t az /etc/init.d/jboss_init_redhat.sh start paranccsal tudjuk indítani.

Feltelepítettem a mysql szerver és kliens programot: apt-get install mysql-server mysql-client, majd a mysql biztonságosabb használata érdekében kiadtam a következő parancsot:/usr/bin/mysql_secure_installation és végrehajtottam az alábbi lépéseket. Ezután az /etc/mysql/my.cnf állományban, a [mysqld] sor után felvettem a következő változókat:

lower_case_table_names=1 
init_connect='SET NAMES utf8'
init_connect='SET collation_connection = utf8_general_ci'
default-character-set=utf8
character-set-server=utf8
collation-server=utf8_general_ci 
skip-character-set-client-handshake 

Linux alatt a mysql táblanevek alapértelmezettként case-sensitive-ek, így ezt megváltoztattam  a lower_case_table_names változó 1-re állításával. A karakterkódolási problémák elkerülése véget pedig beállítottam, hogy a mysql globálisan az utf8-at használja.
A változók hozzáadása után újraindítottam a mysql-t és csatlakoztam az adatbázishoz, majd létrehoztam egy testDB nevű adatbázist: CREATE DATABASE testDB CHARACTER SET utf8 COLLATE utf8_general_ci; és készítettem egy testUsr nevű felhasználót akihez hozzárendeltem a megfelelő jogokat: GRANT ALL PRIVILEGES ON testDB.* to 'testUsr' IDENTIFIED BY 'testPwd' WITH GRANT OPTION;

Végül összegyűjtöttem azokat a parancsokat, melyeket gyakrabban használok a mysql üzemeltetése során.

A mysql szerver újraindítása: 
service mysql restart
Sql szkript importálása a kiválasztott adatbázisba: 
mysql --user=testUsr --password=testPwd testDB < sqlscript.sql
Backup készítése a kiválasztott adatbázisról: 
mysqldump --user=testUsr --password=testPwd testDB > backup.sql
Adatbázisok megtekintése:
mysql -u testUsr --password=testPwd testDB --execute 'show databases'
A kiválasztott adatbázishoz tartozó táblák megtekintése:
mysql --user=testUsr --password=testPwd testDB --execute 'show tables'
Az alapértelmezett mysql engine megtekintése:
 
mysql -u testUsr --password=testPwd testDB --execute 'show engines' 
A mysql változók megtekintése: 
mysql -u testUsr --password=testPwd --execute 'show variables'
Mysq felhasználók listázása: 
mysql --user=testUsr --password=testPwd testDB --execute 'SELECT User, Host, Password FROM mysql.user';


A cikk következő részében a kedvenc fejlesztőeszközömmel, az Eclipse-el fogom folytatni a JBoss-orientált fejlesztőkörnyezet kialakítását. A cikk azoknak is hasznos lesz, akik nincsenek megelégedve az Eclipse alapértelmezett kinézetével Linux alatt.