Для начала скачайти файл карт региона, который вас интересует, это может быть какой-то конкретный регион, если мощности ващего железа ограничены, или вы действуете в определенном регионе. Так же можно скачать карту все России, если есть такая потребность:
docker volume create openstreetmap-data
docker volume create openstreetmap-rendered-tiles
В случае использования отдельного тома для размещения докер-файлов необходимо в файле /lib/systemd/system/docker.service задать новый путь:
ExecStart=/usr/bin/dockerd -H fd:// $DOCKER_OPTS
ExecStart=/usr/bin/dockerd --data-root /new_location/ -H fd:// $DOCKER_OPTS
Перезапустить демон докера. В случае необходимости перенести данные из /var/lib/docker/ в новую локацию
Для всей России рекомендуем использовать:
docker run \
-v <Абсолютный путь до вашего файла карт>:/data/region.osm.pbf \
-v osm-data:/data/database/ \
overv/openstreetmap-tile-server \
import
docker run -p 8080:80 -v osm-data:/data/database/ -v osm-tiles:/data/tiles/ -e ALLOW_CORS=enabled -e THREADS=16 -e "OSM2PGSQL_EXTRA_ARGS=-C 4096" -e AUTOVACUUM=off -d overv/openstreetmap-tile-server run
Производительность сервера зависит от количества нитей (THREADS) и кэша для рендера (OSM2PGSQL_EXTRA_ARGS). Текущие настройки исходят из предположения 2 нити на vCPU и 50% кэша от RAM. Но, эти параметры могут иметь сильную зависимость от скорости дисков.
При первом запуске потребуется довольно много времени, чтобы отрендерить большие тайлы.
Карта доступна по адресу: <ip-адрес сервера куда производилась установка>:8080
В случае успешного выполнения инструкции по установке сервера картографии, выполните его подключение к платформе. Для этого в файле /etc/nginx/sites-enabled/semona.conf nginx сервера модуля proxy необходимо выполнить следующие изменения:
location /tiles {
if (!-f $request_filename) {
rewrite ^(\/tiles\/)(.*)_(.*) $scheme://<ip-адрес сервера куда производилась установка>:8080/tile/$2/$3 last;
break;
}
}
Если в файле semona.conf уже была секция location /tiles , ее следует изменить на описанную выше.
Секциейif {}
поддерживается обратная совместимость с решением, когда нет сервера картографии, но есть файлы. В этом случае файлы с tile-картами загрузятся с диска в уникальном формате (_). Если есть сервер картографии, то рекомендуется убрать секцию if.
В инструкции выше приведен пример развертывания сервера с доступом по порту 8080. Ниже приведен пример кофигурации для сервера картографии с именем osm-server:
location /tiles {
if (!-f $request_filename) {
rewrite ^(\/tiles\/)(.*)_(.*) $scheme://osm-server:8080/tile/$2/$3 last;
break;
}
}
Обязательным пунктом в настройке карт является обеспечение безопасной передачи данных путем HTTPS протокола, в противном случае, инстансы которые работают по этому протоколу, будут отказываться принимать данные по HTTP и карты просто не будут отображаться в ЛК, даже при полной работоспособности обособленно.
Обеспечить HTTPS передачу данных при работающем вебсервере с уже настроенным SSL очень просто, нужно просто добавить еще один небольшой блок location к нашей уже имеющейся конфигурации, чтобы в итоге получилось следующее:
location /tiles {
if (!-f $request_filename) {
rewrite ^(\/tiles\/)(.*)_(.*) $scheme://$server_addr/tile/$2/$3 last;
break;
}
}
location ~ ^/tile/[0-9]+/[0-9]+/[0-9]+.png$ {
proxy_pass http://$server_addr:MAP_PORT;
}
Не забываем сохранить конфигурацию, и перезапустить вебсервер.