Standalone starlette app which receives a new site build request, and builds the site. (ref Subscribie/module-builder#7)
Responsible for building new subscribie sites.
- When a new site is created (via /start-building), all data needed to build the site is sent (as json) to this endpoint which then builds a new subscribie site
 - Site settings are in an .env file
 - Each site runes in its own isolates process (using uwisgi), using the same subscribie repo
- Note Each site runs independently with its own database, but the codebase is not duplicated.
 - This is different from a previous implementation which cloned the Subscribie repo for each new site.
 
 - Each site runs as a uwsgi 'vassal' which allows new sites to come online without having to restart the web server
 
virtualenv -p python3 venv
. venv/bin/activate
pip install -r requirements.txt
- Copy .env.example to .env
- Edit SITES_DIRECTORY to directory where to deploy sites to
 - And all other env settings
 
 
For running locally in development: ./run.sh
- 
Clone subscribie to a folder on a deployment server. Set
SUBSCRIBIE_REPO_DIRECTORYto the repo folder. - 
Create a
virtualenvfolder and set toPYTHON_VENV_DIRECTORY, pip install the requirements.txt - 
Go into the subscribie shared repo, and create a database schema using
flask db upgradeinsidePYTHON_VENV_DIRECTORY- Copy 
.env.exampleto.envand setSQLALCHEMY_DATABASE_URItoSUBSCRIBIE_REPO_DIRECTORYroot (the empty schema is copied to new sites to speed up new site deployments 
 - Copy 
 - 
Back into this repo (deployer) Set
PYTHON_PATH_INJECTto the same value asSUBSCRIBIE_REPO_DIRECTORY 
How to run:
uwsgi --ini config.ini # add -d to demonize
Ensure that dir /tmp/sockets/ exists (for the vassal sites .ini files)
Then chmod /tmp/sock1 (todo fix this using chmod uwsgi flag)
# mysite_nginx.conf
#
# configuration of the server
server {
    # the port your site will be served on
    listen      80;
    # the domain name it will serve for
    server_name *.app1 example.com ~^.*.example.com app2 site1.local site2.local; # substitute your machine's IP address or FQDN
    root /home/chris/Documents/python/uwsgi/vassals/;
    charset     utf-8;
    client_max_body_size 75M;
    # max upload size
    location / {
        proxy_pass http://127.0.0.1:8002/;
    }
}
(Using ip rather than sockets)
<VirtualHost *:80>
  ServerAdmin webmaster@localhost
  DocumentRoot /var/www/html
  ErrorLog ${APACHE_LOG_DIR}/error.log
  CustomLog ${APACHE_LOG_DIR}/access.log combined
  ServerName example.com
  ServerAlias *.example.com
  ProxyPass / http://127.0.0.1:8002/
</VirtualHost>
curl http://127.0.0.1:5001/ -d '{"company": {"name": "My Test Shop"}, "users": ["sam@example.com"], "password": "123", "plans": [{"title": "Hair Gel", "description": "Luxuary hair gel", "interval_amount": 100, "interval_unit": "monthly", "sell_price": 1500}]}'