maposmatic/INSTALL.md

4.2 KiB

INSTALLATION NOTES

Dependencies

MapOSMatic depends on :

  • Python, the programming language.

  • OCitySMap, the rendering pipeline for MapOSMatic. See OCitySMap's install file for installation instructions and OCitySMap's dependencies.

  • Django, the Web framework used to develop the Web front-end, but also used for the maposmaticd daemon to conveniently access the database through Django's ORM.

  • The Django Cookie Law application for compliance with EU cookie regulations

  • python-psycopg2, to let Django access the PostgreSQL database.

  • python-feedparser, to parse the MapOSMatic blog feed and display the latest entries on the main MapOSMatic website.

  • python-imaging, to render PNG maps.

  • gettext, for internationalization.

  • JSON (any python-*json package should work).

  • ImageMagick, for rendering the thumbnails of multi-page maps.

On an Debian/Ubuntu installation, the following should be sufficient to fullfil all basic MapOSMatic dependencies:

sudo aptitude install python-django python-psycopg2
python-feedparser python-imaging gettext imagemagick

You will also most likely need a working PostGIS installation for the entire pipeline to run. See the INSTALL documentation of OcitySMap for more details.

Setup

The www/ directory contains the Django web application. The file www/settings_local.py.dist must be copied to www/settings_local.py and modified to match your installation configuration.

Likewise for www/maposmatic.wsgi.dist and scripts/config.py.dist, as well as www/maposmatic.wsgi and scripts/config.py.

Some static files from django applications need to be copied into the maposmatic static media directory:

   python3 manage.py collectstatic

The rendering database must then be initialized with the tables needed for MapOSMatic, using :

   python3 manage.py migrate

The rendering daemon should be run in the background. It will fetch rendering jobs from the database and put the results in a directory, as specified in the settings_local.py file.

To setup the daemon, you need to configure the wrapper in the scripts/ directory by copying scripts/config.py-template to scripts/config.py and editing it to match your setup. The wrapper will set the necessary environment variables and paths for the daemon to run correctly.

Then, you can run the rendering daemon through the wrapper with:

   scripts/wrapper.py scripts/daemon.py &

You'll find in support/init-maposmaticd-template an init script template that you can tweak and install on your machine to start the MapOSMatic rendering daemon automatically at boot time. If you are not using it or an equivalent, then please ignore any message "The MapOSMatic rendering daemon is currently not running! [...]" that the web frontend (below) might display.

Testing with Django integrated web server

Before you think about configuring your web server to provide the maposmatic services, you should try them locally first:

  ./manage.py runserver

Then point your web browser to the address mentioned in the output message. You will need to adjust RENDERING_RESULT_URL in www/settings_local.py to something like 'http://localhost:8000/results' (8000 being the port that is assigned to the integrated web server, printed on the console when you start it), otherwise the rendered map files will not be accessible through the web frontend.

External Web server configuration

In a normal setup, you don't want to use the Django integrated web server. If you are using Apache, you can adapt the configuration file given in support/apache-maposmatic-template.

Also double-check DEFAULT_MAPOSMATIC_LOG_FILE in www/settings_local.py is writable by the web server. For example:

  sudo chgrp www-data /path/to/maposmatic/logs/maposmatic.log
  sudo chmod 664 /path/to/maposmatic/logs/maposmatic.log

Internationalization

To get proper internationalisation, you need to compile the gettext locale files:

  cd www && django-admin compilemessages

Don't forget to restart the Django server or it won't pick up the new translated strings!