Используем Docker-контейнер
Если вы хотите поэкспериментировать или используете не Ubuntu, но при этом используете Docker для контейнеризации, то можете попробовать этот. Он будет точно таким же, как и в этой инструкции, но в виде уже скомпилированного контейнера, готового к установке.
Docker
Если у вас еще не установлен Docker, то в сети вы можете найти много пособий по этому поводу - вот одно из них.
Данные OpenStreetmap
В качестве примера я скачаю и импортирую данные Замбии, но подойдёт любая из выгрузок OSM в формате PBF. Для тестирования рекомендуем начать с небольшим .pbf. Зайдите в систему не из-под root-пользователя, из-под которого вы запускаете Docker, и скачайте данные для Замбии:
cd
wget http://download.geofabrik.de/africa/zambia-latest.osm.pbf
Создайте docker-том для данных:
docker volume create openstreetmap-data
Установите его и импортируйте данные:
time docker run -v /home/renderaccount/zambia-latest.osm.pbf:/data.osm.pbf -v openstreetmap-data:/var/lib/postgresql/10/main overv/openstreetmap-tile-server import
Путь к файлу с данными должен быть абсолютным - он не может быть относительным. В данном примере он находится в корневом каталоге пользователя “renderaccount”.
Скорость скачивания и импорта данных зависит от скорости вашего интернета и объема файла. Замбия, которую мы используем в качестве примера, относительно небольшая.
Обратите внимание, что если что-то пойдет не так, сообщения об ошибке могут быть несколько загадочными - вы можете получить “…is a directory” (это папка), если файл с данными не найден. “Время” в начале команды не требуется для установки и импорта, оно просто сообщает, сколько времени понадобилось, для дальнейшего обращения.
Если вам интересно, что и как будет делать docker-контейнер, то ознакомьтесь с этим файлом. Он почти полностью соответствует этой инструкции с небольшими отличиями, такими, как URL тайла и используемая внутренняя учетная запись. Внутри он также использует Ubuntu 18.04, хотя вам и не нужно взаимодействовать с ним напрямую.
Когда импорт будет завершен вы должны увидеть что-то такое:
Osm2pgsql took 568s overall
real 9m34.378s
user 0m0.030s
sys 0m0.060s
Здесь сообщается, сколько времени в общей сложности занял этот процесс (в данном случае 9,5 минут).
Чтобы запустить тайл-сервер:
docker run -p 80:80 -v openstreetmap-data:/var/lib/postgresql/10/main -d overv/openstreetmap-tile-server run
Чтобы проверить, что он работает, перейдите по следующему адресу:
http://your.server.ip.address/tile/0/0/0.png
Вы должны увидеть в своем браузере карту мира.
Просмотр тайлов
В качестве простой “slippy map” мы можем воспользоваться файлом “sample_leaflet.html” из каталога “extra” mod_tile. Измените “hot” в URL в данном файле на “tile”, затем просто откройте этот файл в веб-браузере на машине, где установили доке-контейнер. Если это невозможно, так как вы установили на сервере без локального веб-браузера, вам потребуется также отредактировать файл, зменив “127.0.0.1” IP-адресом сервера, затем скопировать его в /”var/www/html” на сервере.
Если вы хотите загрузить другую территорию, просто повторите процесс с “wget”. В следующий раз он будет быстрее, потому что статические данные, необходимые для стиля карты, не понадобятся.