# Tomcat, web.xml, server.xml -> Projektpfad



## JohnDoe (18. Nov 2004)

Hallo,

ich versuche gerade mein Projekt bestehend aus ein paar Servlets und JSP Seiten mit Hilfe des Tomcat Servers zum laufen zu bekommen. Die Examples laufen und auch mein Projekt läuft wenn es unter /webapps liegt. Jetzt würde ich aber gerne das Projekt in ein anderes Verzeichniss packen (ausserhalb des Tomcat Verzeichnisses).

Damit man es versteht hier mal ein paar Pfadangaben.

Tomcat Installationsverzeichniss
/usr/local/jakarta-tomcat

Pfad zu meinem Projekt (test) so wie es funktioniert
/usr/local/jakarta-tomcat/webapps/test

Jetzt würde ich das Projekt gerne im folgendes Verzeichniss einrichten
/srv/www/htdocs/user1/html

wenn ich das richtig verstanden habe muss ich dazu die server.xml editieren, hab ich auch gemacht aber anscheinend falsch da die JSP Seiten nicht ausgeführt werden.

<Context path="/html"
                 docBase="/srv/www/htdocs/user1/html"
                 crossContext="true"
                 debug="0"
                 reloadable="true"
                 trusted="false" >
</Context>

Die web.xml ist ja nur für die Projektkonfiguration vorhanden oder ? und die server.xml ist für die Serverkonfiguration ? D.H ich muss nur die server.xml anpassen. Habe auch schon ein simples "hello world" (JSP-Seite) in das neue Verzeichniss gepackt aber nicht mal das läuft.

Was mache ich denn falsch ... hilfe hilfe hilfe. 

Vielen Danke

Grüße Tom


----------



## Bleiglanz (18. Nov 2004)

alles soweit einigermassen richtig

crossContext="false" ist wohl besser 

bist du sicher, dass da nicht versehentlich ein apache läuft? und du dann in Wahrheit über den apache gehst?

machst du das auf port 80 oder port 8080??

/srv/www spricht da schon dafür


----------



## JohnDoe (18. Nov 2004)

Hallo,

erstmal Danke für Deine Antwort! Und ja doch da hast Du recht jetzt versteh ich das auch ein wengerl, wenn ich http://www.url.de aufrufe geht er auf den Apache also Port 80 und den Tomcat rufe ich ja mit http://www.url.de:8080 auf. 
Nur wie definiere ich jetzt das bei aufruf der URL http://www.url.de nicht in das Apache Verzeichnis gegriffen wird sondern in mein Tomcat Verzeichnis, das müsste ich ja dann im Apache definieren oder nicht ? und wenn in welche File? oder bin ich schon wieder ganz falsch?

Vielen Dank

Gruß Thomas

P.S Müsste man sowas eigentlich nicht auch mit Hilfe von Confixx definieren können, hab zwar schon nachgesehen aber nichts gefunden.


----------



## JohnDoe (18. Nov 2004)

Hallo ... ich schon wieder 

ich habe jetzt unter dem Apache in der httpd.conf einen Virtual Host angelegt somit wird beim Aufruf der URL auf das richtige Tomcat webapps Verzeichnis zugegriffen, nur wie definiere ich das er von port 80 auf port 8080 wechseln soll da ich ja sonst keine java Unterstützung habe. Momentan wird zwar die richtige index.jsp aufgerufen und der Tomcat läuft auch aber leider bleibt er auf port 80 also ohne java.

Danke

Gruß Thomas


----------



## Bleiglanz (19. Nov 2004)

nein so gehts nicht, du musst für diesen Virtual Host den Proxy-Mechanismus mod_proxy des Apache verwenden um auf den Port 8080 des Tomcat weiterzuleiten

in der Tomcat Dokumentation - findest du auf localhost:8080/ ) ist eine kurze Anleitung dazu

das ist die einfachste möglichkeit, wie du den Apache vor den Tomcat stellst (aber nicht die beste)

Tipp: nimm das Tomcatverzeichnis wieder aus srv/www heraus


----------



## John Doe (19. Nov 2004)

Hallo,

also das versteh ich jetzt überhaupt nicht wenn ich das mit dem proxy mache dann gehen ja alle Domains auf den Tomcat und das will ich ja nicht. Und warum soll der tomcat aus dem Verzeichnis srv/www wieder raus ich hab gelesen das es egal ist wo man ihn installiert. Kann es sein das es x Möglichkeiten gibt sowas zu realisieren ?

