Preskočiť na hlavný obsah

Ako na Apache Tomcat

Včera som sa rozhodol napísať si svoj prvý servrlet a prvú otázku ktorú som si položil bola ktorý webový aplikačný server si mám zvoliť Apache Tomcat alebo GlassFish. Keďže môj otec už dlhšiu dobu používa GlassFish tak som sa preň rozhodol aj ja. Netušil som však, že ma čakajú problémy ktoré ma donútia zmeniť moju voľbu na Tomcat. Teraz ukážem 2 spôsoby ako Apache Tomcat nainštalovať na systéme Fedora, RHEL alebo CentOS s tým, že by to malo fungovať aj pod inými distribúciami.

1. Apache Tomcat nezávislý od Eclipse

Spustíme si terminál ako používateľ root.

A - Inštalácia JDK

Poslednú verziu JDK je možné stiahnuť tu: http://www.oracle.com/technetwork/java/javase/downloads/index.html Ako prvé vytvoríme nový priečinok /usr/java a presunieme sa doň.
root@linux ~ $ mkdir /usr/java
root@linux ~ $ cd /usr/java
root@linux java $
Do novo vytvoreného priečinka stiahneme JDK a rozbalíme.
root@linux java $ tar -xzf jdk-7u51-linux-x64.tar.gz
Toto nám vytvorilo priečinok /usr/java/jdk1.7.0_51 ktorý bude našim JAVA_HOME. Teraz môžeme nastaviť JAVA_HOME pre všetkých používateľov jednoduchým pridaním serie príkazov do súboru /etc/profile.
JAVA_HOME=/usr/java/jdk1.7.0_51
export JAVA_HOME
PATH=$JAVA_HOME/bin:$PATH
export PATH
Po tomto pridaní by sme sa mali odhlásiť a znova prihlásiť a skontrolovať či JAVA_HOME pracuje správne.
root@linux ~ $ echo $JAVA_HOME
/usr/java/jdk1.7.0_51

B - Stiahnutie a rozbalenie Tomcatu

Tomcat budeme inštalovať do priečinku /usr/share a tak sa doň presunieme a stiahneme si Tomcat (v mojom prípade apache-tomcat-7.0.52.tar.gz).
root@linux ~ $ cd /usr/share
root@linux share $ wget http://tux.rainside.sk/apache/tomcat/tomcat-7/v7.0.52/bin/apache-tomcat-7.0.52.tar.gz
Pre overenie správnosti stiahnutia môžeme použiť md5sum ktorý najdeme ja na stránkach Tomcatu.
root@linux share $ md5sum apache-tomcat-7.0.52.tar.gz
3d780939cc4fce1661e7411bbd640c09  apache-tomcat-7.0.52.tar.gz
Teraz archív rozbalíme a mal by nám vzniknúť priečinok /usr/share/apache-tomcat-7.0.52.
root@linux share $ tar -xzf apache-tomcat-7.0.52.tar.gz
root@linux share $ ls -l | grep apache
drwxr-xr-x 9 root root 4096 feb 23 12:24 apache-tomcat-7.0.52

C - Nastavenie Tomcatu aby bežal ako servis

Teraz vytvoríme skript tak aby bolo možné Tomcat spúšťať/vypínať/reštartovať ako servis a aby sa nám spustil pri boote. Presunieme sa do priečinku /etc/init.d a vytvoríme skript ktorý sa bude volať 'tomcat'.
root@linux ~ $ cd /etc/init.d
root@linux init.d $ vim tomcat
Tu je telo nášho skriptu:
#!/bin/bash
# description: Tomcat Start Stop Restart
# processname: tomcat
# chkconfig: 234 20 80
JAVA_HOME=/usr/java/jdk1.7.0_51
export JAVA_HOME
PATH=$JAVA_HOME/bin:$PATH
export PATH
CATALINA_HOME=/usr/share/apache-tomcat-7.0.52

