Каков наилучший способ развертывания приложения JRuby on Rails на Tomcat? - PullRequest
10 голосов
/ 29 сентября 2008

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

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

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

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

Ответы [ 5 ]

15 голосов
/ 27 октября 2008

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

Шаг 1: Я создал задачу warble, которая будет запускаться на сервере после того, как 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'

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

Я запускаю задачи Capistrano, используя MRI, а не интерпретатор JRuby.

3 голосов
/ 29 сентября 2008

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

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

Или используйте муравья или мавена.

Или, если это просто ОДИН сервер, на котором вам нужно развернуться, вы можете просто взломать два сценария Ruby - один, который прослушивает на сервере запросы на выключение / запуск, и один локальный, на который вы запускаете: отправка выключения, scp поверх файл, отправьте автозагрузку.

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

2 голосов
/ 29 сентября 2008

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

.
2 голосов
/ 29 сентября 2008

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

1 голос
/ 07 ноября 2011

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

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

...