Apr 13 2012

Tomcat, captcha i brak awt

Tomcat i blad java.lang.NoClassDefFoundError: Could not initialize class sun.awt.X11GraphicsEnvironment pojawia sie podczas generowania grafik captcha za pomoca biblioteki awt, gdy uruchomimy serwer aplikacji z czystego tty. Mozna tego uniknac dodajac handlery awt do wirtualnej maszyny javy.

Dodatkowe ustawienia JAVA_OPTS w catalina.sh

JAVA_OPTS="-Djava.awt.headless=true"

Mar 19 2010

XML-RPC, wylaczenie gzipa w Apache dla IE6

W aplikacjach klient-serwer z konektem po XML-RPC, natrafimy na problem komunikacji, gdy klient uzywa przegladarki IE6. Wiec. Jezeli gzip’em sterujemy bezposrednio z Javki to przy generowaniu response musimy go wylaczyc. Jezeli Tomcat nakryty jest Apachem to nastepujaca dyrektywa jest konieczna aby klient stworzony, na przyklad we Flashu mogl poprawnie odebrac odpowiedz.

BrowserMatch \bMSIE\s6 no-gzip gzip-only-text/html

Oczywiscie wlaczamy mod deflate w Apache


Dec 10 2009

Apache i Tomcat – konektor AJP

Bylo juz o konfiguracji kontenera Apache-Tomcat, pojawil sie tez opis mixa Apache-PHP-MySQL, pozostaje jednak, jeszcze pare innych waznych konfiguracji, tj. Tomcat Workers (load balancing) czy konektor AJP, ktorym dzis sie zajmiemy.

W skrocie, konektor AJP sluzy do polaczenia dwoch punktow webowych protokolem AJP, np. serwer Apache na jednej maszynie oraz Tomcat na drugiej. Mozemy ukryc w ten sposob serwer Tomcat przed bezposrednim dostepem z zewnatrz – na przyklad.

1. Instalujemy Apache (na maszynie 192.168.1.1)

czlowiek@maszyna:~$ sudo apt-get install apache2

Domyslna instalacja na apache2-mpm-worker

czlowiek@maszyna:~$ apache2ctl -V
Server version: Apache/2.2.12 (Ubuntu)
Server built:   Nov 12 2009 22:51:51
Server's Module Magic Number: 20051115:23
Server loaded:  APR 1.3.8, APR-Util 1.3.9
Compiled using: APR 1.3.8, APR-Util 1.3.9
Architecture:   32-bit
Server MPM:     Worker
  threaded:     yes (fixed thread count)
    forked:     yes (variable process count)
Server compiled with....
 -D APACHE_MPM_DIR="server/mpm/worker"
...

nie dziala najlepiej w konektorze AJP, wiec instalujemy apache2-mpm-prefork, ktory jest moze mniej wydajny, ale za to bardziej stabilny.

2. Instalujemy apache2-mpm-prefork

czlowiek@maszyna:~$ sudo apt-get install apache2-mpm-prefork

Tak jest poprawnie

czlowiek@maszyna:~$ apache2ctl -V
...
Server MPM:     Prefork
...
 -D APACHE_MPM_DIR="server/mpm/prefork"
...

3. Wlaczamy modul proxy_ajp

czlowiek@maszyna:~$ sudo a2enmod proxy_ajp

4. Konfigurujemy modul

czlowiek@maszyna:~$ sudo nano /etc/apache2/mods-enabled/proxy.conf

wlaczamy requesty i zmieniamy prawa

ProxyRequests On
Allow from all

5. Konfigurujemy konekta, otwieramy konfig apache

czlowiek@maszyna:~$ sudo nano /etc/apache2/sites-enabled/000-default

i dopisujemy linie

ProxyPass /examples/servlets/ ajp://192.168.1.5:8009/examples/servlets/

w wezle

<VirtualHost *:80>

gdzie adres ip 192.168.1.5 bedzie maszyna z zainstalowanym serwerem Tomcat.

