Setup remote date source

Besides the local pyLARDA variant, a remote data source can be set up. The data_containers for a requested time/range interval are then loaded from the server via http and compressed with msgpack.

Additional requirements

flask
flask_cors
cbor
gunicorn

Attention

It is strongly recommended to use an virtural environment. python3 -m venv larda-env

Setup

gunicorn

Adapt the larda/http_server/gunicorn_config.py to your needs. gunicorn will the backend at the specified port (default: 7979). To run gunicorn permanently a service has to be set up. On older operating systems upstart might be available, newer ubuntu versions use systemd.

upstart

Put the config into the upstart dir (usually /etc/init/weblarda3.conf) Likely you will have to adapt the location of the python executable.

description "weblarda3"

start on started sshd
stop on shutdown

chdir /home/larda3/larda/http_server
exec /home/larda3/miniconda3/bin/gunicorn http_server:app -c gunicorn_config.py

The server can be started with start weblarda3

systemd

The configuration is usually located in /etc/systemd/system/weblarda3.service

[Unit]
Description=weblarda3
After=network.target

[Service]
User=larda3
#Restart=on-failure
Restart=always
RuntimeMaxSec=10800
WorkingDirectory=/home/larda3/larda/http_server
ExecStart=/home/larda3/larda-env/bin/gunicorn -c gunicorn_config.py http_server:app

[Install]
WantedBy=multi-user.target

systemctl daemon-reload systemctl enable weblarda3 systemctl start weblarda3

Hint

Systems running SELinux might require a modification of the type enforcement rules

  • Now check with curl localhost:7979/api/. The response should be a list of available campaigns.
  • to make the gunicorn server at port 7979 accessible by the outside, a proxy server (apache/nginx) has to be set up.

apache

For example the apache site configuration might look like

<VirtualHost *:80>
    ServerName larda.tropos.de
    DocumentRoot /lacroshome/larda/www/
    ErrorLog logs/larda_error_log
    CustomLog logs/larda_custom_log common

    ProxyPreserveHost On
    ProxyPass /larda3/ http://127.0.0.1:7979/ timeout=600 Keepalive=On
    ProxyPassReverse /larda3/ http://larda.tropos.de/larda3/ timeout=600
</VirtualHost>

When in doubt, contact your sysadmin.

frontend

The files for the larda frontend (data availability overview and explorer) can be placed in http_server/public.

Note

TODO: make the frontend files downloadable

cronjob

The connectordump should be updated regularly with a cronjob calling ListCollector.py, to speed up data loading.

Finally, the remote can be used:

larda = pyLARDA.LARDA('remote', uri='http://<the server>')