2008-09-29 3 views
10

Я ищу способы развертывания приложения Ruby on Rails (работающего на JRuby) для экземпляра Tomcat для тестирования.Каков наилучший способ развертывания приложения JRuby on Rails для Tomcat?

Экземпляр tomcat работает на сервере Solaris, к которому я могу подключиться SSH. Я посмотрел на использование Capistrano, но, похоже, там не так много, чтобы использовать его для развертывания в Tomcat или даже для запуска его под JRuby, и я продолжаю сталкиваться с ошибками в Capistrano из-за среды Windows/JRuby мой компьютер работает (да, это корпоративный - не мой выбор, но я должен жить с ним).

Я использую warble для создания файла .war, и приложение развертывается и работает отлично, как только я вручную его скопирую и разворачиваю. Я хочу, чтобы что-то проще и более автоматизировано, чтобы на самом деле получить его там.

Кто-нибудь сделал это раньше? Документация в Интернете кажется довольно тонкой.

ответ

3

У меня нет большого опыта в этом, поэтому я не знаю, могу ли я дать вам ЛУЧШИЙ способ, но если Capistrano не работает, и вы не можете иметь отдельную установку МРТ только для запуска это, у вас есть только несколько вариантов осталось:

Попробуйте запустить простой Грабли и написать свою собственную цель развертывания: http://www.gra2.com/article.php/deploy-ruby-on-rails-applications-rake

или использовать Ant или Maven.

Или, если вам нужен только один сервер, вы можете просто взломать два сценария Ruby - один, который прослушивает на сервере запросы на завершение работы/запуск, и один локальный, на котором вы запускаете: Отправить shutdown, scp over файл, отправьте запуск.

Кстати, вы отправили какие-либо ошибки интеграции, которые вы нашли с Capistrano в команду JRuby? Я уверен, что они были бы рады внести какой-либо вклад. :)

+0

Великий, что такой подход в конечном итоге является простым круглым. Завершен с использованием plink.exe, а не SSH (находясь на окнах). У меня есть некоторые исправления для проблем с капсистано, которые я ударил, и еще несколько ошибок, которые я не исправил. Я отправлю их в capistrano :) – madlep 2008-09-29 23:25:39

2

Возможно, стоит взглянуть на «Владелец развертывателя», он добавляет remote_task в Rake, позволяющий запускать задачи на удаленном сервере. Лично, однако, я предпочитаю иметь стандартную задачу Rake на сервере, ssh in и запускать эту задачу, которая затем выполнит проверку svn, сделает файл WAR, независимо от того, ...

2

Я бы, вероятно, использовал Ant для этого. В конце концов, это просто еще один WAR-файл, верно? Я не знаю, какую версию Tomcat вы используете, но версию 4.1x comes with an Ant task for deploying to Tomcat.

15

Я запускаю проект Rails с использованием JRuby и развертывания на сервере Tomcat. Я выбрал развертывание с Capistrano, потому что он автоматизирует практически все. Я должен был сделать несколько незначительных изменений в жизненном цикле развертывания Capistrano для того, чтобы заставить его работать на Tomcat:

Шаг 1: Я создал трель задачу, которая будет выполняться на сервере после Capistrano обновляет код:

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

и подключили его в Capistrano жизненного цикла с помощью:

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

сервер My Tomcat имеет символическую ссылку, указывающую на #{release_path}/tmp/war каталог, созданный трель. Если вам это не нравится, вы можете легко изменить задачу warble, чтобы переместить файл войны в каталог Tomcat.

Шаг 2: Я перегрузил deploy:start и deploy:stop задачи так, чтобы они пнуть сервер Tomcat вместо сервера 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 

Я запускать задачи Капистранна с помощью МРТ, а не интерпретатора JRuby.

1

Есть несколько рецептов Capistrano для развертывания в Tomcat - я построил один в драгоценный камень под названием capistrano-tomcat. Требуется WAR, который вы создали (возможно, с Warbler), и развертывает и запускает экземпляр Tomcat на удаленном сервере.

Источник находится на Github: http://github.com/rhunter/capistrano-tomcat

Смежные вопросы