### Web App Hosting (static HTML)
Web app is deployed to an S3 bucket. Each top level directory in this bucket
represents a different deployed environment. For example:
s3://pm.jdb-labs.com
├── prod
│ ├── logs
│ │ └── cloudfront
│ └── webroot
│ ├── css
│ ├── img
│ ├── js
│ ├── index.html
│ └── ...
└── dev
├── logs
└── webroot
### API Hosting
API is served from razgriz:
* dev: https://pmapi-dev.jdb-labs.com (:80 -> :8281)
* prod: https://pmapi.jdb-labs.com (:80 -> :8280)
#### Server Setup Notes
The home folder of the `pmapi` user, like the S3 bucket, contains one folder
for each environment:
/home/pmapi
├── dev
│ ├── personal_measure_api
│ └── personal_measuer_api.config.json
└── prod
├── personal_measure_api
└── personal_measuer_api.config.json
As part of the automated deployment process, pmapi.jdb-labs.com has one systemd
service definitions for each environment. The sudoers file allows the `pmapi`
user to manage these without a password.
# Allow pmapi to manage the personal_measure_api service
pmapi ALL=NOPASSWD: /bin/systemctl stop personal_measure_api.prod.service
pmapi ALL=NOPASSWD: /bin/systemctl start personal_measure_api.prod.service
pmapi ALL=NOPASSWD: /bin/systemctl stop personal_measure_api.dev.service
pmapi ALL=NOPASSWD: /bin/systemctl start personal_measure_api.dev.service
### Database
razgriz-db.jdb-labs.com RDS instance maintains databases for each environment:
* dev: `personal_measure_dev`
* prod: `personal_measure`
### Routing
CloudFront manages the routing of all of the external facing URLs.
https://pm.jdb-labs.com (CloudFront)
└── s3://pm.jdb-labs.com/prod/webroot (static HTML)
https://pm-dev.jdb-labs.com (CloudFront)
└── s3://pm.jdb-labs.com/dev/webroot (static HTML)