commit
e2a5f2e0d6
43
misc/Deployment.md
Normal file
43
misc/Deployment.md
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
# System deployment
|
||||||
|
|
||||||
|
___
|
||||||
|
|
||||||
|
## Prerequisites
|
||||||
|
|
||||||
|
## Client
|
||||||
|
|
||||||
|
## Database
|
||||||
|
|
||||||
|
## Backend / Flask app
|
||||||
|
|
||||||
|
In order to not have complicated and error-prone copying manoevers a direct deployment from the repo is used using git.
|
||||||
|
|
||||||
|
### File structure
|
||||||
|
|
||||||
|
### Steps
|
||||||
|
|
||||||
|
1) Created a ssh-key for the user that does the installation on the server following the Github [instructions](https://docs.github.com/en/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent).
|
||||||
|
2) Deploy generated key to the Github user account.
|
||||||
|
3) In the shell, activate ssh-agent and add the key. For example:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
eval ($ssh-agent)
|
||||||
|
ssh-add ~/.ssh/od_ed25519
|
||||||
|
```
|
||||||
|
|
||||||
|
4) Change to deployment folder
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd /var/www/brecal_test
|
||||||
|
```
|
||||||
|
|
||||||
|
5) Perform sparse checkout on the Flask server subtree
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git clone -n git@github.com:puls200/brecal.git <target_folder>
|
||||||
|
cd <target_folder>
|
||||||
|
git sparse-checkout set --no-cone src/server
|
||||||
|
git checkout
|
||||||
|
```
|
||||||
|
|
||||||
|
6) Database credentials are stored outside the web root, we are using /var/www/secure. Here the file ```connection_data.json``` is placed, a different named copy for each instance.
|
||||||
@ -13,8 +13,6 @@ from .api import ships
|
|||||||
from .api import login
|
from .api import login
|
||||||
from .api import user
|
from .api import user
|
||||||
|
|
||||||
sessions = dict()
|
|
||||||
|
|
||||||
def create_app(test_config=None):
|
def create_app(test_config=None):
|
||||||
|
|
||||||
app = Flask(__name__, instance_relative_config=True)
|
app = Flask(__name__, instance_relative_config=True)
|
||||||
@ -44,7 +42,7 @@ def create_app(test_config=None):
|
|||||||
|
|
||||||
|
|
||||||
logging.basicConfig(filename='brecal.log', level=logging.DEBUG, format='%(asctime)s | %(name)s | %(levelname)s | %(message)s')
|
logging.basicConfig(filename='brecal.log', level=logging.DEBUG, format='%(asctime)s | %(name)s | %(levelname)s | %(message)s')
|
||||||
local_db.initPool()
|
local_db.initPool(os.path.dirname(app.instance_path))
|
||||||
logging.info('App started')
|
logging.info('App started')
|
||||||
|
|
||||||
return app
|
return app
|
||||||
|
|||||||
@ -1,10 +0,0 @@
|
|||||||
{
|
|
||||||
"host" : "localhost",
|
|
||||||
"port" : 33306,
|
|
||||||
"user" : "ds",
|
|
||||||
"password" : "HalloWach_2323XXL!!",
|
|
||||||
"pool_name" : "brecal_pool",
|
|
||||||
"pool_size" : 20,
|
|
||||||
"database" : "bremen_calling",
|
|
||||||
"autocommit" : true
|
|
||||||
}
|
|
||||||
@ -4,13 +4,16 @@ import logging
|
|||||||
import json
|
import json
|
||||||
import os
|
import os
|
||||||
|
|
||||||
connection_pool = None
|
config_path = None
|
||||||
|
|
||||||
def initPool():
|
def initPool(instancePath):
|
||||||
try:
|
try:
|
||||||
|
global config_path
|
||||||
|
if(config_path == None):
|
||||||
|
config_path = os.path.join(instancePath,'../../../secure/connection_data_test.json');
|
||||||
|
|
||||||
|
print (config_path)
|
||||||
|
|
||||||
config_path = './src/server/BreCal/connection_data.json'
|
|
||||||
print (os.getcwd())
|
|
||||||
if not os.path.exists(config_path):
|
if not os.path.exists(config_path):
|
||||||
print ('cannot find ' + config_path)
|
print ('cannot find ' + config_path)
|
||||||
exit(1)
|
exit(1)
|
||||||
@ -31,7 +34,7 @@ def initPool():
|
|||||||
print(e)
|
print(e)
|
||||||
|
|
||||||
def getPoolConnection():
|
def getPoolConnection():
|
||||||
config_path = './src/server/BreCal/connection_data.json'
|
global config_path
|
||||||
f = open(config_path);
|
f = open(config_path);
|
||||||
connection_data = json.load(f)
|
connection_data = json.load(f)
|
||||||
return mysql.connector.connect(**connection_data)
|
return mysql.connector.connect(**connection_data)
|
||||||
@ -1,8 +1,12 @@
|
|||||||
|
import os
|
||||||
import sys
|
import sys
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
sys.path.insert(0, '/var/www/brecal/server')
|
sys.path.insert(0, '/var/www/brecal_test/src/server')
|
||||||
sys.path.insert(0, '/var/www/brecal/venv/lib/python3.10/site-packages/')
|
sys.path.insert(0, '/var/www/venv/lib/python3.10/site-packages/')
|
||||||
|
|
||||||
|
# set the key
|
||||||
|
os.environ['SECRET_KEY'] = 'zdiTz8P3jXOc7jztIQAoelK4zztyuCpJ'
|
||||||
|
|
||||||
# Set up logging
|
# Set up logging
|
||||||
logging.basicConfig(stream=sys.stderr, level=logging.DEBUG)
|
logging.basicConfig(stream=sys.stderr, level=logging.DEBUG)
|
||||||
|
|||||||
Reference in New Issue
Block a user