Mina Nginx
Mina tasks for handle with Nginx.
This gem provides several mina tasks:
mina nginx:install  # Install template config to host repo for easy overrides
mina nginx:setup    # Install config file to the server's shared dir + symlink
mina nginx:print    # Parse & print the nginx config
mina nginx:reload   # Reload Nginx
mina nginx:restart  # Restart Nginx
mina nginx:start    # Start Nginx
mina nginx:status   # Status Nginx
mina nginx:stop     # Stop Nginx
mina nginx:certbot  # Obtain/renew SSL certificate using Certbot
Installation
Add this line to your application's Gemfile, then bundle install:
gem 'mina-nginx', :require => false
Once installed, add this to your config/deploy.rb file:
require 'mina/nginx'
Install the base template to your repo's lib/mina/templates directory:
$ bundle exec mina nginx:install
Consider variables used by the nginx config, particularly:
- 
application_name- application name; defaults to 'application' - 
nginx_socket_path- path to socket file used in nginx upstream directive - 
server_name- application's nginx server_name (e.g. example.com); defaults to value fordomain - 
domain- fqdn you are deploying to - 
deploy_to- deployment path - 
current_path- current revision path 
For SSL certificate management with Certbot:
- 
certbot_email- email for Let's Encrypt notifications (optional if certbot is already configured) - 
certbot_domains- domains to obtain certificate for; defaults tonginx_server_name(comma-separated) - 
certbot_extra_flags- additional certbot flags (e.g.,--dry-run --stagingfor testing) 
Edit installed template as required.
Recommended Usage
- Follow install steps above; and
 - Invoke 
nginx:setupin your mainsetuptask - Run 
nginx:setup(or basesetup) to install config changes 
n.b. if the config template has not been installed locally, mina-nginx will
fall back to the default template gracefully.
SSL Certificate Setup with Certbot
To obtain an SSL certificate using Let's Encrypt:
- 
Ensure certbot is installed with the nginx plugin:
sudo apt-get install certbot python3-certbot-nginx # Debian/Ubuntu - 
Configure your
deploy.rb:set :nginx_server_name, 'example.com www.example.com' set :certbot_email, 'admin@example.com' # Optional if certbot is already configured
 - 
Run the certbot task:
$ bundle exec mina nginx:certbot 
Certbot will automatically:
- Obtain the SSL certificate
 - Update your nginx configuration
 - Reload nginx
 
For testing, use the staging environment:
set :certbot_extra_flags, '--dry-run --staging'Note: The nginx plugin for certbot automatically handles all nginx configuration updates and service reloads.
Contributing
- Fork it ( http://github.com/hbin/mina-nginx/fork )
 - Create your feature branch (
git checkout -b my-new-feature) - Commit your changes (
git commit -am 'Add some feature') - Push to the branch (
git push origin my-new-feature) - Create new Pull Request