# Luna Streams v.0.6.2 documentation

## Deploy

There are several options for sanic deployment:

- Standalone server

- Running a pool of backend servers behind of nginx, HAProxy or other reverse proxy server

Every method has own benefits and disadvantages.

Running sanic servers behind nginx makes several advantages:

- At first, nginx is the perfect frontend server. It may prevent many attacks based on malformed http protocol etc.

- Second, running several sanic instances behind nginx allows to utilize all CPU cores.

- Third, nginx serves static files much faster than built-in sanic static file support.

But this way requires more complex configuration.

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

## Configuration file for nginx

    upstream app {
        server 127.0.0.1:5161 fail_timeout=0;
        server 127.0.0.1:5162 fail_timeout=0;
    }

    server {
        listen 5160;
        client_max_body_size 4G;

        server_name 127.0.0.1;

        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://app;

        }
    }

## Configuration file for systemd

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

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

    [Service]
    Restart=always
    RestartSec=5
    User=luna
    Group=luna
    SyslogIdentifier=luna-streams-%i
    WorkingDirectory=/var/lib/luna/current/luna-streams/luna_streams
    # Run from luna-configurator
    ExecStart=/var/lib/luna/current/luna-streams/venv/bin/python ./run.py --port=%i --workers=1 --config-reload=0 --luna-config=http://127.0.0.1:5070/1 --log_suffix=%i
    # Run from config file
    # ExecStart=/var/lib/luna/current/luna-streams/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 5031, 5032:

    sudo systemctl start luna-streams\@{5161..5162}.service