nginx-quickdeploy

Nginx Quickdeploy


Keywords
deployment, nginx, webserver, website-development
License
MIT
Install
pip install nginx-quickdeploy==0.4.2

Documentation

NGINX QUICKDEPLOY

Code style: black Build Workflow PyPi Latest Release

About

Helps you create and deploy websites on nginx quickly.

Installation

pip3 install nginx-quickdeploy

Usage

Variables:

  • 'FQDN' : Fully Qualified Domain Name, name of your website
  • Nginx config path: Path where your generated config file is stored.
  • Ports: Ports to listen to, in format: <port1> [ssl], <port2> [ssl]
  • Root path: Path where your html files are located
  • Proxy: If your actual application is running on some other port, you can proxy pass and use nginx as webserver. For that just use this function, if not leave it empty
  • Hook : Post deployment shell script you want to be run

CLI

  -h, --help                          Show this help message and exit
  -i [INPUT], --input [INPUT]         Input json file for easy installation
  -d [DOMAIN], --domain [DOMAIN]      Domain you want to set up.
  -p [PATH], --path [PATH]            Config file path
  --ports [PORTS]                     Ports to listen to separated by comma(,)
  -w [WEBROOT], --webroot [WEBROOT]   Webroot folder containing index.html
  -f [FORWARD], --forward [FORWARD]   Proxy pass URL
  --ssl_cert_path [SSL_CERT_PATH]     SSL certificate path
  --ssl_key_path [SSL_KEY_PATH]       SSL key path
  --hook                              Post install hook, a shell script you want to launch after
                                      deployment is complete.

JSON input:

Json input is also supported for easier deployment. Following keys are supported:

  • url : mandatory : provide FQDN
  • path : optional : provide path to be written config, default /etc/nginx/sites-available/{URL}
  • ports : optional, list : provide ports to listen and with ssl or not, default 80 on both interfaces
  • root : optional : path to webroot folder, default /var/www/html/{url}
  • proxy : optional : path to http proxy if you have an app running behind nginx
  • ssl_cert_path : optional : SSL cert path if you have ssl enabled
  • ssl_key_path : optional : SSL key path if you have ssl enabled

Json example

{
  "url": "www.example.org",
  "path": "/usr/shared/www.example.org",
  "ports": ["80", "[::]:80", "443 ssl", "[::]:443 ssl"],
  "root": "/var/www/html",
  "proxy": "https://app.example.org:8080",
  "ssl_cert_path": "/etc/ssl/myexample.org/cert.crt",
  "ssl_key_path": "/etc/ssl/myexample.org/key.pem"
}

yields:

server {
root /var/www/html;
index index.html index.htm index.nginx-debian.html;
server_name www.example.org;
listen 80;
listen [::]:80;
listen 443 ssl;
listen [::]:443 ssl;
ssl_certificate /etc/ssl/myexample.org/cert.crt;
ssl_certificate_key /etc/ssl/myexample.org/key.pem;
location / {
  proxy_pass https://app.example.org:8080;
  }
}

Tips and Examples

Invoke the script with sudo rights if you want to write to /etc/ngnix/sites-available as it is write protected for non sudo users.

# sudo quickdeploy

FQDN of your domain, e.g. example.com or subdomain.example.com without http or https:  www.example.org
Where should the new config file be saved?, default is /etc/nginx/sites-available/www.example.org :
Ports separated by commas(,) in nginx fashion, like 80, [::]:80 etc
For ssl, just add ssl after the port, e.g. 80, 443 ssl, [::]:80, [::]:443 ssl
Enter ports here:
Enter the www root path(default /var/www/html):
Should this server need to proxy_pass, enter the address here:

Your new website was deployed successfully
Restart nginx to serve it via nginx.

would yield a config file that looks like this:

server {
  root /var/www/html;
  server_name www.example.org;
  listen 80;
   location / {
       try_files $uri $uri/;
   }
}