Gruß Tom


----------



## Bleiglanz (19. Nov 2004)

NEIN, nur innerhalb des Virtual Hosts

wenn mod_proxy aktiviert ist, kannst du mit

<VirtualHost *:80>
  ServerName meinedomain.de
  ServerAlias *.meinedomain.de
  CustomLog logs/tomcatproxyl.log combined
  ProxyPass / http://localhost:7780/
  ProxyPassReverse / http://localhost:7780/
</VirtualHost>

+ entsprechenden connector in server.xml  (steht in der doc)

warum soll das raus? weil sonst leute über den normalen apache möglicherweise das WEB-INF auslesen und jsps im Klartext bekommen


----------



## JohnDoe (19. Nov 2004)

Hi,

schön langsam geh ich dir auf die Nervern oder 

Also ich habe gerade festgestellt das mod_proxy anscheinend bei mir nicht enthalten ist könntest Du mir sagen welches das richtige ist -> http://rpm.pbone.net/index.php3/stat/4/idpl/1521600/com/apache2-mod_proxy-2.0.50-7mdk.i586.rpm.html ich habe auf meinem Server Linux Suse 9.1 und den Apache2 und vielleicht wo ich eine brauchbare Anleitung zur konfiguration finde habe schon ein paar aber die machen es wie immer unterschiedlich.

Und vielleicht noch ob dies der richtige Connector für die server.xml ist
<Connector port="8080" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100" proxyName="localhost" proxyPort="80" debug="0" connectionTimeout="20000" disableUploadTimeout="true" />

Dankeschön Dankeschön Dankeschön


----------



## Bleiglanz (19. Nov 2004)

kennst du dich mit dem Apachen auch nicht aus? such mal ein # bei den AddModule Direktiven 

modproxy ist fast immer einkompiliert (zumindest bei den rpms)

den connector musst du natürlich auf den Port legen, den du in der ProxyPass Direktive angegeben hast   

<Connector port="7780"
               maxThreads="50" minSpareThreads="5"       maxSpareThreads="20"
               enableLookups="false"
               acceptCount="100" debug="0" connectionTimeout="2000"
               proxyName="meineDomain.de" proxyPort="80" disableUploadTimeout="true" />


----------



## JohnDoe (19. Nov 2004)

Nein bin eigentlich noch ein total Anfänger und irgendwie überfodert damit deshalb mach ich auch alles was Du sagst 

Also ich habe jetzt nochmal nach der mod_proxy gesucht in der Datei loadmodule.conf werde ja die module angezogen bereits enthalten waren folgende

LoadModule access_module                  /usr/lib/apache2-prefork/mod_access.so
LoadModule actions_module                 /usr/lib/apache2-prefork/mod_actions.so
LoadModule alias_module                   /usr/lib/apache2-prefork/mod_alias.so
LoadModule auth_module                    /usr/lib/apache2-prefork/mod_auth.so
LoadModule auth_dbm_module                /usr/lib/apache2-prefork/mod_auth_dbm.so
LoadModule autoindex_module               /usr/lib/apache2-prefork/mod_autoindex.so
LoadModule cgi_module                     /usr/lib/apache2-prefork/mod_cgi.so
LoadModule dir_module                     /usr/lib/apache2-prefork/mod_dir.so
LoadModule env_module                     /usr/lib/apache2-prefork/mod_env.so
LoadModule expires_module                 /usr/lib/apache2-prefork/mod_expires.so
LoadModule include_module                 /usr/lib/apache2-prefork/mod_include.so
LoadModule log_config_module              /usr/lib/apache2-prefork/mod_log_config.so
LoadModule mime_module                    /usr/lib/apache2-prefork/mod_mime.so
LoadModule negotiation_module             /usr/lib/apache2-prefork/mod_negotiation.so
LoadModule setenvif_module                /usr/lib/apache2-prefork/mod_setenvif.so
LoadModule ssl_module                     /usr/lib/apache2-prefork/mod_ssl.so
LoadModule suexec_module                  /usr/lib/apache2-prefork/mod_suexec.so
LoadModule userdir_module                 /usr/lib/apache2-prefork/mod_userdir.so
LoadModule php4_module                    /usr/lib/apache2-prefork/libphp4.so
LoadModule rewrite_module                 /usr/lib/apache2-prefork/mod_rewrite.so

