umap/docs/install.md
2023-06-23 18:44:06 +02:00

3.5 KiB

Installation

Note: for Ubuntu follow procedure Ubuntu from scratch

Note: for a Windows installation follow procedure Installing on Windows

Create a geo aware database. See Geodjango doc for backend installation.

Create a virtual environment

virtualenv umap
source umap/bin/activate

Install dependencies and project

pip install umap-project

Create a default local settings file

wget https://raw.githubusercontent.com/umap-project/umap/master/umap/settings/local.py.sample -O local.py

Reference it as env var:

export UMAP_SETTINGS=`pwd`/local.py

Add database connection information in local.py, for example

DATABASES = {
    'default': {
        'ENGINE': 'django.contrib.gis.db.backends.postgis',
        'NAME': 'umap',
    }
}

Add a SECRET_KEY in local.py with a long random secret key

SECRET_KEY = "a long and random secret key that must not be shared"

uMap uses python-social-auth for user authentication. So you will need to configure it according to your needs. For example

AUTHENTICATION_BACKENDS = (
    'social_auth.backends.contrib.github.GithubBackend',
    'social_auth.backends.contrib.bitbucket.BitbucketBackend',
    'social_auth.backends.twitter.TwitterBackend',
    'django.contrib.auth.backends.ModelBackend',
)
GITHUB_APP_ID = 'xxx'
GITHUB_API_SECRET = 'zzz'
BITBUCKET_CONSUMER_KEY = 'xxx'
BITBUCKET_CONSUMER_SECRET = 'zzz'
TWITTER_CONSUMER_KEY = "xxx"
TWITTER_CONSUMER_SECRET = "yyy"

Example of callback URL to use for setting up OAuth apps

http://umap.foo.bar/complete/github/

Adapt the STATIC_ROOT and MEDIA_ROOT to your local environment.

Create the tables

umap migrate

Collect and compress the statics

umap collectstatic
umap compress

Create a superuser

umap createsuperuser

Start the server

umap runserver 0.0.0.0:8000

UMap uses PostgreSQL tsvector for searching. In case your database is big, you may want to add an index. For that, you should do so:

# Create a basic search configuration
CREATE TEXT SEARCH CONFIGURATION umapdict (COPY=simple);

# If you also want to deal with accents and case, add this before creating the index
CREATE EXTENSION unaccent;
CREATE EXTENSION btree_gin;
ALTER TEXT SEARCH CONFIGURATION umapdict ALTER MAPPING FOR hword, hword_part, word WITH unaccent, simple;

# Now create the index
CREATE INDEX IF NOT EXISTS search_idx ON umap_map USING GIN(to_tsvector('umapdict', name), share_status);

And change UMAP_SEARCH_CONFIGURATION = "umapdict" in your settings.

Emails

UMap can send the anonymous edit link by email. For this to work, you need to add email specific settings. See Django documentation.

In general, you'll need to add something like this in your local settings:

FROM_EMAIL = "youradmin@email.org"
EMAIL_BACKEND = "django.core.mail.backends.smtp.EmailBackend"
EMAIL_HOST = "smtp.provider.org"
EMAIL_PORT = 456
EMAIL_HOST_USER = "username"
EMAIL_HOST_PASSWORD = "xxxx"
EMAIL_USE_TLS = True
# or
EMAIL_USE_SSL = True

Upgrading

Usually, for upgrading, you need those steps:

pip install umap-project --upgrade
umap migrate
umap collectstatic
umap compress

Then you need to restart your python server, for example:

sudo systemctl restart uwsgi  # or gunicorn, or…