Deploy

There are several options for sanic server deployment:

Running sanic servers behind nginx makes several advantages:

Template configuration files for nginx and systemd are presented below. For more information, you can visit sanic.readthedocs.io.

Configuration file for nginx

upstream aiohttp {
    server 127.0.0.1:5071 fail_timeout=0;
    server 127.0.0.1:5072 fail_timeout=0;
}

server {
    listen 5070;
    client_max_body_size 4G;
    server_name luna_configurator;

    location / {
      proxy_set_header Host $http_host;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_redirect off;
      proxy_buffering off;
      proxy_pass http://aiohttp;
    }
}

Configuration file for systemd

Config should be located in directory /etc/systemd/system/

[Unit]
Description=Luna Configurator on port %i
After=network.target

[Service]
Restart=always
RestartSec=5
User=luna
Group=luna
SyslogIdentifier=luna-configurator-%i
WorkingDirectory=/var/lib/luna/current/luna-configurator/luna_configurator
ExecStart=/var/lib/luna/current/luna-configurator/venv/bin/python ./run.py --port=%i --workers=1 --config-reload=0 --log_suffix=%i --config=./configs/config.conf


[Install]
WantedBy=multi-user.target

Start 2 instances on ports 5071, 5072:

sudo systemctl start luna-configurator\@{5071..5072}.service