case $1 in
start)
sh $CATALINA_HOME/bin/startup.sh
;;
stop)
sh $CATALINA_HOME/bin/shutdown.sh
;;
restart)
sh $CATALINA_HOME/bin/shutdown.sh
sh $CATALINA_HOME/bin/startup.sh
;;
esac
exit 0
Je potrebné nastaviť súboru správne práva.
root@linux init.d $ chmod 755 tomcat
Teraz použijeme chkconfig utilitu na nastavenie automatického spúšťania Tomcatu pri boote.
root@linux init.d $ chkconfig --add tomcat
root@linux init.d $ chkconfig --level 234 tomcat on
root@linux init.d $ chkconfig --list tomcat
tomcat          0:off   1:off   2:on    3:on    4:on    5:off   6:off
Ešte by sme mali skontrolovať Catalina.out log či sa nevyskytli nejaké chyby.
root@linux ~ $ more /usr/share/apache-tomcat-7.0.29/logs/catalina.out

D - Púšťanie Tomcatu ako neprivilegovaný užívateľ (odporúčam)

Na to či púšťať Tomcat ako neprivilegovaný užívateľ nech si odpovie každý sám ale podľa mňa je to lepšie a tu je sekvencia príkazov ako to zabezpečiť. Ako prvé si musíme vytvoriť užívateľskú skupinu.
root@linux ~ $ groupadd tomcat
Vytvoríme neprivilegovaného používateľa a určíme mu domovský adresár v koreni Tomcatu.
root@linux ~ $ useradd -g tomcat -d /usr/share/apache-tomcat-7.0.52/tomcat tomcat
Koreňový adresár Tomcatu sme vytvárali ako root tak je treba zmeniť skupinu aj vlastníka tohto adresára.
root@linux ~ $ chown -Rf tomcat.tomcat /usr/share/apache-tomcat-7.0.52/
A nakoniec takto upravíme spúšťací skript ktorý sme pred nedávnom vytvorili.
#!/bin/bash
# description: Tomcat Start Stop Restart
# processname: tomcat
# chkconfig: 234 20 80
JAVA_HOME=/usr/java/jdk1.7.0_51
export JAVA_HOME
PATH=$JAVA_HOME/bin:$PATH
export PATH
CATALINA_HOME=/usr/share/apache-tomcat-7.0.52/bin

case $1 in
start)
/bin/su tomcat $CATALINA_HOME/startup.sh
;;
stop)
/bin/su tomcat $CATALINA_HOME/shutdown.sh
;;
restart)
/bin/su tomcat $CATALINA_HOME/shutdown.sh
/bin/su tomcat $CATALINA_HOME/startup.sh
;;
esac
exit 0

2. Apache Tomcat s použitím Eclipse

S použitím Eclipse je tento úkon oveľa jednoduchší a má len pár jednoduchých krokov.
  1. Stiahneme si Eclipse s oficiálnej stránky http://eclipse.org/downloads/ alebo nainštalujeme pomocou inštalátora. Myslím, že tu je to pekne popísané.
  2. Ak máme Eclipse budeme potrebovať plugin ktorý sa volá Web Tools Platform. Tento plugin sa dá veľmi jednoducho nainštalovať pomocou Eclipse. Otvoríme Eclipse > Help > Install New Software... a do poľa kde si volíme zdroje softvéru zadáme adresu http://download.eclipse.org/webtools/updates/ asi nejak takto alebo použijeme YUM.
    root@linux ~ $ yum -y install eclipse-wtp-*
    
  3. Po reštartovaní Eclipse necháme vytvoriť webový projekt. Či zvolíme statický alebo dynamický by malo byť jedno. Pred akýmkoľvek nastavovaním projektu musíme zvoliť resp. vytvoriť aplikačný server. Klik New Runtime... a zvolíme z ponuky serverov pričom nezabudnite označiť voľbu Create a new local server po kliknutí na tlačítko Next > už len zvolíme kam má byť server nainštalovaný a klikneme na Download and Install..., Eclipse bude chvíľku pracovať a to je všetko. Už len vyplníme údaje o novom projekte a môžeme pracovať.