Wiec, na drugiej maszynie konfigurujemy Apache-Tomcat. Tym razem pobieramy gotowa paczke – jezeli jednak instalacja, to zapraszam tutaj.

6. Pobieramy najnowsza paczke (na maszynie 192.168.1.5)

czlowiek@maszyna2:~$ sudo -i
root@maszyna2:~$ wget http://ftp.tpnet.pl/vol/d1/apache/tomcat/tomcat-6/v6.0.20/bin/apache-tomcat-6.0.20.tar.gz

7. Ekstraktujemy i kopiujemy

root@maszyna2:~$ tar xzvf apache-tomcat-6.0.20.tar.gz -C /tmp
root@maszyna2:~$ mkdir /usr/local/tomcat6 && cp -R /tmp/apache-tomcat-6.0.20/* /usr/local/tomcat6

8. Testujemy Tomcata

root@maszyna2:~$ wget -q http://localhost:8080 -O /tmp/atest && cat /tmp/atest | grep -i "Apache Tomcat"
    <title>Apache Tomcat</title>
...

lub wpisujemy adres (http://localhost:8080) w ulubionej przegladarce

tomcat-start-page

9. Konfigurujemy Tomcata – otwieramy server.xml i upewniamy sie, ze ponizszy konektor jest odkomentowany.

<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

Teoretycznie wszystko dziala poprawnie, ale na wszelki wypadek restarty i testy

root@maszyna2:~$ /etc/init.d/apache2 restart
root@maszyna2:~$ /usr/local/tomcat6/bin/shutdown.sh
root@maszyna2:~$ /usr/local/tomcat6/bin/startup.sh

Po wpisaniu adresu http://192.168.1.1/examples/servlets/ dostaniemy strone z przykladami servletow na serwerze Tomcat z maszyny o ip 192.168.1.5

Oczywiscie jezeli port 8009/tcp na maszynie 192.168.1.5 jest zamkniety to trzeba go otworzyc dla polaczen z serwerem Apache zainstalowanym na maszynie 192.168.1.1


Oct 3 2009

Konfiguracja Apache-Tomcat na Ubuntu

Jak juz jestem w temacie konfiguracji srodowisk programistycznych, to moze cos o kontenerze Tomcat (Jakarta), jako, ze jest najczesciej wykorzystywany do uruchamiania aplikacji webowych tworzonych w technologi Java Servlet i JSP.

1. Instalujemy Javke

czlowiek@maszyna:~$ sudo apt-get install sun-java6-jdk

2. Instalujemy Tomcat’a

czlowiek@maszyna:~$ sudo apt-get install tomcat6

3. Testujemy Tomcat’a

czlowiek@maszyna:~$ wget -q http://localhost:8080 -O /tmp/atest && cat /tmp/atest | grep -i "it works"

jak dostaniemy cos podobnego: <h1>It works !</h1> to serwer dziala.

4. Teraz instalujemy przykladowe aplikacje z repo

czlowiek@maszyna:~$ sudo apt-get install tomcat6-examples
czlowiek@maszyna:~$ sudo /etc/init.d/tomcat6 restart

i klikamy: http://localhost:8080/examples/.

5. Mozemy tez sciagnac przykladowa aplikacje i zainstalowac (skopiowac) ja recznie w domyslnym katalogu aplikacji webowych

czlowiek@maszyna:~$ wget http://tomcat.apache.org/tomcat-6.0-doc/appdev/sample/sample.war -O /tmp/sample.war && sudo cp /tmp/sample.war /var/lib/tomcat6/webapps/

po wklepaniu http://localhost:8080/sample/ w przegladarce powinnismy dostac cos takiego:

tomcat sample

lub takiego: <h1>Sample “Hello, World” Application</h1> z konsoli:

czlowiek@maszyna:~$ wget -q http://localhost:8080/sample/ -O /tmp/atest && cat /tmp/atest | grep -i "h1"

To tyle w skrocie na temat konfiguracji Apache-Tomcat na Ubuntu. Jednakze zapraszam na strone glowna projektu Tomcat.