ich habe jetzt folgendes hinzugefügt da ich die Files in /usr/lib/apache2-prefork gefunden habe

LoadModule proxy_module                              /usr/lib/apache2-prefork/mod_proxy.so
LoadModule proxy_connect_module                 /usr/lib/apache2-prefork/mod_proxy_connect.so
LoadModule proxy_ftp                                    /usr/lib/apache2-prefork/mod_proxy_ftp.so
LoadModule proxy_http                                    /usr/lib/apache2-prefork/mod_proxy_http.so

In die server.xml fügte ich den neuen Connector ein


```
<Connector port="7780" maxThreads="50" minSpareThreads="5" maxSpareThreads="20" enableLookups="false" acceptCount="100" debug="0" connectionTimeout="2000" proxyName="meineDomain.de" proxyPort="80" disableUploadTimeout="true" />
```

und in der confixx_vhost.conf steht jetzt folgendes drin

# tomcat directory
<VirtualHost *:80> 
ServerName malerplank.de 
ServerAlias *.malerplank.de 
CustomLog logs/tomcatproxyl.log combined 
ProxyPass / http://localhost:7780/ 
ProxyPassReverse / http://localhost:7780/ 

# default apache directory
<VirtualHost *:80>
ServerName ferienhauserna.de
ServerAlias *.ferienhauserna.de 
DocumentRoot /srv/www/htdocs/web11/html
SuexecUserGroup web11 ftponly
ScriptAlias /cgi-bin/ /srv/www/htdocs/web11/html/cgi-bin/
php_admin_value open_basedir /srv/www/htdocs/web11/
php_admin_value file_uploads 1
php_admin_value upload_tmp_dir /srv/www/htdocs/web11/phptmp/
</VirtualHost> 

danach habe ich natürlich den Apache und den Tomcat neu gestartet aber es funkt immer noch nicht. Hab ich was vergessen oder bin ich von natur aus zu blöd dafür.

Hast Du vielleicht noch einen Tipp für mich ich verzweifle total.

Danke Dir


----------



## JohnDoe (19. Nov 2004)

oh falsch ... kopiert im Connector habe ich natürlich die richtige Domain (proxyName) eingetragen


----------



## Bleiglanz (19. Nov 2004)

> Nein bin eigentlich noch ein total Anfänger und irgendwie überfodert
> Hast Du vielleicht noch einen Tipp für mich ich verzweifle total.


Tipp1: lass die Apache Anbindung weg und arbeite mit Port 8080, wozu brauchst du die Anbindung als Anfänger??????

Tipp2: wenn du Fragen stellst, dann sag nicht einfach "es funkt nicht", was erscheint im Browser? Fehlermeldungen im Apache log, im Tomcat log usw.

apachectl configtest gemacht?

teste mal localhost:7780 und schau, ob dein connector funktioniert


----------



## JohnDoe (19. Nov 2004)

Hallo,

also den Apache wollte ich schon behalten da ich ja mein KnowHow weiter aufbauen möchte. Und wenn der wegefällt dann kann ich ja nichtmal mehr mit Configxx arbeiten oder?

Aber ich bin jetzt schon fast soweit das ich aufgebe da jetzt überhaupt nichts mehr funktioniert.

Also der Tomcat ist nicht mehr erreichbar weder unter port 7780 noch unter 8080 die anderen Domains die keine tomcat Unterstützung benötigen sind auch nicht mehr erreichbar, es erscheint überall ""Die Seite kann nicht angezeigt werden"

Die Tomcat Logfiles geben nichts her keine Fehler geloggt. Das Apache Logfile sagt folgendes
"Syntax error on line 42 of /etc/apache2/confixx_vhost.conf:
Invalid command 'ProxyPass', perhaps mis-spelled or defined by a module not included in the server configuration"

Habe den apachectl configtest ausprobiert aber denn kennt er nicht von keinem Verzeichnis aus und die Datei apachect finde ich auch nicht auf der FP.


----------



## JohnDoe (19. Nov 2004)

Hallo nochmal,