Vzorový kód servrletu - Hello World!

A aby ste nemuseli študovať nejaké náročné príklady ponúkam jeden klasický Hello World!.
import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class HelloWorld extends HttpServlet {
	private static final long serialVersionUID = 1L;

	@Override
	public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
	{
		PrintWriter out = response.getWriter();
		out.println("HelloWorld!");
	}
	
	@Override
	public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
	{
		doGet(request, response);
	}

}

Komentáre

Obľúbené príspevky z tohto blogu

Ako previesť .mp3 súbor do .wav v Linuxe

Počas Vianočných sviatkov som skúmal ako previesť pesničky ktoré mám v počítači vo formáte MP3 do formátu audio CD ktorý by bez problémov načítala aj moja postaršia veža. Samozrejme našiel som veľa spôsobov avšak asi najjednoduchším bol veľmi jednoduchý shell skript. Inštalácia je veľmi jednoduchá: # Ubuntu sudo apt-get install mpg123 # Fedora yum install mpg123 Používať tento shell skript sa dá dvoma spôsobmi. Buď budete prevádzať každý MP3 súbor samostatne pomocou tohto príkazu: mpg123 -w vystup.wav vstup.mp3 Alebo využijete jednoduchú funkciu ktorú vložíte do súboru .bashrc v vašom koreňovom adresári. mp3towav(){      [[ $# -eq 0 ]] && { echo "mp3wav mp3file"; exit 1; }      for i in "$@"      do           # create .wav file name           local out="${i%/*}.wav"           [[ -f "$i" ]] && { echo -n "Processing ${i}..."; mpg123 -w ...

MathJax: Vkladanie matematických vzorcov na stránku

Asi 2 roky dozadu som tu písal o jazyku MathML. Jedná sa o jazyk z rodiny XML ktorý nám umožňuje vkladať na web matematické vzorce. Tento jazyk má však jednu nevýhodu a to, že aj na zapísanie jednoduchého a relatívne malého vzorca musíme napísať veľa neprehľadných riadkov. Tento problém zdá sa rieši MathJax . MathJax taktiež vkladá do stránky matematické vzorce ale dokáže ich vyrenderovať aj napríklad zo syntaxe ktorú používa LaTeX či AsciiMath a ta je oveľa kratšia a čitateľnejšia ako MathML. Použitie si ukážeme na jednoduchom zápise kvadratickej rovnice a vzorca slúžiaceho na jej výpočet. Ak $a \ne 0$, potom \(ax^2 + bx + c = 0\) má práve 2 korene ktoré vypočítame nasledovne: $$x = {-b \pm \sqrt{b^2-4ac} \over 2a}.$$ Použitie LaTeX-u <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>MathJax LaTeX Test</title> <script type="text/x-mathjax-config"> MathJax.Hub.Config({tex2jax: {in...

Ako zrušiť odskok prvého riadku v LaTeXe

Dnes som riešil problém ktorý som si myslel, že nebude žiadnym problémom ale opak bol pravdou. Potreboval som aby mi pri jednoduchom LaTeX -ovom dokumente automaticky neodsadzovalo prvý riadok odstavca. Asi po hodinke hľadania som na to prišiel a naozaj to bolo veľmi jednoduché. Do hlavičky dokumentu stačilo napísať tento riadok: \setlength{\parindent}{0in} Toto však vytvorilo jeden problém s ktorým som nepočítal. Odstavce sú spolu a bez odsadenia prvého riadku čo znamená, že text je dosť neprehľadný. Potreboval som teda vyriešiť ďalší problém a to ako pred alebo za odstavec vložiť nejakú medzeru. Riešenie bolo opäť veľmi jednoduché. \setlength{\parskip}{5mm}