Question

Je cherche des moyens de déployer une application Ruby on Rails (exécutée sur JRuby) sur une instance Tomcat à des fins de test.

L'instance tomcat s'exécute sur un serveur Solaris sur lequel je peux utiliser SSH. J'ai déjà envisagé d'utiliser Capistrano, mais il ne semble pas y avoir grand-chose à propos de son utilisation sur Tomcat, ni même de son exécution sous JRuby, et je continue à frapper des bogues à Capistrano en raison de l'environnement Windows / JRuby. mon ordinateur fonctionne (oui, c'est une entreprise - ce n'est pas mon choix, mais je dois vivre avec.)

J'utilise warble pour créer le fichier .war. L'application se déploie et fonctionne correctement une fois que je l'ai copié manuellement et déployé. Je veux quelque chose de plus facile et plus automatisé pour y arriver.

Quelqu'un a déjà fait ça avant? La documentation sur le Web semble assez mince.

Était-ce utile?

La solution

Je n'ai pas beaucoup d'expérience à ce sujet, donc je ne sais pas si je peux vous donner la meilleure façon, mais si Capistrano ne fonctionne pas, vous ne pouvez pas installer une IRM séparée juste pour l'exécuter. , il ne vous reste que quelques alternatives:

Essayez d’exécuter Rake et d’écrire votre propre cible de déploiement: http://www.gra2.com/article. php / deploy-ruby-on-rails-applications-rake

Ou utilisez Ant ou Maven.

Ou si vous ne devez déployer que UN SEUL serveur, vous pouvez simplement pirater deux scripts Ruby: un qui écoute les demandes d’arrêt / de démarrage sur le serveur et un local que vous exécutez: Envoi, arrêt, scp sur le serveur. fichier, envoi au démarrage.

Au fait, avez-vous soumis à l’équipe de JRuby des bugs d’intégration rencontrés avec Capistrano? Je suis sûr qu'ils seraient heureux d'avoir n'importe quelle contribution. :)

Autres conseils

J'exécute un projet Rails avec JRuby et le déploiement sur un serveur Tomcat. J'ai choisi de déployer avec Capistrano car cela automatise à peu près tout. J'ai dû apporter quelques modifications mineures au cycle de vie du déploiement de Capistrano afin de le faire fonctionner sur Tomcat:

Étape 1: j'ai créé une tâche warble à exécuter sur le serveur après la mise à jour par Capistrano du code:

desc "Run the warble command to deploy the site"
namespace(:deploy) do
  task :warble do
    run ". ~/.profile;cd #{release_path};warble"
  end
end

Et l'a intégré au cycle de vie de Capistrano à l'aide de:

after 'deploy:update_code', 'deploy:warble'

Mon serveur Tomcat a un lien symbolique pointant vers le répertoire # {release_path} / tmp / war créé par warble. Si vous n'aimez pas cela, vous pouvez facilement modifier la tâche warble pour déplacer le fichier war dans le répertoire Tomcat.

Étape 2: j'ai remplacé les tâches deploy: start et deploy: stop afin qu'elles lancent le serveur Tomcat au lieu d'un serveur Mongrel:

desc "Starts the Tomcat Server"
namespace(:deploy) do
  task :start do
    sudo "#{tomcat_home}/bin/startup.sh"
  end
end

desc "Shutdown the Tomcat Server"
namespace(:deploy) do
  task :stop do
    sudo "#{tomcat_home}/bin/shutdown.sh"
  end
end

J'exécute les tâches Capistrano en utilisant l'IRM plutôt que l'interpréteur JRuby.

Il serait peut-être intéressant de regarder 'Vlad le déployeur', il ajoute remote_task à Rake, ce qui vous permet d'exécuter des tâches sur un serveur distant. Personnellement, je préfère avoir une tâche standard de rake sur le serveur, ssh et l’exécuter - ce qui ferait ensuite une commande svn, créerait le fichier WAR, peu importe ...

J'utiliserais probablement Ant pour cela. Après tout, ce n'est qu'un autre fichier WAR, n'est-ce pas? Je ne sais pas quelle version de Tomcat vous utilisez, mais la version 4.1x est fournie avec une tâche Ant pour le déploiement. vers Tomcat .

Il existe quelques recettes Capistrano pour le déploiement sur Tomcat - j'ai intégré l'une d'elles dans un joyau appelé de capistrano-tomcat . Il faut un WAR que vous avez construit (probablement avec Warbler ), puis déploie et démarre une instance de Tomcat sur une serveur distant.

La source est affichée sur Github: http://github.com/rhunter/capistrano-tomcat

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top