No commit activity in last 3 years
No release in over 3 years
Apache Tomcat, a Java servlet container, runs WARs These deployment recipes help to run a Tomcat instance with your own WAR files from Capistrano.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Runtime

 Project Readme

Tomcat extensions for Capistrano

Usage

In your Rails app's deployment recipe (config/deploy.rb):

require 'capistrano/tomcat'

Then, once you have built your WAR into artifacts/appname.war, you can use the Capistrano deployment as you would for Passenger.

$ rake package
$ cap deploy:setup
$ cap deploy

Configuration

The default configuration uploads artifacts/yourapp.war to your app servers and starts Tomcat on port 8080.

Ports

  • tomcat_base_port: controls the other ports as well. Defaults to 8005.
  • tomcat_ajp_port: defaults to 8009 (tomcat_base_port + 4)
  • tomcat_http_port: defaults to 8080 (tomcat_base_port + 75)
  • tomcat_https_port: defaults to 8443 (tomcat_base_port + 438)

Directories and files

  • catalina_home: location of the base Tomcat installation, defaults to /usr/share/tomcat6
  • catalina_executable: location of the Tomcat executable, defaults to /usr/sbin/tomcat6. In a standard Tomcat installation this would be ${CATALINA_HOME}/bin/catalina.sh or ${CATALINA_HOME}/bin/catalina.bat

For the Tomcat installed with Red Hat Enterprise Linux packages, the following settings are appropriate:

cset :catalina_home '/usr/share/tomcat6'
cset :catalina_executable, '/usr/sbin/tomcat6'

Additional pieces

If you need Tomcat to run with additional environment variables, you can use the tomcat_runtime_env setting. For example:

cset :tomcat_runtime_env, {'MYAPP_DB_HOSTNAME' => 'db.example.com'}

If you are using the Java keystore for SSL, you can set the password with keystore_password.

Unpacking the WAR

Some tasks and applications rely on the standard Rails files being available on the filesystem. If you need to explode the WAR before Tomcat gets to it, you can include the following lines in your recipe:

after "deploy:update_code", "tomcat:unpack_war"
after "tomcat:unpack_war", "tomcat:finalize_unpacked_war"