Я запускаю проект 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.