also ich habe jetzt noch ein bischen rumprobiert bzw. umgestellt und einiges gelesen, der aktuelle Stand ist folgender
1. alle Domains die unter apache/htdocs/... liegen sind wieder aufrufbar
2. apache2ctl configtest meldet -> Syntax ok
3. in den apache und tomcat logfiles sind keine fehler geloggt worden
4. tomcatproxyl.log bleibt leer egal welche Seite man aufruft

so das waren die guten Nachrichten und nun zu den schlechten
1. die tomcat Adminstrationsseite http://localhost:7780 lässt sich nicht mehr aufrufen mit dem neuen Connector "Objekt nicht gefunden - Error 404", die Projekte jedoch schon noch mit Angabe des Projektverz. http://localhost:7780/projekt1 
2. die Domain ferienhaus-erna.de geht immer noch in das apache/htdocs Verzeichnis nicht in das tomcat Verz.
3. die confixx admin Seite lässt sich nicht mehr aufrufen sobald die proxy module angezogen werden 

so meine aktuelle Konfiguration

-server.xml (proxyName habe ich entfernt da in der Doku steht -> optional)
<Connector port="7780" maxThreads="50" minSpareThreads="5" maxSpareThreads="20" enableLookups="false" acceptCount="100" debug="0" connectionTimeout="2000" proxyPort="80" disableUploadTimeout="true" />

-confixx_vhost.conf
-- diese Domain sollte ins tomcat Verz. zeigen
<VirtualHost *:80> 
	ServerName ferienhaus-erna.de
	ServerAlias *.ferienhaus-erna.de
	CustomLog /logs/tomcatproxyl.log combined 
	ProxyPass / http://www.ferienhaus-erna.de:7780
	ProxyPassReverse / http://www.ferienhaus-erna.de:7780
</VirtualHost> 

-- diese Domain greift in apache/htdocs/...  ist auch gewollt und funkt.
<VirtualHost *:80>
  ServerName malerplank.de
  ServerAlias www.malerplank.de

  DocumentRoot /srv/www/htdocs/web22/html
  SuexecUserGroup web22 ftponly
  ScriptAlias /cgi-bin/ /srv/www/htdocs/web22/html/cgi-bin/
  php_admin_value open_basedir /srv/www/htdocs/web22/
  php_admin_value file_uploads 1
  php_admin_value upload_tmp_dir /srv/www/htdocs/web22/phptmp/
</VirtualHost>

-httpd.conf
LoadModule proxy_module 		/usr/lib/apache2-prefork/mod_proxy.so
LoadModule proxy_connect_module 	/usr/lib/apache2-prefork/mod_proxy_connect.so
LoadModule proxy_ftp_module 		/usr/lib/apache2-prefork/mod_proxy_ftp.so
LoadModule proxy_http_module 		/usr/lib/apache2-prefork/mod_proxy_http.so

so und nu bete ich zu Gott das Du den Fehler findest.

Danke Dir

Gruß Tom


----------



## JohnDoe (21. Nov 2004)

Halllo,

habe den Server jetzt nochmal platt gemacht und die selben Einstellungen vorgenommen und .... jetzt klappt alles 

Vielen Dank

Gruß Thomas


----------



## Bleiglanz (21. Nov 2004)

> also den Apache wollte ich schon behalten da ich ja mein KnowHow weiter aufbauen möchte. Und wenn der wegefällt dann kann ich ja nichtml mehr mit Configxx arbeiten oder?


Wie willst du dein KnowHow weiter aufbauen, wenn du Configxx verwendest?

Nix für ungut, aber den Schrott würde ich sofort deinstallieren


----------



## JohnDoe (22. Nov 2004)

Hi,

ich wollte confixx eigentlich hauptsächlich für meine Kollegen einsetzen d.h wenn ich Reseller bin und meine Kollegen User dann habe die es einfach mit der confixx Oberfläche. Was hältst Du eigentlich von webmin? oder setzt Du sowas garnicht ein?

Gruß Tom


----------



## Bleiglanz (22. Nov 2004)

Nein

Der Zeitaufwand um zu lernen wo und wann und warum diese Tools in den conf-files herumpfuschen ist mir zu gross. Es dauert lang genug, bis man das "normale" (z.B. httpd.conf) kennt.


----------



## JohnDoe (25. Nov 2004)

Mhhhhh ... ok, danke Dir auf alles Fälle für deine Unterstützung!

Gruß Tom


----------

