Instalace aplikačního serveru JBoss
Tento příspěvek stručně popisuje, jak nainstalovat aplikační server JBoss na server na platformě GNU Linux CentOS 5. Instalované prostředí bude sloužit pro vývoj webových aplikací postavených na jazyku Java.
Tento příspěvek stručně popisuje, jak nainstalovat aplikační server JBoss na server na platformě GNU Linux CentOS 5. Instalované prostředí bude sloužit pro vývoj webových aplikací postavených na jazyku Java.
Instalace JDK
Dřív než se pustíme do instalace samotného aplikačního serveru, musíme mít v systému funkční javu. Je proto potřeba naistalovat Java SE Development Kit (JDK). Já jsem použil verzi Sun JDK, kterou lze získat z nasledující adresy http://java.sun.com/javase/downloads/widget/jdk6.jsp pro JDK 6.0 (vybrat jdk-6u<X>-linux-i586-rpm.bin
, kde <X> je číslo posledního update, aktuálně <X>=19) a http://java.sun.com/javase/downloads/index_jdk5.jsp pro JDK 5.0. Variantu JDK od Sun-u (naproti OpenJDK) jsem zvolil na základě dokumentace JBoss AS a také zkušeností některých administrátorů. Nainstalujeme Sun JDK
[root@nps1:~]$ chmod 755 jdk-6u19-linux-i586-rpm.bin
[root@nps1:~]$ ./jdk-6u19-linux-i586-rpm.bin
Můžeme ověřit, že se JDK podařilo naistalovat (instaluje se do /usr/java
)
[root@nps1:~]$ java -version java version "1.6.0_19" Java(TM) SE Runtime Environment (build 1.6.0_19-b04) Java HotSpot(TM) Client VM (build 16.2-b04, mixed mode, sharing)
Vytvoříme si symbolické odkazy na javu z důvodu přehlednosti a případných pozdejších změn v administraci JBoss AS (např. změna verze javy, více verzí javy, atd.)
[root@nps1:~]$ mkdir -p /opt/java
[root@nps1:~]$ ln -s /usr/java/jdk1.6.0_19 /opt/java/jdk
Dále budeme potřebovat nastavit hodnoty proměnných pro javu. Můžeme si například v /etc/profile.d/
vytvořit skript java.sh
s následujícím obsahem:
[root@nps1:~]$ vim /etc/profiles.d/java.sh ######################## # JAVA variables setup # ######################## JAVA_HOME=/opt/java/jdk PATH=$PATH:$JAVA_HOME/bin export JAVA_HOME PATH
přidáme právo pro spouštění a vyexportujeme pro aktualizaci proměnných:
[root@nps1:~]$ chmod 755 /etc/profile.d/java.sh
[root@nps1:~]$ sh /etc/profile.d/java.sh
Instalace JBoss AS
V zásadě máme dvě možnosti instalace. Kompilace ze zdrojových kódů nebo instalace z binárních balíčků. Já jsem zvolil instalaci z binárních balíčků. Balíček si můžeme stáhnout ze stránek projektu na adrese http://www.jboss.org/jbossas/downloads.html. Verzi jsem zvolil 5.1.0 (poslední stable release, verze 6.0.0 byla v té době ve druhé milestone verzi). Vytvoříme si cílový adresář pro JBoss AS, do kterého rozbalíme získaný balíček JBoss AS (zip soubor, jboss-5.1.0.GA.zip
)
[root@nps1:~]$ mkdir -p /srv
[root@nps1:~]$ unzip -d /srv jboss-5.1.0.GA.zip
Vytvoříme symlink na kořenový adresář JBoss AS
[root@nps1:~]$ ln -s /srv/jboss-5.1.0.GA /opt/java/jboss
Stejně jako v případě javy, budeme potřebovat nastavit hodnoty proměnných pro JBoss AS. Vytvoříme si tedy skript jboss.sh
v /etc/profile.d
s následujícím obsahem:
[root@nps1:~]$ vim /etc/profile.d/jboss.sh ############################ # JBoss AS variables setup # ############################ JBOSS_HOME=/opt/java/jboss PATH=$PATH:$JBOSS_HOME/bin export JBOSS_HOME PATH
upravíme práva skriptu a aktualizujeme proměnné
[root@nps1:~]$ chmod 755 /etc/profile.d/jboss.sh
[root@nps1:~]$ sh /etc/profile.d/jboss.sh
V této chvíli máme již všechno připraveno pro spuštění JBoss AS. Aplikační server spouštíme skriptem run.sh
, který se nachází v $JBOSS_HOME/bin
[root@nps1:~]$ sh $JBOSS_HOME/bin/run.sh
což odpovídá spouštění s konfigurací
[root@nps1:~]$ sh $JBOSS_HOME/bin/run.sh -c default -b 127.0.0.1
Dostupnost si ověříme na URL http://localhost:8080. JBoss AS předvoleně poslouchá jenom na localhost (127.0.0.1). Parametrem -c
spouštěcího skriptu určujeme konfiguraci aplikačního serveru. Jednotlivé konfigurace se nacházejí v adresáři $JBOSS_HOME/server
. Stručný popis několika základních konigurací nacházejících se v instalačním balíčku je možno najít v online dokumentaci. Parametrem -b
určujeme rozsah adres, ze kterých je možno přistupovat na server. Chceme-li povolit přístup na server z libovolné adresy a s konfigurací default
, spustíme server příkazem
[root@nps1:~]$ sh $JBOSS_HOME/bin/run.sh -c default -b 0.0.0.0
Aby jsme nespouštěli JBoss AS pod uživatelem root
, vytvoříme si pro tuto službu samostatného uživatele a převedeme na něj vlastnická práva souborů aplikace
[root@nps1:~]$ useradd -r jboss
[root@nps1:~]$ chown -Rf /srv/jboss-5.1.0.GA
a nyní spustíme JBoss AS pod uživatelem jboss
[root@nps1:~]$ su - jboss -c $JBOSS_HOME/bin/run.sh
případně s konkrétnimi parametry.
JBoss SysV init
Aby jsme nemuseli spouštět manuálně, vytvoříme si pro JBoss AS spouštecí sysV init skript. Vzorové init skripty pro některé distribuce (Red Hat, Fedora, openSuSE) se již nacházejí v adresáři $JBOSS_HOME/bin
. Vzhledem k distribuci použité na našem serveru jsem zvolil variantu pro distribuci Red Hat (soubor init_jboss_redhath.sh
). Vzorový init skript zkopírujeme do adresáře /etc/init.d
[root@nps1:~]$ cp $JBOSS_HOME/bin/init_jboss_redhath.sh /etc/init.d/jboss
Náš nový init skript /etc/init.d/jboss
ještě upravíme tak, aby odpovídal konfiguraci pro chkconfig
. Do “hlavičky” skriptu doplníme potřebné direktivy (i s křížkem #)
[root@nps1:~]$ vim /etc/init.d/jboss # chkconfig: 2345 85 15 #runlevely S-priorita K-priorita # description: JBoss Application Server # processname: jboss # pidfile: /var/run/jboss.pid
Dále je potřeba v skriptu upravit hodnoty některých direktiv a jíné doplnit
JBOSS_HOME=${JBOSS_HOME:-"/opt/java/jboss"} JBOSS_USER=${JBOSS_USER:-"jboss"} #uživatel pod kterým bude služba běžet JAVAPTH=${JAVAPTH:-"/opt/java/jdk"} JBOSS_CONF=${JBOSS_CONF:-"default"} #konfiguračny profil JBOSS_HOST="0.0.0.0" #rozsah adres, ze kterých je možno přistupovat
Zaregistrujeme službu chkconfigem a aktivujeme
[root@nps1:~]$ chkconfig --add jboss (název služby je shodný s názvem init skriptu)
[root@nps1:~]$ chkconfig jboss on
Program chkconfig
nám automaticky vytvoří symlinky v příslušných rcX
profilech (adresáře /etc/rc[0..6].d
) podle hodnot direktivy chkconfig v init skripte. Ověříme
[root@nps1:~]$ chkconfig --list jboss jboss 0:off 1:off 2:on 3:on 4:on 5:on 6:off
Teď službu JBoss AS spustíme {zastavíme|restartujeme}
[root@nps1:~]$ /etc/init.d/jboss start {stop|restart}
nebo
[root@nps1:~]$ service jboss start {stop|restart}
SSL na straně JBoss AS
Základním případem použití SSL je povolení SSL na straně JBoss AS serveru. V takovém případě budeme přistupovat na web JBoss AS přes protokol HTTPS namísto HTTP. Vzhledem k tomu, že jde o vývojové prostředí, vystačíme si se self-signed certifikátem. Nejdříve si musíme vytvořit úložiště pro uchování páru klíčů a také certifikátu pro JBoss AS server. Pro tento účel použijeme aplikaci keytool
, která se nachází v adresáři $JAVA_HOME/bin
. Vytvoříme si úložiště (podle nové konvence se používá parametr -genkeypair
), které umístíme někam do adresářové struktury dané konfigurace JBoss AS, například do $JBOSS_HOME/server/<konfigurace>/conf/ssl
[root@nps1:~]$ mkdir -p $JBOSS_HOME/server/<konfigurace>/conf/ssl
[root@nps1:~]$ $JAVA_HOME/bin/keytool -genkey -alias <alias> -keyalg RSA -keystore $JBOSS_HOME/server/<konfigurace>/conf/ssl/jboss.keystore
Při vytváření úložište budeme dotázáni na klíč pro úložiště. Dále si vygenerujeme certifikát pro JBoss AS server a uložíme ho do stejného úložiště jako klíče. Při geneování certifikátu budeme dotázáni na některé indetifikační údaje
[root@nps1:~]$ $JAVA_HOME/bin/keytool -export -alias <alias> -keystore $JBOSS_HOME/server/<konfigurace>/conf/ssl/jboss.keystore -file $JBOSS_HOME/server/<konfigurace</conf/ssl/jboss-server.cer
Nakonec upravíme connectory pro JBoss AS web tak, aby bylo možné přistupovat jenom přes HTTPS
[root@nps1:~]$ vim $JBOSS_HOME/server/<konfigurace>/deploy/jbossweb.sar/server.xml ... <!-- A HTTP/1.1 Connector on port 8080 <Connector protocol="HTTP/1.1" port="8080" address="${jboss.bind.address}" connectionTimeout="20000" redirectPort="8443" /> --> ... <!-- SSL/TLS Connector configuration using the admin devl guide keystore --> <Connector protocol="HTTP/1.1" SSLEnabled="true" port="8443" address="${jboss.bind.address}" scheme="https" secure="true" clientAuth="false" keystoreFile="${jboss.server.home.dir}/conf/ssl/jboss.keystore" <!-- cesta k ůložišti cetifikátu a klíče --> keystorePass="<heslo_k_ulozisti≫" sslProtocol = "TLS" /> ...
Dostupnost JBoss AS ověříme na URL https://<domena_JBoss_AS>:8443.