|
|
@ -108,8 +108,7 @@ After you have established a V.M. on A.W.S. or your own server, you |
|
|
|
will need to clone the repository (**I am assuming this is via SSH**). |
|
|
|
will need to clone the repository (**I am assuming this is via SSH**). |
|
|
|
|
|
|
|
|
|
|
|
```bash |
|
|
|
```bash |
|
|
|
# Adjust the directories to how you prefer it. These are just my |
|
|
|
# Adjust the directories to how you prefer it. These are just my defaults. |
|
|
|
defaults. |
|
|
|
|
|
|
|
mkdir www |
|
|
|
mkdir www |
|
|
|
cd www |
|
|
|
cd www |
|
|
|
git clone http://git.abbether.net/return-to-ritherdon/midpoint.git |
|
|
|
git clone http://git.abbether.net/return-to-ritherdon/midpoint.git |
|
|
@ -163,10 +162,11 @@ the 'connext_app' related to the use of the Swagger API code. |
|
|
|
gunicorn -w 3 server:connex_app |
|
|
|
gunicorn -w 3 server:connex_app |
|
|
|
``` |
|
|
|
``` |
|
|
|
|
|
|
|
|
|
|
|
The -w 3 bit refers to the total number of workers (processors) |
|
|
|
The `-w 3` bit refers to the total number of workers (processors) |
|
|
|
Gunicorn will use whilst running. The general rule to work that out it |
|
|
|
Gunicorn will use whilst running. The general rule to work that out it |
|
|
|
/(number of processors * 2) + 1. At the time of writing, the V.M. is a |
|
|
|
/(number of processors * 2) + 1. At the time of writing, the virtual |
|
|
|
very basic one-core machine so that is why three workers is used. |
|
|
|
machine used for the exhibition is a very basic one-core machine so |
|
|
|
|
|
|
|
that is why three workers is used. |
|
|
|
|
|
|
|
|
|
|
|
One problem with Gunicorn is it blocks the terminal when using it in |
|
|
|
One problem with Gunicorn is it blocks the terminal when using it in |
|
|
|
its default way. To get around this, I have install Supervisor to |
|
|
|
its default way. To get around this, I have install Supervisor to |
|
|
@ -179,19 +179,21 @@ sudo apt install supervisor |
|
|
|
``` |
|
|
|
``` |
|
|
|
|
|
|
|
|
|
|
|
When Supervisor is installed, you need to create a config. file. The |
|
|
|
When Supervisor is installed, you need to create a config. file. The |
|
|
|
file for this project is stored at |
|
|
|
file for this project is stored at, |
|
|
|
`/etc/supervisor/conf.d/spiapi.conf`. The log files (specified in the |
|
|
|
|
|
|
|
.conf) file are, |
|
|
|
- `/etc/supervisor/conf.d/spiapi.conf` |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
The log files (specified in the .conf) file are, |
|
|
|
|
|
|
|
|
|
|
|
- `/var/log/midpoint/midpoint.err.log` |
|
|
|
- `/var/log/midpoint/midpoint.err.log` |
|
|
|
- `/var/log/midpoint/midpoint.out.log` |
|
|
|
- `/var/log/midpoint/midpoint.out.log` |
|
|
|
|
|
|
|
|
|
|
|
You will to recreate the directory they are stored in if you are |
|
|
|
You will need to recreate the directory they are stored in if you are |
|
|
|
installing this site to a new system. The easiest way to do that is to |
|
|
|
installing this site on a new system. The easiest way to do that is to |
|
|
|
run the following command, |
|
|
|
run the following command, |
|
|
|
|
|
|
|
|
|
|
|
```bash |
|
|
|
```bash |
|
|
|
sudo mkdir -p /var/log/roaming-light-api |
|
|
|
sudo mkdir -p /var/log/midpoint |
|
|
|
sudo touch /var/log/midpoint/midpoint.err.log |
|
|
|
sudo touch /var/log/midpoint/midpoint.err.log |
|
|
|
sudo touch /var/log/midpoint/midpoint.out.log |
|
|
|
sudo touch /var/log/midpoint/midpoint.out.log |
|
|
|
``` |
|
|
|
``` |
|
|
@ -206,12 +208,14 @@ sudo supervisor reload |
|
|
|
It might take a little while for the service to restart so if you |
|
|
|
It might take a little while for the service to restart so if you |
|
|
|
still see "Bad Gateway" messages in the browser, that might be why. |
|
|
|
still see "Bad Gateway" messages in the browser, that might be why. |
|
|
|
|
|
|
|
|
|
|
|
You might find Gunicorn is not installed in the virtual-environment, |
|
|
|
You might find Gunicorn is not installed in the virtual-environment |
|
|
|
it that is the case, you should find it at, |
|
|
|
(if you have decided to not install one or you simply forget to |
|
|
|
|
|
|
|
activate like I have a habit of doing), it that is the case, you |
|
|
|
|
|
|
|
should find it at, |
|
|
|
|
|
|
|
|
|
|
|
- `home/ubuntu.local/bin/gunicorn` |
|
|
|
- `home/ubuntu.local/bin/gunicorn` |
|
|
|
|
|
|
|
|
|
|
|
This might, also, mean you need to use apt and not pip3. |
|
|
|
This might, also, mean you need to use `apt` and not `pip3`. |
|
|
|
|
|
|
|
|
|
|
|
The config. file for Supervisor should look something like the |
|
|
|
The config. file for Supervisor should look something like the |
|
|
|
following, (remember to adjust the places where `ubuntu` is with your |
|
|
|
following, (remember to adjust the places where `ubuntu` is with your |
|
|
@ -252,11 +256,12 @@ username. |
|
|
|
### Flask & Swagger |
|
|
|
### Flask & Swagger |
|
|
|
|
|
|
|
|
|
|
|
To access the A.P.I. user-interface (via Swagger), enter |
|
|
|
To access the A.P.I. user-interface (via Swagger), enter |
|
|
|
`http://0.0.0.0:5000/api/ui/`. |
|
|
|
|
|
|
|
|
|
|
|
-`http://0.0.0.0:5000/api/ui/` |
|
|
|
|
|
|
|
|
|
|
|
- [Real Python](https://realpython.com/flask-connexion-rest-api/#using-connexion-to-add-a-rest-api-endpoint) |
|
|
|
- [Real Python](https://realpython.com/flask-connexion-rest-api/#using-connexion-to-add-a-rest-api-endpoint) |
|
|
|
|
|
|
|
|
|
|
|
This site provides a good walk-through for setting-up a website using |
|
|
|
Real Python provides a good walk-through for setting-up a website using |
|
|
|
the Flask framework. Real Python, also, provides guides on creating |
|
|
|
the Flask framework. Real Python, also, provides guides on creating |
|
|
|
websites with Python and its various website frameworks. |
|
|
|
websites with Python and its various website frameworks. |
|
|
|
|
|
|
|
|
|
|
@ -287,8 +292,33 @@ database. To do that, you will need to run the following commands, |
|
|
|
# match your set-up. |
|
|
|
# match your set-up. |
|
|
|
cd ~/www/midpoint/app/ |
|
|
|
cd ~/www/midpoint/app/ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# If you have created and activated a virtual environment, you can |
|
|
|
|
|
|
|
# enter 'python' instead of 'python3'. |
|
|
|
python3 build-database.py |
|
|
|
python3 build-database.py |
|
|
|
``` |
|
|
|
``` |
|
|
|
|
|
|
|
|
|
|
|
This will clear the database if one is already set-up and then build a |
|
|
|
This will clear the database if one is already set-up and then build a |
|
|
|
new one. |
|
|
|
new one. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## Notes on System Limitations |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### 1. Connection Times-Out on Large JSON Packets |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
The biggest thing to remember the REST API calls which grab 'all' the |
|
|
|
|
|
|
|
light readings from every device, will start to fail fairly quickly |
|
|
|
|
|
|
|
after a 'clean install'. The reason why is because the JSON package |
|
|
|
|
|
|
|
becomes too large and the connection times out. You might get better |
|
|
|
|
|
|
|
results on a more powerfully spec'd server than the one used for the |
|
|
|
|
|
|
|
exhibition but I have not tested this so I cannot confirm this. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### 2. Three Light-Meters and Relays Specified but Only Two (of each) Used |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Ritherdon (the factory) has three welding booths so 'Personal Flash in |
|
|
|
|
|
|
|
Real-Time' was designed with this in mind. Over the course of the |
|
|
|
|
|
|
|
development process, the use of the third booth was not |
|
|
|
|
|
|
|
needed/wanted. By that time, the code, database and models had already |
|
|
|
|
|
|
|
been created. I decided to opt for the lazy option and keep the |
|
|
|
|
|
|
|
references to the third booth instead of removing it because it was |
|
|
|
|
|
|
|
not impeding on the system in any way. I was, also, cautious about the |
|
|
|
|
|
|
|
chance of a change happening late into the development cycle were I |
|
|
|
|
|
|
|
would need to put it back it. |
|
|
|