2009-05-07 5 views
0

J'utilise une application grails comme backend pour une interface Flex. Pour pouvoir développer et déboguer facilement mes applications, je devrais placer un fichier crossdomain.xml dans la racine du serveur, c'est-à-dire qu'il doit être accessible via http://localhost:8080/crossdomain.xml. Des cas d'utilisation similaires peuvent être le déploiement d'un fichier favicon.ico ou d'un fichier robots.txt, mais cela peut être fait dans l'environnement de production via un serveur Tomcat avec une application Web racine par défaut.Comment placer certains fichiers dans le répertoire racine du serveur Grails?

Dans mon cas, cependant, j'ai besoin d'avoir le fichier crossdomain.xml disponible après l'exécution de grails run-app. Je sais que je peux déplacer la totalité de l'application à la racine (http://ca.rroll.net/2009/03/27/configuring-the-grails-root-application-context/) mais ce n'est pas ce que je veux, puisque l'application Grails devrait toujours se trouver en dessous de son contexte d'application par défaut.

Est-ce que quelqu'un sait, comment je peux faire cela? Est-ce que je dois reconfigurer le conteneur de servlet de jetée de mon installation de grails d'une manière ou d'une autre?

Répondre

1

Je pense avoir trouvé la réponse. Je n'ai pas encore essayé, donc YMMV.

Dans ce article, Colin Harrington discute de rendre un fichier crossdomain.xml disponible à la racine du serveur en déployant un contexte Jetty supplémentaire.

Sa technique a d'abord été proposé dans ce blog entry, où l'auteur aborde également l'utilisation du Static Resources Plugin comme une autre alternative

0

Je me suis un moyen de résoudre ce avec Apache et mod_proxy. Cela permet à votre installation Grails et à votre projet Grails de rester intacts. Pas de piratage à l'intérieur des Grails, pas d'ajout de plug-ins dont vous n'avez pas besoin en production.

1. Installez Apache httpd 2.2

Est-ce que cela rend cependant le plus de sens pour votre système d'exploitation. Il est important d'installer Apache 2.2. Je l'ai fait sur un système Ubuntu, donc les commandes spécifiques et les emplacements de fichiers seront pour Ubuntu. Modifiez si nécessaire pour votre système.

Après avoir installé Apache, démarrez httpd.

sudo /sbin/service httpd start 

Vérifiez qu'il est installé correctement à l'aide d'un navigateur Web.

2. Créez un répertoire racine

Choisissez un emplacement sur votre disque sur lequel vous garderez vos fichiers statiques. Ce sera la racine du document pour httpd. J'utiliserai/var/grails_root.

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

3. Créer une VirtualHost dans httpd.conf

httpd.conf Ouvrir dans votre éditeur de texte favori.

vim /etc/httpd/conf/httpd.conf 

Choisissez votre port favori et créez un hôte virtuel sur ce port. Je vais utiliser 9090, mais tout port fera l'affaire.

Ajoutez ces lignes à httpd. 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 

Vérifiez que vous êtes maintenant en mesure d'accéder aux fichiers statiques dans votre répertoire racine des documents. Si ce n'est pas le cas, vous devrez résoudre ce problème avant de passer à l'étape suivante.

4. Activez mod_proxy et mod_proxy_http

Vous devez charger ces deux modules. mod_proxy a la fonctionnalité de base pour le mandatement, et les modules mod_proxy_xxx ont des informations spécifiques à un protocole. Ils expédient standard avec httpd 2.2, donc vous ne devriez pas avoir besoin d'installer quoi que ce soit d'autre.

Ajouter ces lignes à HTTPD.conf

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

modifier maintenant l'hôte virtuel que vous avez configuré à l'étape précédente. (Vous pouvez ignorer les commentaires)

<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 

Maintenant, vous devriez être en mesure d'accéder aux fichiers statiques et votre application Grails via le port 9090.

Tout cela est basé sur l'information trouvée ici: http://docs.codehaus.org/display/JETTY/Configuring+mod_proxy

Les informations pour ce faire avec d'autres versions d'Apache sont disponibles sur le même site.

+0

La longueur n'est pas un problème. À moins que votre blog soit pour l'éternité (très peu probable), paraphraser (ou, diable, juste copier) le contenu ici. Les réponses devraient être plus que simplement «allez ici pour voir la réponse». – cHao

+0

Okay. Remplacé le lien avec le texte pertinent de l'article de blog. – haydenmuhl

Questions connexes