### 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)