Как лучше всего развернуть приложение JRuby on Rails в Tomcat?

StackOverflow https://stackoverflow.com/questions/147671

Вопрос

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

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

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

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

Это было полезно?

Решение

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

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

Или используйте Ant или Maven.

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

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

Другие советы

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

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

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.Если вам это не нравится, вы можете легко изменить задачу трели, переместив вместо этого файл 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.

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

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

Есть несколько рецептов Capistrano для развертывания на Tomcat. Я встроил один из них в драгоценный камень под названием капистрано-кот.Требуется ВОЙНА, которую вы построили (вероятно, с славка), а также развертывает и запускает экземпляр Tomcat на удаленном сервере.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top