Instalacja Tomcat 6 i bibliotek mu towarzyszących w Debian Lenny (wersja 32bitowa z jądrem 2.6.26-2-686) – powód, dopiero w Ubuntu znajdziemy oficjalne paczki z Tomcat 6.
Założenie jest takie, że Tomcat oraz JDK
zostaną zainstalowane z paczek przygotowanych
przez producentów,
(Oracle [niegdyś Sun) JDK)
i Tomcat fundacji Apache
Dla Tomcata wymagane jest zainstalowanie JDK w wersji 5
lub wyższej, stabilną jest 6u20 (1.6.0.20)
0a. Na potrzeby pobrania wszystkich bibliotek
trzeba się będzie zaopatrzyć w strukturę katalogów
mkdir /root/java
cd /root/java
1. Niestety, trzeba skorzystać z wizualnych
przeglądarek, aby pobrać JDK
(wymagana jest obsługa javascriptu)
http://java.sun.com/javase/downloads/widget/jdk6.jsp
i zapisujemy jako
jdk-6u20-linux-i586.bin
2. Pobieramy Tomcat w wersji 6.0.26
wget http://www.apache.net.pl/tomcat/tomcat-6/v6.0.26/bin/apache-tomcat-6.0.26.zip
3. Pobieramy dodatkowy program "Deployer",
którym będziemy się posługiwać z linii poleceń,
do usuwania/wgrywania aplikacji.
wget http://www.apache.net.pl/tomcat/tomcat-6/v6.0.26/bin/apache-tomcat-6.0.26-deployer.zi
4. Tworzymy katalog /opt/java/libs
i przenosimy do katalogu /opt/java/libs instalator
lub go kopiujemy
mkdir -p /opt/java/libs
mv /root/java/jdk-6u20-linux-i586.bin /opt/java/libs
5. Nadajemy uprawnienia do wykonania dla instalatora JDK
chmod +x /opt/jdk-6u20-linux-i586.bin
Należy przy tym pamiętać, że instalator domyślnie
rozpakowuje biblioteki do katalogu, w którym się
aktualnie znajdujemy,
czyli warto przejść do /opt/java/libs
cd /opt/java/libs
./jdk-6u20-linux-i586.bin
Czeka nas długie przewijanie ekranu poprzez przytrzymanie
Enter i czytanie licencji, aż dojdziemy do pytania
"Please enter "yes" or "no".
Do you agree to the above license terms? [yes or no]“
wpisujemy yes i “Enter”
Na zakończenie instalacji też raz Enter
i done
6. To teraz czas sprawdzić, czy java odpowiada
/opt/java/libs/jdk1.6.0_20/bin/java -version
7. Przystępujemy do instalacji serwera Tomcat,
i tak, aby nie zakłócić struktury umieszczania
bibliotek w systemie
mkdir -p /opt/http-servers/j2ee/tomcat
cp /root/java/apache-tomcat-6.0.26.zip /opt/http-servers/j2ee
cp /root/java/apache-tomcat-6.0.26-deployer.zip /opt/http-servers/j2ee
cd /opt/http-servers/j2ee/
apt-get install unzip
unzip /opt/http-servers/j2ee/tomcat
i mamy rozpakowaną dystrybucję serwera
8. Kroki konfiguracyjne,
Tomcat bez Javy, nie ruszy.
cd /opt/http-servers/j2ee/apache-tomcat-6.0.26/bin
i tworzymy skrypt do uruchamiania Tomcata
zawierający wiersze
mkdir -p /root/scripts/j2ee
vim /root/scripts/j2ee/start-tomcat.sh
skrypt:
#!/bin/sh
CATALINA_HOME=/opt/http-servers/j2ee/apache-tomcat-6.0.26
export CATALINA_HOME
JAVA_HOME=/opt/java/libs/jdk1.6.0_20
export JAVA_HOME
$CATALINA_HOME/bin/startup.sh
chmod +x /root/scripts/j2ee/start-tomcat.sh
należy również nadać uprawnienia do wykonywania
dla wszystkich skryptów sh
w katalogu $CATALINA_HOME/bin
chmod 775 /opt/http-servers/j2ee/apache-tomcat-6.0.26/bin/*.sh
i uruchamiamy skrypt
/root/scripts/j2ee/start-tomcat.sh
Powinniśmy otrzymać komunikaty
informujące, że dane zmienne systemowe
są wykorzystywane:
“
Using CATALINA_BASE: /opt/http-servers/j2ee/apache-tomcat-6.0.26
Using CATALINA_HOME: /opt/http-servers/j2ee/apache-tomcat-6.0.26
Using CATALINA_TMPDIR: /opt/http-servers/j2ee/apache-tomcat-6.0.26/temp
Using JRE_HOME: /opt/java/libs/jdk1.6.0_20
Using CLASSPATH: /opt/http-servers/j2ee/apache-tomcat-6.0.26/bin/bootstrap.jar
“
Utworzenie skryptu do zatrzymania serwera
vim /root/scripts/j2ee/stop-tomcat.sh
skrypt:
#!/bin/sh
CATALINA_HOME=/opt/http-servers/j2ee/apache-tomcat-6.0.26
export CATALINA_HOME
JAVA_HOME=/opt/java/libs/jdk1.6.0_20
export JAVA_HOME
$CATALINA_HOME/bin/shutdown.sh
chmod +x /root/scripts/j2ee/stop-tomcat.sh
8a. Testowanie, czy usługa działa
Domyślnie serwer nasłuchuje na wszystkich interfejsach
sieciowych dostępnych dla serwera
na porcie 8080
Przeglądarka, http://adres_ip:8080/
i strona główna Tomcata
To jeszcze teraz przydałoby się spróbować
dowolną aplikację wgrać.
W tym celu uruchamiamy skrypt
/root/scripts/j2ee/stop-tomcat.sh
i przechodzimy do $CATALINA_HOME/conf
cd /opt/http-servers/j2ee/apache-tomcat-6.0.26/conf
i edytujemy plik tomcat-users.xml,
Jest to domyślny sposób przechowywania
listy kont użytkowników,
którymi możemy się posługiwać w ramach serwera.
W tomcat-users.xml również dla danego konta
użytkownika definiujemy role (od 1 do +)
oraz hasło.
Pomiędzy tagi <tomcat-users>
a </tomcat-users>
wstawiamy wiersz
<user username=”zarzadca” password=”twoje_tajne_haslo_1″ roles=”manager”/>
Otwieramy przeglądarkę,
przechodzimy do http://adres_ip:8080/
i klikamy na link Tomcat Manager
lub bezpośrednio
http://adres_ip:8080/manager/html
Jest to typowy sposób uwierzytelniania HTTP BASIC Authentication,
co ciekawe, nie potrzeba dodawać do tomcat-users.xml
wiersza <role rolename=”manager”/>
pomimo takiego wskazania w przypadku niepoprawnego
wprowadzenia danych.
8b. wgrywamy najprostszą aplikację w postaci pliku war
poprzez formularz z sekcji “WAR file to deploy”
10.
Instalujemy pakiet Deployer
I tu zaczynają się schody… chyba
Pakiet Deployer wymaga narzędzia ANT
cd /root/java
wget http://www.apache.net.pl/ant/binaries/apache-ant-1.8.1-bin.tar.gz
cp /root/java/apache-ant-1.8.1-bin.tar.gz /opt/java/libs
cd /opt/java/libs
tar -xf apache-ant-1.8.1-bin.tar.gz
rm apache-ant-1.8.1-bin.tar.gz
czyli posiadamy już ścieżkę do ANTa
/opt/java/libs/apache-ant-1.8.1/bin
więc co należy?
10a. Skrypty, skrypty, skrypty,
vim /root/scripts/j2ee/deployer-tomcat.sh
skrypt:
#!/bin/sh
CATALINA_HOME=/opt/http-servers/j2ee/apache-tomcat-6.0.26
export CATALINA_HOME
JAVA_HOME=/opt/java/libs/jdk1.6.0_20
export JAVA_HOME
ANT_HOME=/opt/java/libs/apache-ant-1.8.1
export ANT_HOME
$ANT_HOME/bin/ant $1 $2 $3 $4 $5
chmod +x /root/scripts/j2ee/deployer-tomcat.sh
10b.
Dodanie pakietu “Deployer” do Tomcata – w tym przypadku
tylko rozpakujemy zadania dla ANT_HOME/lib
[co ważne, nie musi się on znaleźć w katalogu
serwera, natomiast aby utrzymać w miarę
spójną bazę bibliotek dodamy do nowo tworzonego
katalogu deployer w $CATALINA_HOME ]
cd /opt/http-servers/j2ee/apache-tomcat-6.0.26
cp /root/java/apache-tomcat-6.0.26-deployer.zip /opt/http-servers/j2ee/apache-tomcat-6.0.26
unzip apache-tomcat-6.0.26-deployer.zip
mv apache-tomcat-6.0.26-deployer deployer
rm apache-tomcat-6.0.26-deployer.zip
cd ./deployer
10c.
Należy skopiować z katalogu deployer plik zawierający definicje
zadań (tasks), które można będzie wykonać.
cp lib/catalina-ant.jar /opt/java/libs/apache-ant-1.8.1/lib
teraz trzeba przygotować plik build.xml (w naszym przypadku domyślnym
zadaniem jest deploy, czyli wgranie aplikacji)
i uruchomić ANT z linii poleceń,
plik build.xml należy umieścić w tym samym katalogu co nasz skrypt
deployer-tomcat.sh
i wywołać przekazując parametry do wiersza poleceń
1)
-Dusername=login_konta_w_roli_manager
2)
-Dpassword=haslo_konta_w_roli_manager
3)
-DcontextPath=/adres_url_aplikacji
4)
deploy/reload/undeploy (z zależności co chcemy uzyskać)
5) ten parametr jest tylko wymagany, kiedy będziemy chcieli
załadować aplikację na serwer
-DsrcWAR=sciezka_do_pliku_war
Przykłady:
./deployer-tomcat.sh -Dusername=zarzadca -Dpassword=twoje_tajne_haslo_1 -DcontextPath=/moja_aplikacja deploy -DsrcWAR=/root/java/testowa.war
./deployer-tomcat.sh -Dusername=zarzadca -Dpassword=twoje_tajne_haslo_1 -DcontextPath=/moja_aplikacja undeploy
*********************************
zawartość pliku build.xml
<project name=”Moja aplikacja” default=”deploy” basedir=”.”>
<!–
Tutaj jest okreslana zmienna, z wartości której pobierana jest
ścieżka bezwględna do lokalnego pliku war
–>
<property name=”srcWAR” value=”"/>
<property name=”contextPath” value=”/myapp”/>
<property name=”url” value=”http://localhost:8080/manager”/>
<property name=”username” value=”myusername”/>
<property name=”password” value=”mypassword”/>
<taskdef name=”deploy” classname=”org.apache.catalina.ant.DeployTask”/>
<taskdef name=”list” classname=”org.apache.catalina.ant.ListTask”/>
<taskdef name=”reload” classname=”org.apache.catalina.ant.ReloadTask”/>
<taskdef name=”resources” classname=”org.apache.catalina.ant.ResourcesTask”/>
<taskdef name=”roles” classname=”org.apache.catalina.ant.RolesTask”/>
<taskdef name=”start” classname=”org.apache.catalina.ant.StartTask”/>
<taskdef name=”stop” classname=”org.apache.catalina.ant.StopTask”/>
<taskdef name=”undeploy” classname=”org.apache.catalina.ant.UndeployTask”/>
<target name=”deploy” description=”Install web application”>
<deploy url=”${url}” username=”${username}” password=”${password}”
path=”${contextPath}” war=”file:${srcWAR}”/>
</target>
<target name=”reload” description=”Reload web application”>
<reload url=”${url}” username=”${username}” password=”${password}”
path=”${contextPath}”/>
</target>
<target name=”undeploy” description=”Remove web application”>
<undeploy url=”${url}” username=”${username}” password=”${password}”
path=”${contextPath}”/>
</target>
</project>
Moje uwagi techniczne:
Kawałki kodu przeklejane z konsoli powinny być pisane równą czcionką – na przykład Curier.
Polecenia typu: “./deployer-tomcat.sh” powinny być poprzedzone # jeśli wykonywane są z roota, lub $ jeśli ze zwykłego usera.
A teraz testuje wpisywanie:
testO tak:

# ./deployer-tomcat.sh -Dusername=zarzadca -Dpassword=twoje_tajne_haslo_1 -DcontextPath=/moja_aplikacja deploy -DsrcWAR=/root/java/testowa.war
PS. szkoda że nie ma możliwości edytowania swoich komentarzy – chociaż przez jakiś czas po ich opublikowaniu (jeszcze przed moderacją)