mirror of
https://github.com/umap-project/umap.git
synced 2025-04-28 11:32:38 +02:00
1.7 KiB
1.7 KiB
ASGI
While uMap has been historically deployed using the WSGI specification, there is now an experimental ASGI endpoint. This will be the way to deploy uMap to use the live collaborative editing feature, which needs websockets.
Nginx
When using ASGI, the nginx, the /
entrypoint should be:
location / {
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_redirect off;
proxy_buffering off;
proxy_pass http://umap/;
}
Uvicorn
Uvicorn must be installed in the umap virtualenv:
/path/to/umap/venv/bin/pip install uvicorn
And could then be run like this:
/path/to/umap/venv/bin/uvicorn \
--proxy-headers \
--uds /srv/umap/umap.sock \
--no-access-log \
umap.asgi:application
Systemd
Here is an example service to manage uvicorn with systemd:
[Unit]
Description=umap
After=network.target
Requires=postgresql.service
[Service]
Type=simple
User=umap
WorkingDirectory=/srv/umap/
PrivateTmp=true
EnvironmentFile=/srv/umap/env
ExecStart=/srv/umap/venv/bin/uvicorn \
--proxy-headers \
--uds /srv/umap/uvicorn.sock \
--no-access-log \
umap.asgi:application
ExecReload=/bin/kill -HUP ${MAINPID}
RestartSec=1
Restart=always
[Install]
WantedBy=multi-user.target
Then to install it and enable it, copy it to /etc/systemd/system/umap.service
and run:
sudo systemctl enable umap.service
Env
Uvicorn can be configured from env vars, for example to define the number of workers:
UVICORN_WORKERS=4