vendredi 30 mai 2014

Déployer son site web Grails sur le cloud OpenShift




J'ai utilisé le cloud d'OpenShift pour déployer un site web faits en Grails. Cet article va présenter un résumé des étapes nécessaires ainsi que quelques conseils et retours d'expériences.


  Quel est la meilleur méthode pour déployer son site Grails sur OpenShift ?


La meilleur méthode que j'ai trouvé pour déployer son site Grails est de construire un war puis de le copier sur le cloud.

Par défaut, Grails a une option pour générer un war : grails war

Pour plus de détails : http://grails.org/doc/2.2.1/ref/Command%20Line/war.html


Remarque :

  • Vous pouvez utiliser le plugin Tomcat de Grails Tomcat plugin pour faire de Tomcat le servlet container utilisé par défaut lors du développement.
  • Vous pouvez effacer les fichiers non nécessaire dans votre war en ajoutant des configurations dans le fichier Config.groovy :
    1:  grails.war.resources = {  
    2:     stagingDir -> delete(dir: "$stagingDir/selenium")   
    3:  }   
    


Installation et configuration du client ssh


Il vous faut tout d'abord créer un compte sur OpenShift. Ensuite, vous pourrez configurer votre accès ssh. Il suffit simplement d'installer le package rubygems et git. Par exemple sur Gentoo, il suffit de faire ;

 emerge dev-ruby/rubygems  
 emerge git   


Si vous n'avez pas Gentoo, vous pouvez aller voir sur le site d'OpenShift  : https://www.openshift.com/get-started#cli


 gem install rhc  
 su - user  
 rhc-setup   

Voici un exemple de output de la commande rhc-setup :
#rhc setup
OpenShift Client Tools (RHC) Setup Wizard

This wizard will help you upload your SSH keys, set your application namespace, and check that other programs like Git are properly installed.

Using XXXX to login to openshift.redhat.com
Password: ******

OpenShift can create and store a token on disk which allows to you to access the server without using your password. The key is stored in your home directory and should be kept secret.  You can delete the key at any time by running 'rhc
logout'.
Generate a token now? (yes|no) yes
Generating an authorization token for this client ... lasts about 1 month

Saving configuration to /home/USER/.openshift/express.conf ... done
Checking for git ... found git version 1.8.5.5
Checking common problems .. done
Checking for a domain ... MYDOMAIN
Checking for applications ... found 1
  opendoowap http://opendoowap-totalprog.rhcloud.com/

  You are using 1 of 3 total gears
  The following gear sizes are available to you: small

Your client tools are now configured.



Déployer votre application sur le cloud

Une fois l'accès ssh configuré et que vous avez builder le war, il vous suffit de le copier sur le cloud. OpenShift utilise Git pour déployer automatiquement les applications.Si vous voulez que cela fonctionne avec un war, il y a une petite astuce : http://totalprog.blogspot.fr/2013/12/probleme-avec-le-deploiement-de-rootwar.html

Accès à votre application

 

Comment se connecter avec ssh ?

  • Logguer vous sur le site d'OpenShift.
  • Clic sur l'onglet Application.
  • Clic sur votre application.










  • A droite de l'écran, clic sur le lien : "Want to log in your application 
  • Copie la ligne sur votre console.

Par exemple :

#ssh 529e2274e0b???b@myapp.rhcloud.com


Commandes utiles :

help
tail_all
ctl_app stop
ctl_app start

Voici quelques liens utiles pour plus de détails :

  • https://www.openshift.com/developers/remote-access#keys
  • https://www.openshift.com/get-started#cli


Visitez votre site web

Le lien pour accéder à votre site web est dans la partie Application details sur le site d'OpenShift.

Temps de réponse très long

J'ai rencontré un problème lors de l' accès au  site. Le temps de chargement était vraiment très long. J'ai trouvé la solution à ce problème sur StackOverFlow :

 openshift : my local gears often timeout and go down which cause response time very long

If you do not access your application for 24 hours, it will get idled (if this is a free acount), and depending on how large your application is, it could take awhile to spin back up when you do access it again.

En fait, pour les comptes "gratuits", ils sont automatiquement  mis à "idled" si il n'y a pas d'accès pendant 24 heures.


Conclusion

Déployer un site fait avec Grails n'est pas très difficile.Si vous souhaitez voir un projet example, j'ai mis un projet sur GitHub https://github.com/drieu/fjLearning et j'ai mis en ligne le site à cette adresse :  opendoowap-totalprog.rhcloud.com