Deployment

This page describes the way we deployed the application on the university servers. It’s not the only way to do so, but one possible way. It is mostly based on the [Flask Mega Tutorial Part XVII](https://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-xvii-deployment-on-linux).

deployment.puml
 1 @startuml
 2
 3    'actor "admin" as externaladmin 
 4    actor user
 5
 6
 7    interface "HTTP\nport 80\npublic" as 80
 8    interface "HTTPS\nport 443\npublic" as 443
 9
10frame akademie {
11  component "elastic search" as elastic
12}
13
14frame uhhinternal{
15
16    actor "admin" as internaladmin 
17    'actor "user" as internaluser
18
19frame vsphere { 
20}
21node tools { 
22    component supervisor as supervisortools
23    component gunicorn as gunicorntools
24    component nginx as nginxtools
25    component "formuale-capitains-nemo" as formulaetools
26    'interface "HTTP\nport 8000\nprivate" as 8000tools
27    portin "HTTP\nport 80\npublic" as internal80
28    portin "HTTPS\nport 443\npublic" as internal443
29    database corpora as corporatools
30}
31
32    'internaluser ..> internal80
33    'internaluser ..> internal443
34    'gunicorntools -0)- nginxtools: "HTTP\nport 8000\nprivate"
35    nginxtools --> gunicorntools: "forward to"
36    nginxtools -- internal443
37    nginxtools -- internal80 
38
39    supervisortools --> gunicorntools : controls
40    'internaladmin --> supervisortools : manages
41
42    'gunicorntools -- 8000tools
43    'nginxtools ..> 8000tools : forwards to
44
45    gunicorntools --> formulaetools : serves
46    formulaetools --> corporatools: uses
47
48}
49    node werkstatt {
50    component supervisor
51    component varnish
52    component gunicorn
53    component nginx 
54    component "formuale-capitains-nemo" as formulae
55    interface "HTTP\nport 8000\nprivate" as 8000
56    database corpora
57    }
58    
59    formulae --> elastic: uses
60    formulaetools --> elastic: uses
61    
62    
63    nginx --> varnish: forward to 8080
64    
65    'internaladmin --> tools
66    'internaladmin --> werkstatt
67    'internaladmin --> vsphere
68    
69    vsphere --> werkstatt: controls
70    vsphere --> tools: controls
71    
72    'formulae --> formulaetools: "beta version of"
73
74    'server -- 80
75    'server -- 443
76
77    'user ..> 80 : use
78    'user ..> 443 : use
79
80    nginx -- 443
81    nginx -- 80 
82
83    supervisor --> gunicorn : controls
84    'externaladmin --> supervisor : manages
85
86    gunicorn -- 8000
87    nginx ..> 8000 : forwards to
88
89    gunicorn --> formulae : serves
90    formulae --> corpora: uses
91
92  @enduml