No commit activity in last 3 years
No release in over 3 years
Capistrano meets passenger 5
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

>= 0

Runtime

>= 1.2.0
 Project Readme

Capistrano Passenger 5 and Nginx

This gem intends to ease the deployment of Rails apps with capistrano to passenger5 and nginx setup.

Warning: It is only tested with Capistrano 3 and some parts of the gem might be specific to our own usage (live rbenv). You are welcome to change it or send pull requests.

What it does?

  • Deploy Rails apps to passenger 5 and Nginx combination on Server.
  • Ability to generate and upload a default Nginx configuration file for the application

How to use

Gemfile

Add this to Gemfile:

group :development do
  gem "capistrano", "~> 3.3"
  gem 'capistrano-rbenv', '~> 2.0'
  gem 'capistrano-passenger5-nginx' , :git => 'https://github.com/standout/capistrano-passenger5-nginx.git'
end

And then:

$ bundle

Capfile

Add this to your Capfile

require 'capistrano/passenger5_nginx'

Setup and usage

rails g capistrano:passenger5_nginx:config

Above command will generate the default nginx config file in your project which will be at living at /config/deploy/templates/nginx_conf.erb

Warning: Below line is commented out in nginx_conf.rb file, if your ruby version is different than the version passenger5 uses, then uncomment this line and change the path with the one one your application should use.

# passenger_ruby /your/ruby/version/path/2.2.0/bin/ruby;

Default log file directories

Nginx will be logging everything to /opt/nginx/log/ directory

Configuration

There are some flags that should be added to your production/staging.rb

These are:

  • rails_env
  • nginx_server_name
  • nginx_use_ssl (true|false)
  • passenger_min_instances (if you want to have more than one instances running your app, default 1)

Here is an example for production.rb

set :nginx_server_name, 'app.example.com'
set :nginx_use_ssl, true
set :rails_env, 'production'
set :passenger_min_instances, 2

After deploy

Run the command below for uploading the nginx configuration and reloading the nginx for the first time deploy. This config file is not uploaded after each deploy so should be done manually.

bundle exec cap production nginx:setup bundle exec cap production nginx:reload

Thanks

@kalys - for his capistrano-nginx-unicorn plugin.

@bruno- - for his capistrano-unicorn-nginx plugin.