| 

.NET C# Java Javascript Exception

Frage zu Grails deployment mit Apache + Jetty

Dies ist das Archiv des ehemaligen Forums zum Thema Groovy, Grails, Griffon und Bean Scripting Framework, welches unter groovy-forum.de existierte. Die neue Adresse des Groovy-Forums ist: http://codekicker.de/fragen/themen/groovy.


Frage zu Grails deployment mit Apache + Jetty

charms - 22.09.2010 12:11
Hallo zusammen,

Das passt wahrscheinlich nicht ganz hier rein (oder doch). Ich hab nun Grails getestet und habe entschieden, dass ich daran viel Freude habe. Bevor ich nun aber anfange, fantastische Applikationen damit zu schreiben, prüfe ich das deployment und habe mich dabei auf folgendes Setup entschieden:

Debian + Apache + mod_proxy + mod_http_proxy vor Jetty.

Ich habe Jetty erfolgreich installiert, mein war file in's webapps Verzeichnis geschmissen und meine Applikation läuft wunderbar unter port 8080. Ich hab dann mal nachgelesen wie ich Apache mit mod_proxy konfiguriere und alle Webseiten erklären wie man es macht:
<VirtualHost 173.45.227.14:80>
  ServerName www.acolsolutions.com
  ErrorLog /var/log/apache2/www.acolsolutions.com.err.log
  CustomLog /var/log/apache2/www.acolsolutions.acc.log combined

  ProxyRequests Off
  # Remember to turn the next line off if you
  # are proxying to a NameVirtualHost
  # ProxyPreserveHost On

  <Proxy *>
    Order deny,allow
    Allow from all
  </Proxy>

  ProxyPreserveHost Off
  ProxyStatus On
  ProxyPass /acol [localhost]
  ProxyPassReverse /acol [localhost]
</VirtualHost>

Schön, die URL [www.acolsolutions.com] funktioniert. Wenn ich aber [www.acolsolutions.com] eingebe, geht natürlich nix.

Gut klar. Also hab ich ProxyPass und ProxyPassReverse von /acol auf / geändert. Nun kann ich die Seite zwar unter www.acolsolutions.com aufrufen, allerdings werden die Bilder nicht angezeigt, da der Pfad der Bilder /acol enthält. Ich nehme an, dass dasselbe Problem auch beim anderen statischen content auftritt.

Weiss jemand von euch, wie ich Apache und Jetty konfigurieren muss, damit die Applikation unter dem Root directory / in der VirtualHost direktive korrekt läuft, respektive den statischen content mit dem korrekten Pfad zurückliefert?

Danke für eure Hilfe.

Grüsse,
Chris


Re: Frage zu Grails deployment mit Apache + Jetty

saurier - 22.09.2010 17:33
Hallo Chris,

da gibt es sicher mehrere Möglichkeiten. Die einfachste ist wahrscheinlich, die Anwendung als root-Anwendung
im Jetty laufen zu lassen.
Eine zweite Möglichkeit wäre, die statischen Dateien direkt vom Apache ausliefern zu lassen, was auch
aus Performance-Sicht keine schlechte Idee ist. Dazu vergibst du einfach Aliase für die Dateien/Verzeichnisse:

Alias /acol/images /var/lib/tomcat6/webapps/acol/images

und dann sagst du dem Proxy noch, was er direkt liefern soll.

ProxyPass /acol/images !

Es gibt sicher noch mehr Varianten.

Gruß,
Christian


Re: Frage zu Grails deployment mit Apache + Jetty

milkyman - 23.09.2010 11:14
Zitat
saurier
> Eine zweite Möglichkeit wäre, die statischen
> Dateien direkt vom Apache ausliefern zu lassen,
> was auch aus Performance-Sicht keine schlechte Idee ist.

Da hab ich neulich hier gelernt, dass dem gar nicht mehr so ist. Die statischen Dateien werden von Tomcat/Jetty mittlerweile auch so schnell ausgeliefert wir vom Apache.

Bye,
Horst


Re: Frage zu Grails deployment mit Apache + Jetty

saurier - 23.09.2010 11:59
Zitat

Da hab ich neulich hier gelernt, dass dem gar nicht mehr so ist. Die statischen Dateien werden von Tomcat/Jetty mittlerweile auch so schnell ausgeliefert wir vom Apache.

Wenn Tomcat/Jetty alleine arbeiten mag das stimmen, aber wenn der Apache als Proxy davor sitzt, ist es
sicher schneller wenn der gleich direkt liefert, als das an Tomcat/Jetty weiterzuleiten. Aber ich gebe zu, dass
die Unterschiede in den meisten Fällen sicher kaum spürbar sind.

