Hlavní navigace

PC-BSD jails: serverové aplikace a služby počtvrté

26. 8. 2013
Doba čtení: 6 minut

Sdílet

Pokračujeme v našem seriálu, ve kterém si ukazujeme výhody a praktické využití konceptu jails v systému PC-BSD. V minulém díle byly popsány instalace a zprovoznění dvou jailů k provozu, testování a vývoji aplikací v PHP. V dnešním dílu zamíříme na trochu jinou oblast – webové a aplikační servery.

F. Webový server Tomcat

V tomto jailu bude instalován webový server a servletový kontejner Apache Tomcat.

F2) instalace programů a aplikací

Instalace se bude provádět pomocí PKGNG. K dispozici jsou dvě základní verze pro řadu 6 i 7. Pro naše účely použijeme verzi 7 a konkrétně se bude instalovat balíček tomcat-7.0.40. Na webu je k dispozici verze 7.0.42, kterou je také možné použít. Obecný návod na zprovoznění externě instalované aplikace jako služby systému bude popsán v následujícím jailu v tomto dílu.

F3) zprovoznění a zpřístupnění služby

  • upraví se soubor /etc/rc.conf a přidá další řádek:
    tomcat7_enable=“YES“
  • spustí se server příkazem: # service tomcat7 start
  • vyzkouší se přístup k serveru z prohlížeče: <a>http://x.y.z.IPv4-jailu:8080
  • aby bylo možné využívat všech služeb běžícího serveru, je nutné upravit přístup uživatelů k jednotlivým službám
  • k tomuto účelu je nutné upravit soubor /usr/local/apache-tomcat-7.0/conf/tomcat-users.xml
  • zde se vytvoří potřebné role a podle situace se přiřadí jednotlivým uživatelům. Jednoduché řešení může vypadat třeba takto:
    <role rolename="manager-gui"/>
    <role rolename="manager-script"/>
    <role rolename="manager-jmx"/>
    <role rolename="manager-status"/>
    <user username="tomcat" password="tomcat" roles="manager-gui"/>
  • znovu se vyzkouší přístup k serveru: <a>http://x.y.z.IPv4-jailu:8080
  • tentokrát je možné se již ke službám serveru přihlásit pomocí loginu tomcat/tomcat
  • nastaví se FW dle pokynů Krok 4, jediný přístupný port je 8080
  • po novém startu je možné znovu vyzkoušet vzdálené připojení k serveru
  • pokud není vzdálené připojení možné, je třeba znovu projít nastavení serveru a FW a případné nedostatky doladit

Velikost jailu a exportovaného souboru jsou následující:

# zfs list
NAME                                 USED  AVAIL  REFER  MOUNTPOINT
tank1/usr/jails/tomcat                           461M   435G    860M     /usr/jails/tomcat

Velikost exportovaného WDN souboru: 238 MB

Jak je z předchozího popisu patrné, je instalace a zprovoznění Tomcatu poměrně jednoduché. Je to velmi používaný server, ale vzhledem k tomu, že se nejedná o plnohodnotný aplikační server, je třeba mít k dipozici i něco dalšího.

G. Aplikační server Glassfish

V tomto jailu se bude instalovat nejnovější verze aplikačního serveru Oracle Glassfish. Důvod pro jeho instalaci vychází z rozdílů mezi ním a serverem Apache Tomcat. Tomcat je totiž pouze HTTP server a servlet kontejner (spouští servlety a JSP). Glassfish (a např. také JBoss) jsou oproti tomu plnohodnotné Java EE aplikační servery, kde je možné provozovat všechny příslušné technologie. Původně byla v záměru instalace JBoss. V PKGNG i portech je k dispozici několik verzí (jboss-2.4.11_3 , jboss-as-7.1.1 , jboss71-7.1.3 , jboss72-7.2.0_1), takže se to celé zdálo jednoduché. Problém byl ale při spouštění serveru, kdy ten neustále hlásil chybu v modulu LogManager. Ani s pomocí návodů na webu se mi nepodařilo ho zprovoznit. Jednalo se o doporučení, jak upravit konfigurační soubor standalone.conf a dodat do něj odkazy na příslušný LogManager. Ani po delším experimentování jsem se nedobral k žádanému úspěšnému závěru.

Nakonec jsem se tedy rozhodl vyzkoušet Glassfish, pro který hovoří několik výhod:

  • podařilo se bez větších problémů zprovoznit nejnovější CE verzi
  • podařilo se zprovoznit vzdálenou administraci
  • administrační webové rozhraní je velice obsáhlé a umožňuje velké množství voleb a nastavení
  • server patří pod Oracle, takže má asi nejlepší napojení na Java infrastrukturu

Vzhledem k tomu, že se jedná o instalaci externí aplikaci, bude nutné upravit systém tak, aby server běžel jako systémová služba a bylo možné s ním také takto nakládat. Hlavně se jedná o to, aby se server jednoduše a automaticky spouštěl při startu jailu. V rámci popisu jeho zprovoznění tak bude uvedena poměrně obecná metoda, jak to v systému PC-BSD/TrueOS upravit a nastavit.

G2) instalace programů a aplikací

Žádná verze Glassfish není ani v PKGNG ani v portech. Nezbylo tedy nic jiného, než použít některou z verzí na webu Oracle. Obecně lze říci, že jsou k dispozici verze přímo od Oracle, viz zde: http://www.oracle.com/technetwork/java/javaee/downloads/index.html?ssSourceSiteId=ocomen

Cloud 24 - tip 1

Kromě toho jsou k dispozici i komunitní verze. Já jsem nakonec použil komunitní verzi Glassfish 4, která je dostupná zde: https://glassfish.java.net/download.html. Jediné, co server ke svému běhu potřebuje, je JVM prostředí. Proto jako jediný instalujeme balík openjdk-7.25.15 z PKGNG.

G3) zprovoznění a zpřístupnění služby

  • komprimovaný soubor glassfish-4.0.zip se rozbalí do adresáře /usr/local/glassfish4
  • přejde se do adresáře příkazem: # cd /usr/local/glassfish4/glassfish/bin
  • spustí se startovací soubor příkazem: # sh startserv
  • vyzkouší se přístup k serveru z prohlížeče: http://x.y.z.IPv4-jailu:8080
  • při snaze o spuštění administrační rozhraní došlo k chybě, protože interní link je nasměrován na http://localhost:4848
  • při snaze o vzdálené připojení http://x.y.z.IPv4-jailu:4848 se objeví problém a chybové hlášení o tom, že není povoleno vzdálené připojení k DAS
  • běh serveru se v terminálu zastaví příkazem: # Ctrl+C
  • spustí se příkaz pro nastavení administrátorského hesla: # sh asadmin –host x.y.z.110 –port 4848 change-admin-password
  • defaultní nastavení je na uživatel admin a prázdné heslo
  • spustí se znovu server příkazem: # sh startserv
  • na hostitelském stroji se otevře další konzole do jailu: # sudo warden chroot glassfish
  • přejde se do příslušného adresáře: # cd /usr/local/glassfish4/glassfish/bin
  • spustí se příkaz: # sh asadmin
  • zadá se příkaz: # enable-secure-admin
  • zavře se druhá otevřená konzole a v té původní se zastaví a znovu spustí server
  • znovu se vyzkouší vzdálené připojení k administraci s novým heslem: http://x.y.z.IPv4-jailu:4848
  • pokud je přihlášení OK, je možné pokračovat dále
  • při použití externě instalované aplikace v jailu by bylo nepříjemné, že by se při startu jailu nespustila automaticky.
  • je proto nutné tuto vlastnost nastavit pomocí nástrojů systému TrueOS pomocí několika kroků
  • vytvoří se soubor: # touch /etc/rc.d/glassfish
  • do souboru se vloží následující obsah:
    #!/bin/sh
    . /etc/rc.subr
    name="glassfish"
    rcvar=glassfish_enable
    start_cmd="/usr/local/glassfish4/glassfish/bin/startserv"
    stop_cmd="/usr/local/glassfish4/glassfish/bin/stopserv"
    load_rc_config $name
    : ${glassfish_enable:="NO"}
    run_rc_command "$1"
  • nastaví se spouštěcí příznak souboru: # chmod +x /etc/rc.d/glassfish
  • upraví se soubor /etc/rc.conf a přidá se další řádek
    glassfish_enable=“YES“
  • upraví se soubor: /usr/local/glassfish4/glas­sfish/bin/startserv, změna je na posledním řádku, který po úpravě vypadá takto:
    exec /usr/local/openjdk7/bin/java -jar "$AS_INSTALL_LIB/admin-cli.jar" start-domain "$@"
  • upraví se soubor: /usr/local/glassfish4/glas­sfish/bin/stopserv, změna je na posledním řádku, který po úpravě vypadá takto:
    exec /usr/local/openjdk7/bin/java -jar "$AS_INSTALL_LIB/admin-cli.jar" stop-domain "$@"
  • zastaví se server a restartuje se jail
  • pokud start jailu včetně serveru proběhne bez chybových hlášení, je možné postoupit dál
  • pokud je vše OK, tak fungují příkazy:
    # service glassfish start
    
    # service glassfish stop 
  • je možné vyzkoušet přístupy k serveru na portech 8080 a 4848
  • nastaví se FW dle pokynů Krok 4, přístupné jsou porty 8080 a 4848
  • po novém startu je možné znovu vyzkoušet vzdálené připojení k serveru
  • pokud není vzdálené připojení možné, je třeba znovu projít nastavení serveru a FW a případné nedostatky doladit

Velikost jailu a exportovaného souboru jsou následující:

# zfs list NAME USED AVAIL REFER MOUNTPOINT tank1/usr/jails/glassfish 719M 702G 1,09G /usr/jails/glassfish \---Velikost exportovaného WDN souboru: 383 MBTímto by bylo ukončeno zprovoznění dvou javových serverů. V příštím díle to bude trochu všehochuť – XMPP server, DMS systém a jail pro vývoj Java aplikací.

Byl pro vás článek přínosný?