2009-05-07 6 views
0

Ich verwende eine Grails-Anwendung als Backend für ein Flex-Frontend. Um meine Anwendungen einfach entwickeln und debuggen zu können, müsste ich eine crossdomain.xml-Datei in das Stammverzeichnis des Servers stellen, d. H. Sie muss über http://localhost:8080/crossdomain.xml erreichbar sein. Ähnliche Anwendungsfälle können die Bereitstellung einer favicon.ico oder einer robots.txt sein, dies kann jedoch in der Produktionsumgebung über einen Tomcat-Server mit einer Standard-Stammwebanwendung erfolgen.Wie platziere ich bestimmte Dateien im Stammverzeichnis des Grails-Servers?

In meinem Fall muss ich jedoch die crossdomain.xml nach dem Ausführen von Grails run-app verfügbar haben. Ich weiß, dass ich die gesamte Anwendung auf den Stamm verschieben kann (http://ca.rroll.net/2009/03/27/configuring-the-grails-root-application-context/), aber das ist auch nicht, was ich will, da die Anwendung von Grails immer noch unter seinem Standardanwendungskontext liegen sollte.

Weiß jemand, wie ich das machen kann? Muss ich den Jetty-Servlet-Container meiner Grails-Installation irgendwie neu konfigurieren?

Antwort

1

Ich denke, ich fand die Antwort. Ich habe das noch nicht probiert, also YMMV.

In dieser article diskutiert Colin Harrington die Erstellung einer crossdomain.xml-Datei im Stammverzeichnis des Servers, indem ein zusätzlicher Jetty-Kontext bereitgestellt wird.

Seine Technik wurde zum ersten Mal in diesem Blog vorgeschlagen entry, in dem der Autor diskutiert auch die Static Resources Plugin als weitere Alternative

mit
0

mir eine Möglichkeit, dies mit Apache zu lösen herausgefunden und mod_proxy. Dadurch können sowohl dein Grails-Installationsprojekt als auch dein Grails-Projekt unberührt bleiben. Kein Hacking bei den Grails-Internals, keine Plug-ins, die du in der Produktion nicht brauchst.

1. Installieren Sie Apache 2.2

Sie aber dies am sinnvollsten für Ihr Betriebssystem macht. Es ist wichtig, dass Sie Apache 2.2 installieren. Ich habe dies auf einem Ubuntu-System getan, also werden bestimmte Befehle und Dateispeicherorte für Ubuntu sein. Ändern Sie, wie für Ihr System erforderlich.

Nachdem Sie Apache installiert haben, starten Sie httpd.

sudo /sbin/service httpd start 

Testen Sie, ob es mit einem Webbrowser korrekt installiert wurde.

2. ein Verzeichnis root erstellen

einen Speicherort auf der Festplatte Wählen Sie, wo Sie Ihre statischen Dateien halten. Dies wird der Dokumentstamm für httpd sein. Ich werde/var/grails_root verwenden.

mkdir /var/grails_root 
touch /var/grails_root/crossdomain.xml 

3. einen Virtualhost in httpd.conf erstellen

öffnen httpd.conf in Ihrem bevorzugten Texteditor.

vim /etc/httpd/conf/httpd.conf 

Wählen Sie Ihren bevorzugten Port und erstellen Sie einen virtuellen Host an diesem Port. Ich werde 9090 verwenden, aber jeder Port wird es tun.

Fügen Sie diese Zeilen zu httpd hinzu.conf

Listen 9090 
<VirtualHost *:9090> 
    DocumentRoot "/var/grails_root" 
    <Directory "/var/grails_root"> 
     Allow from all 
    </Directory> 
</VirtualHost> 

Restart httpd

sudo /sbin/service httpd restart 

-Test, den Sie nun in der Lage sind, die statischen Dateien in Ihrem Dokument-Root-Verzeichnis zuzugreifen. Wenn nicht, müssen Sie dies beheben, bevor Sie mit dem nächsten Schritt fortfahren.

4. Aktivieren Sie mod_proxy und mod_proxy_http

Sie müssen diese beiden Module laden. mod_proxy verfügt über die Basisfunktionalität für die Proxyfunktion, und die mod_proxy_xxx-Module enthalten protokollspezifische Informationen. Sie liefern Standard mit httpd 2.2, so dass Sie nichts extra installieren müssen.

diese Zeilen hinzufügen

LoadModule proxy_module modules/mod_proxy.so 
LoadModule proxy_http_module modules/mod_proxy_http.so 

Nun ändern Sie den virtuellen Host Sie im vorherigen Schritt eingerichtet Httpd.conf. (Sie können die Kommentare weglassen)

<VirtualHost *:9090> 
    DocumentRoot "/var/grails_root" 
    <Directory "/var/grails_root"> 
     Allow from all 
    </Directory> 
# New lines start here 
    ProxyRequests Off 
    <Proxy *> 
     Order deny,allow 
     Allow from all 
    </Proxy> 
    ProxyPass /grailsApp http://your.grails.server:8080/grailsApp 
# New lines end here 
</VirtualHost> 

Restart httpd

sudo /sbin/service httpd restart 

Nun sollten Sie in der Lage sein, sowohl Ihre statische Dateien zuzugreifen und Ihre Grails App über den Port 9090.

Das ist alles basierend auf den hier gefundenen Informationen: http://docs.codehaus.org/display/JETTY/Configuring+mod_proxy

Informationen dazu finden Sie auf der gleichen Website mit anderen Versionen von Apache.

+0

Lange ist kein Problem. Wenn dein Blog nicht für alle Ewigkeit da ist (sehr unwahrscheinlich), paraphrasiere (oder, verdammt, kopiere einfach) den Inhalt hier. Antworten sollten mehr sein als nur "hier gehen, um die Antwort zu sehen". – cHao

+0

Okay. Der Link wurde durch den relevanten Text aus dem Blogpost ersetzt. – haydenmuhl

Verwandte Themen