Gruß,
Christian


Re: Frage zu Grails deployment mit Apache + Jetty

charms - 23.09.2010 16:15
Hrmpff.... ich ärgere mich schon den ganzen Tag damit rum, wie ich dem jetty beibringen kann, dass er als root context läuft. Ich nehme mal an, man muss dazu ein xml file im context Verzeichnis erstellen.

<?xml version="1.0"  encoding="ISO-8859-1"?>
<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "[jetty.eclipse.org];

<Configure class="org.eclipse.jetty.server.handler.ContextHandler">
  <Call class="org.eclipse.jetty.util.log.Log" name="debug"><Arg>Configure acol.xml</Arg></Call>
  <Set name="contextPath">/</Set>
  <Set name="war"><SystemProperty name="jetty.home" default="."/>/usr/local/jetty/webapps/acol.war</Set>
</Configure>

Leider teilt mir jetty mit, dass die Anweisung Set name="war" nicht verstanden wird und es gibt auch nicht wirklich Doku darüber. Wäre da Tomcat vielleicht einfacher? Oder kennt jemand ein gutes Buch über die Jetty Konfiguration? Wenn Google schon Jetty benutzt, sollte der ja schon genug stabil und irgendwo dokumentiert sein. Ich benutze Jetty Hightide 7.

Wisst ihr, wie man so ein context erstellt mit / ? Oder kennt jemand ein gutes Buch das weiterhelfen könnte?

Grüsse,
Chris


Re: Frage zu Grails deployment mit Apache + Jetty

saurier - 23.09.2010 17:55
Hallo Chris,

eigentlich sollte es reichen, wenn du die war-Datei in root.war umbenennst und dann einfach ins
webapps Verzeichnis legst. Evtl den Jetty danach neu starten.

Gruß,
Christian


Re: Frage zu Grails deployment mit Apache + Jetty

charms - 23.09.2010 19:32
Hallo Christian,

Das hab ich gelesen. Allerdings möchte ich mehrere Applikationen über den Server verwalten können. So wie mit VirtualHost bei Apache. Leider gibt es noch keine Bücher für Jetty. Muss mich mal noch intensiver mit den Anleitungen auf dem Web befassen.

Ich habe grad gesehen, dass es doch massive Unterschiede zwischen Jetty6 und Hightide 7 gibt. Vielleicht muss ich einfach mal jetty6 und nicht hightide7 benutzen.

Danke für deine Antwort.

Grüsse,
Chris


Re: Frage zu Grails deployment mit Apache + Jetty

charms - 23.09.2010 20:11
Ich weiss jetzt wie.

contexts/acol.xml
<?xml version="1.0"  encoding="ISO-8859-1"?>
<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "[jetty.eclipse.org];

<Configure class="org.eclipse.jetty.webapp.WebAppContext">
  <Set name="port"><Property name="jetty.port" default="8080"/></Set>
  <Set name="war"><SystemProperty name="jetty.home"/>/webapps/acol.war</Set>
  <Set name="contextPath">/</Set>
  <Set name="virtualHosts">
    <Array type="java.lang.String">
      <Item>www.acolsolutions.com</Item>
    </Array>
  </Set>
</Configure>

So kann man mehrere Virtualhost mappen und es können mehrere <Item> direktiven angelegt werden. So kann ich schon mal testen, ob die webapp unter 8080 richtig läuft. Was schon mal gut ist. Jetzt muss ich nur noch rausfinden, wie ich es schaffe, jede applikation auf einem separaten port zum laufen zu kriegen.

www.xxx.com -> 127.0.0.1:8081
www.yyy.com -> 127.0.0.1:8082

Somit kann man dann pro Virtualhost in Apache eine proxypass regel integrieren.


Stelle deine Groovy-Frage jetzt!


Diese Seite zeigt den Thread "Frage zu Grails deployment mit Apache + Jetty" der ehemaligen Webseite groovy-forum.de, welche durch einen Serverunfall zerstört wurde. codekicker.de hat viele Konversationen über die beliebte Programmiersprache Groovy und zugehörige Frameworks wie das Grails-Framework retten können.

Hast Du eine Frage zum Thema Groovy, Grails oder allgemein Java? Viele ehemalige groovy-forum.de Mitglieder beantworten dir auf codekicker.de deine Frage! Stelle jetzt eine Frage!

Viele weitere Diskussionen zu Grails und Groovy befinden sich auf der Threadübersicht des alten groovy-forum.de.