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
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 directiveserver_name- application's nginx server_name (e.g. example.com); defaults to value fordomaindomain- fqdn you are deploying todeploy_to- deployment pathcurrent_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.
- 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.
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, '[email protected]' # 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.
- 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