Avatar billede runee Nybegynder
28. august 2006 - 12:28 Der er 34 kommentarer og
1 løsning

Tomcat på IIS, men flere hostnavne

Hejsa,

Jeg har en IIS 6 server stående, hvor jeg har et par mindre sites kørende både som ren html og php.
Jeg har så for nyligt installeret Tomcat og udviklet et JSP site, der fungerer fint på adressen:
http://<min server ip>/k22
K22 er det jeg kalder min applikation for, og den ligger i <apache blabla>\webapps\k22.
Workers2.properties filen har iøvreigt følgende entry:
[uri:/k22/*]
info=FDF_K22
context=/k22


Nu er jeg så kommet til det punkt, at sitet skal live og aktiveres med det dertil indkøbte hostnavn. DNS er sat korrekt op, og jeg kan få adgang til applikationen ved hjælp af http://<HOST>/k22... men jeg vil selvfølgelig gerne have at den kan få adgang ved blot at skrive http://<HOST>.

Hvordan gør jeg det? Hvis jeg sætter det op som et almindeligt site i IIS med home directory til <apache>\webapss\k22 virker det ikke (vel fordi den så ikke bliver kastet over til tomcat'en men IIS blot forsøger at læse direkte fra biblioteket selv.)

Og samtidig, det er kun det specifikke hostnavn der skal gå til tomcat, de andre jeg har konfigureret på IIS'en skal virke som normalt og blive behandlet af IIS'en...
Avatar billede cougar Nybegynder
28. august 2006 - 20:41 #1
Kender du denne artikel, den kan måske hjælpe dig på vej ?
http://www.iis-resources.com/modules/AMS/article.php?storyid=485

/Peter
www.iis-digest.com
Avatar billede runee Nybegynder
29. august 2006 - 08:54 #2
Hej Peter,

Tak for svaret - jeg kender godt den artikel, men den løser ikke mit problem. Den omhandler at installere tomcat - og som nævnt, er det ikke problemet... det virker fint på http://ip-adresse/k22 - jeg vil bare gerne have et rent hostnavn på den adresse, altså http://hostnavn.dk/
Så problemet er ikke at få IIS og tomcat til at virke sammen, men hvordan jeg får lavet en serverside redirect, så når brugeren skriver www.hostnavn.dk at han kommer ind på den side, uden at browseren skriver http://ip-adresse/k22 i adresselinien.
På et rent IIS site er det nemt nok at sætte op, det spiller sgu' bare ikke rigtigt her..
Avatar billede cougar Nybegynder
29. august 2006 - 10:31 #3
Kan du ikke ændre i IIS settings for dit website, således at Home Directory enten peger direkte på dit Tomcat directory ?
Eller evt. samme sted (Home Directory) ændre til "A redirection to a URL" og lave redirect til http://ip-adresse/k22 ?

Sidste punkt er nok det bedste, når du ville lave en redirect til en IP.

/Peter
www.iis-digest.com
Avatar billede runee Nybegynder
29. august 2006 - 10:50 #4
Den første option duer ikke, for så "griber" tomcat den ikke - og IIS'en forsøger blot at sende filerne ubehandlet til browseren..
Den næste mulighed vil virke - problemet er at det er en klient-side redirect (den laver egentlig bare en meta-refresh til browseren), og browseren viser (og brugeren kan se) http://ip-adresse/k22 i sin adresse bar...
Avatar billede cougar Nybegynder
29. august 2006 - 11:31 #5
ok, så du har egentlig Tomcat kørende på en anden server bagved eller kører den bare på en anden IP på samme server?
Avatar billede runee Nybegynder
29. august 2006 - 12:43 #6
Samme ip, den er konfigureret sådan som i dit ovenstående link...
Avatar billede runee Nybegynder
29. august 2006 - 12:45 #7
Det er vel heller ikke en redirect jeg er ude efter.. Tomcat snupper hvad der ligger i /k22/ context.. jeg vil gerne have den snupper hvad der hedder www.hostnavn.dk og returnerer hvad jeg har i det context
Avatar billede cougar Nybegynder
29. august 2006 - 13:01 #8
ok, som jeg så har forstået det, så skal det fungere på den måde at jeg som bruger f.eks. tilgår www.hostnavn.dk og får præsenteret hvad du har på http://ip-adresse/k22.

Må jeg spørge, hvorfor du ikke merger det content du har i IIS under sitet med hostnavn.dk og sitet ip-adresse/k22 sammen ?
Således at det hele kun præsenteres af 1 site i IIS.
Avatar billede runee Nybegynder
29. august 2006 - 13:22 #9
Jeg er ikke sikker på hvad du mener med at merge det sammen ? Problemet er jo, at det content der ligger under /k22 er JSP sider (+ servlets), som IIS jo ikke kan håndtere.. Jakarta er installeret som en virtuel mappe (som beskrevet) - som jeg har forstået det, men jeg kan nemt tage fejl, smider IIS alle requests igennem Jakarta/Tomcat og hvis der er et match på contexten (/k22/*) snupper tomcat'en den - ellers får IIS den tilbage og kan servere den for browseren.

Et alternativ, ville være at smide IIS helt væk, og køre rent tomcat... den kan også fungere som alom. webserver... problemet er så bare alle mine php sider (der kører 5 php sites på samme server allerede).
Avatar billede arne_v Ekspert
29. august 2006 - 18:59 #10
IIS+Tomcat er en sjaelden fufl. De fleste bruger Apache foran Tomcat.

Apache med baade PHP og Tomcat var nok nemmere at faa til at virke.

Men hvis vi nu antager IIS.

Jeg ville proeve med:

context=/

i Workers2.properties

og saette /k22 til default context i server.xml (context tag path attribute lig med "")
Avatar billede arne_v Ekspert
29. august 2006 - 18:59 #11
sjaelden fugl
Avatar billede runee Nybegynder
29. august 2006 - 19:20 #12
Hej Arne,

Det var også lidt min tanke - men hvis jeg sætter context til /, vil tomcat'en så ikke snuppe alle requests ? Også dem som IIS bør handle for mig ?
Jeg vil prøve at teste det senere, når der ikke er så meget load på serveren..

Alternativet er selvfølgelig apache/tomcat løsningen... men IIS er desværre lidt et organistorisk krav, så den kan blive svær at presse igennem...
Avatar billede runee Nybegynder
29. august 2006 - 19:43 #13
Hmmm....kan ikke helt gennemskue hvor det er du mener i server.xml der skal rettes...
Avatar billede runee Nybegynder
29. august 2006 - 20:28 #14
Min server.xml ser sådan ud:

<Server port="8005" shutdown="SHUTDOWN">

  <GlobalNamingResources>
    <!-- Used by Manager webapp -->
    <Resource name="UserDatabase" auth="Container"
              type="org.apache.catalina.UserDatabase"
      description="User database that can be updated and saved"
          factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
          pathname="conf/tomcat-users.xml" />
  </GlobalNamingResources>

  <Service name="Catalina">
    <Connector port="8080" />

    <!-- This is here for compatibility only, not required -->
    <Connector port="8009" protocol="AJP/1.3" />

    <Engine name="Catalina" defaultHost="localhost">
      <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
            resourceName="UserDatabase" />
      <Host name="localhost" appBase="webapps" />
  </Engine>


  </Service>
</Server>
Avatar billede runee Nybegynder
29. august 2006 - 21:37 #15
Server XML ser nu sådan ud:

<Server port="8005" shutdown="SHUTDOWN">

  <GlobalNamingResources>
    <!-- Used by Manager webapp -->
    <Resource name="UserDatabase" auth="Container"
              type="org.apache.catalina.UserDatabase"
      description="User database that can be updated and saved"
          factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
          pathname="conf/tomcat-users.xml" />
  </GlobalNamingResources>

  <Service name="Catalina">
    <Connector port="8080" />

    <!-- This is here for compatibility only, not required -->
    <Connector port="8009" protocol="AJP/1.3" />

    <Engine name="Catalina" defaultHost="localhost">
      <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
            resourceName="UserDatabase" />
      <Host name="localhost" appBase="webapps" />
    <Host name="mit hostnavn.dk" appBase="webapps/k22">
        <Context path="" docBase="."/>
      </Host>


  </Engine>


  </Service>
</Server>


og workers2.properties sådan her:
[shm:]
info=Shared memory file. Required for multiprocess servers
file=D:\jk2.shm
size=1000000

[channel.socket:localhost:8009]
info=Ajp13 worker, connects to tomcat instance using AJP 1.3 protocol
tomcatId=localhost:8009

[uri:/k22/*]
info=K22
context=/


Det resulterer i at www.hostnavn.dk giver mig index.htm filen fra IIS's root, og www.hostnavn.dk/k22 giver en 404, requested resource not found...
Avatar billede runee Nybegynder
29. august 2006 - 21:38 #16
Det er som om, at IIS ikke forwarder requesten til tomcat når jeg kun har www.hostnavn.dk ... Jeg er slet ikke sikker på hvordan IIS'en overhoveder forwarder mine requests til tomcat - skal der sættes noget yderligere op der ?
Avatar billede runee Nybegynder
29. august 2006 - 21:54 #17
Hmmm... det virker faktisk, hvis jeg direkte kører på tomcatten http://www.hostnavn.dk:8080/  - så problemet nu, må være at IIS ikke smider requesten over til Isapi redirectoren..
Avatar billede arne_v Ekspert
29. august 2006 - 21:59 #18
docBase="."

ser forkert ud

docBase="k22"

vil jeg tro
Avatar billede arne_v Ekspert
29. august 2006 - 22:02 #19
det vil vaere naesten umuligt at faa

/a.jsp
/BServlet

til at gaa til Tomcat og

/c.php
/d.html

til IIS/PHP

rent mapnings maessigt

den ene skal vaere i et eller flere /noget/* og jeg tror at det er nemmest
hvis det er Tomcat
Avatar billede runee Nybegynder
29. august 2006 - 22:42 #20
Hmmm...jeg kan få mapningen til at virke for www.hostnavn,dk nu... der var tricket at
[uri:/k22/*]
info=K22
context=/

skulle være:
[uri:/k22/*]
info=K22
context=/

(selvfølgelig? Tror lige jeg fattede hvordan isapi'en virker - først et filter, og SÅ en redirect)
... MEN nu virker alle andre sites ikke... idéen skulle være at Tomcat KUN snupper det der går til det ene hostnavn, og ikke alle andre hostnavne...
Avatar billede runee Nybegynder
29. august 2006 - 22:53 #21
Hov... det skulle rettes til
[uri:/*]
info=K22
context=/
...
Altså at både uri og context er /

Jeg forstår så bare ikke hvorfor, resten ikke virker.. Jeg har i IIS konfigureret således:
+ Default website
  -- Bla bla.html
  -- ...html
+ RandomPHPsite
  -- Bla Bla.php
  -- ...php
+ MitJSP site (defineret med mit hostnavn)
  -- jakarta (Virtuelt directory, som jeg forstår mit filter+extension)
  -- bla bla.jsp
  -- ...jsp

Jeg troede at IIS så kun ville filtrere op imod jarkata hvis den havde et match på hostnavnet for mit jsp site ...
Avatar billede arne_v Ekspert
29. august 2006 - 22:58 #22
dit problem er altsaa at faa et saadant direktiv til kun at virke for en bestemt
virtuel host ?

Jeg tror at du skal have en:

[channel.socket:www.xxxx.dk:8009]
tomcatId=www.xxxx.dk:8009

oeverst i din workers2.properties
Avatar billede runee Nybegynder
29. august 2006 - 23:01 #23
Jep præcist... alt under denne host skal køre jsp via tomcat, alle andre hosts skal bare processes af IIS... så Tomcat må KUN snuppe det som kommer med det hostnavn (Det var hvad jeg troede jeg gjorde, når jeg definerede <host> i server.xml ?
Avatar billede arne_v Ekspert
29. august 2006 - 23:03 #24
ikke helt rigtigt

men se http://tomcat.apache.org/connectors-doc-archive/jk2/jk2/vhosthowto.html

det er ganske vist for Apache men workers2.properties formatet maa vaere det samme
Avatar billede runee Nybegynder
29. august 2006 - 23:03 #25
Skal
[channel.socket:localhost:8009]
info=Ajp13 worker, connects to tomcat instance using AJP 1.3 protocol
tomcatId=localhost:8009

stadig være der? Eller skal den erstattes af den med mit geet hostnavn ? Det gør vist ingen forskel uanset hvad... tomcat snupper alt nu, og giver en 404 hvis den ikke bliver kaldt med mit jsp hostnavn..
Avatar billede arne_v Ekspert
29. august 2006 - 23:10 #26
hvis ikke du kan faa det til at virke, saa kan jeg proeve
at integerere min IIS og Tomcat om en 3-4 timer ...
Avatar billede runee Nybegynder
29. august 2006 - 23:13 #27
Aha! Dér var den vist!

[uri:/*]
info=K22
context=/

skulle være:

[uri:www.hostnavn.dk/*]
info=K22
context=/
... havde ikke fattet at jeg kunne skrive den fulde URL der...

TAK for hjælpen - det er utroligt at en voksen mand skal holdes så meget i hånden *grin*

Og for info, hvis andre skulle løbe ind i det samme:

Definér et virtuelt site i IIS der er kendetegnet ved dit hostnavn, og hav dit jakarta filter liggende der.

Server.xml:
<Server port="8005" shutdown="SHUTDOWN">

  <GlobalNamingResources>
    <!-- Used by Manager webapp -->
    <Resource name="UserDatabase" auth="Container"
              type="org.apache.catalina.UserDatabase"
      description="User database that can be updated and saved"
          factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
          pathname="conf/tomcat-users.xml" />
  </GlobalNamingResources>

  <Service name="Catalina">
    <Connector port="8080" />

    <!-- This is here for compatibility only, not required -->
    <Connector port="8009" protocol="AJP/1.3" />

    <Engine name="Catalina" defaultHost="localhost">
      <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
            resourceName="UserDatabase" />
   
    <Host name="www.hostnavn.dk" appBase="webapps/dinapp">
        <Context path="" docBase="."/>
    </Host>
  </Engine>
  </Service>
</Server>


workers2.properties:
[shm:]
info=Shared memory file. Required for multiprocess servers
file=D:\jk2.shm
size=1000000

[channel.socket:www.hostnavn.dk:8009]
tomcatId=www.hostnavn.dk:8009

[uri:www.hostnavn.dk/*]
context=/
Avatar billede runee Nybegynder
29. august 2006 - 23:13 #28
Smider du et svar Arne ? ;-)
Avatar billede arne_v Ekspert
29. august 2006 - 23:17 #29
svar
Avatar billede arne_v Ekspert
29. august 2006 - 23:18 #30
jeg ville lave

    <Host name="www.hostnavn.dk" appBase="webapps/dinapp">
        <Context path="" docBase="."/>
    </Host>

som

    <Host name="www.hostnavn.dk" appBase="webapps">
        <Context path="" docBase="dinapp"/>
    </Host>
Avatar billede runee Nybegynder
29. august 2006 - 23:18 #31
Takker for hjælpen ;-)
Avatar billede runee Nybegynder
29. august 2006 - 23:19 #32
Jeg kan godt se idéen - men hvad er forskellen ?
Avatar billede arne_v Ekspert
29. august 2006 - 23:25 #33
hvis du laver en anden web app med path /xxxx saa vil den
komme til at ligge i webapps/xxxx fremfor webapps/dinapp/xxxx
Avatar billede arne_v Ekspert
29. august 2006 - 23:26 #34
jeg har helt glemt at spoerge: hvorfor bruger du jk2 og ikke jk ?

(udviklingen af jk2 er stoppet)
Avatar billede runee Nybegynder
29. august 2006 - 23:39 #35
Tror faktisk jeg læste en gammel tråd fra dig, der ledte mig på sporet til hvad jeg skulle installere *grin*
Jeg har desværre ikke haft tid til at sætte mig så meget ind i noget af det, mit primære fokus har været at få et jsp enabled site op at køre så hurtigt som muligt, da jeg allerede havde udviklet en del java kode, jeg meget gerne ville genbruge.. og en kunde med en meget kort deadline. Så jeg har blot fundet en hurtig guide til at få noget til at virke på IIS så hurtigt som muligt... Når det er sagt, har jeg fuld adgang til licenserede WebSphere miljøer som jeg kan bruge frit... så ja, det kan undre - og det er vel også næste skridt, når tiden er til det ;-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Uanset kodesprog, så giver vi dig mulighederne for at udvikle det, du behøver.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester