diff --git a/bench/config/nginx.py b/bench/config/nginx.py index a8516370..13d01b94 100644 --- a/bench/config/nginx.py +++ b/bench/config/nginx.py @@ -1,4 +1,4 @@ -import os, json, click, random, string +import os, json, click, random, string, hashlib from bench.utils import get_sites, get_bench_name, exec_cmd def make_nginx_conf(bench_path, yes=False): @@ -12,13 +12,17 @@ def make_nginx_conf(bench_path, yes=False): config = get_config(bench_path) sites = prepare_sites(config, bench_path) + bench_name = get_bench_name(bench_path) + bench_name_hash = hashlib.sha256('bench_name').hexdigest()[:16] + nginx_conf = template.render(**{ "sites_path": sites_path, "http_timeout": config.get("http_timeout"), "sites": sites, "webserver_port": config.get('webserver_port'), "socketio_port": config.get('socketio_port'), - "bench_name": get_bench_name(bench_path), + "bench_name": bench_name, + "bench_name_hash": bench_name_hash, "error_pages": get_error_pages(), # for nginx map variable diff --git a/bench/config/templates/nginx.conf b/bench/config/templates/nginx.conf index a086a250..ebcae666 100644 --- a/bench/config/templates/nginx.conf +++ b/bench/config/templates/nginx.conf @@ -139,6 +139,8 @@ upstream {{ bench_name}}-socketio-server { server 127.0.0.1:{{ socketio_port or 3000 }} fail_timeout=0; } +limit_conn_zone $host zone=per_host_{{ bench_name_hash }}:3000m; + # setup maps {%- set site_name_variable="$host" %} {% if sites.domain_map -%} diff --git a/playbooks/install.py b/playbooks/install.py index d337c7bb..7167c3df 100755 --- a/playbooks/install.py +++ b/playbooks/install.py @@ -5,6 +5,8 @@ from distutils.spawn import find_executable tmp_bench_repo = '/tmp/.bench' def install_bench(args): + check_brew_installed() + # pre-requisites for bench repo cloning install_package('curl') install_package('wget') @@ -139,6 +141,20 @@ def install_package(package): if not success: could_not_install(package) +def check_brew_installed(): + if 'Darwin' not in os.uname(): + return + + brew_exec = find_executable('brew') + + if not brew_exec: + raise Exception(''' + Please install brew package manager before proceeding with bench setup. Please run following + to install brew package manager on your machine, + + /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" + ''') + def clone_bench_repo(args): '''Clones the bench repository in the user folder''' if os.path.exists(tmp_bench_repo):