======Tile map server====== =====Введение===== На этой странице показано, как можно использовать OpenStreetMap Carto для реализации тайлового сервера с использованием того же программного обеспечения, что и OpenStreetMap. Он включает в себя пошаговые инструкции по установке Tile Server на основе Ubuntu и ограничен описанием некоторых передовых методов, учитывая, что основной целью этого сайта является предоставление руководств по настройке среды разработки OpenStreetMap Carto и предложение рекомендации по редактированию стиля. \\ OSM Tile Server — это веб-сервер, специализирующийся на доставке растровых карт, представляющих их как статические тайлы и способный выполнять рендеринг в реальном времени или предоставлять кэшированные изображения. Веб-программное обеспечение, принятое OpenStreetMap, представляет собой HTTP-сервер Apache вместе со специальным подключаемым модулем с именем mod_tile и связанным с ним внутренним стеком, способным генерировать плитки во время выполнения; программы и библиотеки объединены в цепочку для создания сервера тайлов. \\ Как это часто бывает с OpenStreetMap, существует множество способов достижения цели, и почти все компоненты имеют альтернативы, которые имеют различные преимущества и недостатки. В этом руководстве описывается стандартный процесс установки OSM Tile Server, используемого на OpenStreetMap.org. \\ Он состоит из следующих основных компонентов: \\ * Mapnik * Apache * Mod_tile * renderd * osm2pgsql * PostgreSQL/PostGIS database, to be installed locally (suggested) or remotely (might be slow, depending on the network). * carto * openstreetmap-carto \\ Все упомянутое программное обеспечение является открытым исходным кодом. \\ Для тайлового сервера требуется база данных PostGIS , в которой хранятся геопространственные объекты, заполненные инструментом osm2pgsql из данных OSM. Кроме того, необходим каталог файловой системы, включающий файл OSM.xml , символы карты (проверьте подкаталог openstreetmap-carto/symbols) и шейп-файлы (проверьте подкаталог openstreetmap-carto/data). OSM.xml предварительно создается инструментом carto из стиля openstreetmap-carto (project.mml и все связанные файлы CartoCSS, включенные в openstreetmap-carto). \\ Когда веб-сервер Apache получает запрос от браузера, он вызывает подключаемый модуль mod_tile , который, в свою очередь, проверяет, была ли плитка уже создана (из предыдущего рендеринга) и кэширована, чтобы она была готова к использованию; в этом случае mod_tile немедленно отправляет плитку обратно на веб-сервер. И наоборот, если запрос необходимо отобразить, то он ставится в очередь на серверную часть рендеринга , которая отвечает за вызов Mapnik для выполнения фактического рендеринга; renderd — это процесс- демон , включенный в исходники mod_tile и связанный с mod_tile через очереди UNIX. визуализированныйявляется стандартным бэкэндом, используемым в настоящее время www.openstreetmap.org, даже если некоторые реализации OSM используют Tirex ; Mapnik извлекает данные из базы данных PostGIS в соответствии с информацией о стиле openstreetmap-carto и динамически отображает тайл. renderd возвращает созданный тайл на веб-сервер и, в свою очередь, в браузер. \\ Демон renderd реализует механизм очередей с несколькими уровнями приоритета, чтобы обеспечить актуальность просмотра с учетом доступных ресурсов рендеринга. Наивысший приоритет — для рендеринга «на лету» тайлов, еще не находящихся в кэше тайлов, два уровня приоритета для повторного рендеринга устаревших тайлов «на лету» и две очереди фонового пакетного рендеринга. Чтобы избежать проблем с каталогами, которые становятся слишком большими, и чтобы избежать слишком большого количества крошечных файлов, Mod_tile / renderd хранит визуализированные тайлы в «метатайлах», в специальной хешированной структуре каталогов. \\ Даже если тайловый сервер динамически генерирует тайлы во время выполнения, они также могут быть предварительно визуализированы для просмотра в автономном режиме с помощью специального инструмента с именем render_list , который обычно используется для предварительного рендеринга тайлов с низким уровнем масштабирования и требует значительного времени для выполнения процесса (десятки часов в случае, если вся планета предварительно визуализируется); эта утилита включена в mod_tile , а также в другой инструмент с именем render_expired , который предоставляет методы для разрешения истечения срока действия тайлов карты. Более подробное описание render_list и render_expired можно найти на их справочных страницах. \\ Справочную информацию о методе истечения срока действия тайлов можно найти в механизме истечения срока действия тайлов. \\ =====Общая настройка для Ubuntu===== ====Обновите Ubuntu==== Убедитесь, что ваша система Ubuntu полностью обновлена: lsb_release -a команда возвращает версию Ubuntu. \\ {{:software:linux_server:osm_100.png|}} \\ Чтобы обновить систему: sudo apt-get update команда загружает списки пакетов из репозиториев и «обновляет» их, чтобы получить информацию о новейших версиях пакетов и их зависимостях. Это будет сделано для всех репозиториев и PPA. Из http://linux.die.net/man/8/apt-get \\ {{:software:linux_server:osm_101.png|}} \\ sudo apt list --upgradable команда выведит списки пакетов готовых к обновлению \\ {{:software:linux_server:osm_102.png|}} \\ sudo apt-get -y upgrade команда обновляет все устаревшие пакеты и применить исправления безопасности с выводом подсказок « Да» или «Нет », спрашивая, нужно ли устанавливать зависимые пакеты или нет. Если вы устанавливаете большой пакет или пакет с большим количеством зависимостей, или устанавливаете несколько пакетов, ответы на эти запросы не позволят вам переключиться на выполнение какой-либо работы. \\ {{:software:linux_server:osm_103.png|}} \\ sudo apt upgrade команда обновляет все устаревшие пакеты и применить исправления безопасности \\ {{:software:linux_server:osm_104.png|}} ====Установите необходимые инструменты==== Основные элементы: sudo apt-get -y install ca-certificates gnupg curl unzip gdal-bin \ tar wget bzip2 build-essential clang python3-psycopg2 python3-yaml \ python3-requests postgresql-client {{:software:linux_server:osm_105.png|}} \\ Дополнительные элементы: sudo apt-get -y install munin-node munin protobuf-c-compiler libtiff5-dev libcairomm-1.0-dev libagg-dev lua5.1 liblua5.1-0-dev {{:software:linux_server:osm_106.png|}} \\ Проверьте предварительные условия, предложенные [[https://github.com/gravitystorm/openstreetmap-carto/blob/master/Dockerfile#L11-L12|openstreetmap-carto.]] FROM ubuntu:bionic # # Зависимости стиля RUN apt-get update && apt-get install --no-install-recommends -y \ ca-certificates curl gnupg postgresql-client python3 python3-distutils \ fonts-hanazono fonts-noto-cjk fonts-noto-hinted fonts-noto-unhinted \ mapnik-utils nodejs npm ttf-unifont unzip && rm -rf /var/lib/apt/lists/* # Kosmtik with plugins, forcing prefix to /usr because bionic sets # npm prefix to /usr/local, which breaks the install RUN npm set prefix /usr && npm install -g kosmtik РАБОЧИЙ КАТАЛОГ /usr/lib/node_modules/kosmtik/ RUN kosmtik plugins --install kosmtik-overpass-layer \ --install kosmtik-fetch-remote \ --install kosmtik-overlay \ --install kosmtik-open-in-josm \ --install kosmtik-map-compare \ --install kosmtik-osm-data-overlay \ --install kosmtik-mapnik-reference \ --install kosmtik-geojson-overlay \ && cp /root/.config/kosmtik.yml /tmp/.kosmtik-config.yml # Closing section RUN mkdir -p /openstreetmap-carto WORKDIR /openstreetmap-carto USER 1000 CMD sh scripts/docker-startup.sh kosmtik ===== установим npm, диспетчер пакетов Node.js. Для этого установите пакет npmс помощью apt: sudo apt install npm {{:software:linux_server:osm_107.png|}} \\ перейдем в режим суперпользователя sudo -i {{:software:linux_server:osm_109.png|}} \\ проверим зависимости стиля apt-get update && apt-get install --no-install-recommends -y \ ca-certificates curl gnupg postgresql-client python3 python3-distutils \ fonts-hanazono fonts-noto-cjk fonts-noto-hinted fonts-noto-unhinted \ mapnik-utils nodejs npm ttf-unifont unzip && rm -rf /var/lib/apt/lists/* {{:software:linux_server:osm_110.png|}} \\ E: Package 'ttf-unifont' has no installation candidate \\ пакет 'ttf-unifont' установим позже (сейчас не критично) \\ к проверке установки kosmtik вернемся после установки Node.js \\ Для последующих шагов установки мы предполагаем, что: \\ cd - по умолчанию используется ваш домашний каталог. ====Настроить swap==== SWAP (своп) — это механизм виртуальной памяти, при котором часть данных из оперативной памяти (ОЗУ) перемещается на хранение на HDD (жёсткий диск), SSD (твёрдотельный накопитель). \\ Импорт картографических данных и управление ими занимают много оперативной памяти, и обычно требуется swap. \\ Чтобы проверить, настроен ли раздел подкачки в вашей системе, используйте одну из следующих двух команд: swapon -s {{:software:linux_server:osm_111.png|}} \\ в данном случае установлено: * • 4gb файла подкачки free -m Отображение количества свободной и используемой памяти в системе (отметьте строку, указывающую Swap ): \\ {{:software:linux_server:osm_113.png|}} \\ в данном случае используется: * • ОЗУ: 544mb из доступных 16gb * • файл подкачки: 0mb из доступных 4gb. \\ Если у вас нет активного раздела подкачки, особенно если ваша физическая память мала, вам следует добавить файл подкачки. Создайте файл подкачки размером 2G в корневой файловой системе: sudo fallocate -l 2G /swapfile {{:software:linux_server:osm_114.png|}} \\ Установим правильный тип разрешений. sudo chmod 600 /swapfile {{:software:linux_server:osm_115.png|}} \\ Используйте mkswap утилиту, чтобы настроить файл как область подкачки Linux: sudo mkswap /swapfile {{:software:linux_server:osm_116.png|}} \\ Включить файл подкачки sudo mkswap /swapfile {{:software:linux_server:osm_117.png|}} \\ проверим результат free -m {{:software:linux_server:osm_118.png|}} \\ Чтобы сделать изменение постоянным, откройте /etc/fstab файл и добавьте следующую строку: /swapfile swap swap defaults 0 0 Откроем файл fstab, находящийся в папке ets в редакторе: vi /etc/fstab {{:software:linux_server:osm_119.png|}} \\ * i -начало редактирования * esc -конец редактирования * :wq! -сохранение и выход из редактора {{:software:linux_server:osm_120.png|}} \\ [[:software:linux_server:swap в linux|Swap в linux]] \\ [[https://help.ubuntu.ru/wiki/swap|Рекомендованный размер swap в linux]] ====Настройка переменных локализации==== * Locale — это набор переменных среды, которые определяют язык, страну и настройки кодировки символов (или любые другие особые предпочтения варианта) для ваших приложений и сеанса оболочки в системе Linux. Эти переменные среды используются системными библиотеками и локальными приложениями в системе. * Конфигурационный файл находится /etc/default/locale. * Просмотрим, какие локали в настоящее время определены для текущей учетной записи пользователя: locale {{:software:linux_server:osm_130.png|}} \\ Чтобы установить локализацию ru_RU: export LANGUAGE=ru_RU.UTF-8 export LANG=ru_RU.UTF-8 export LC_ALL=ru_RU.UTF-8 * Экспортированные переменные можно поместить в файл /etc/environment. * Новые локали также можно создать, выполнив: sudo locale-gen ru_RU ru_RU.UTF-8 sudo dpkg-reconfigure locales * если ошибка изменения локализации: * [[:software:linux_server:cannot_change_locale|-bash: warning: setlocale: LC_ALL: cannot change locale]] ====Создание пользователя UNIX==== * Мы предполагаем, что вы уже создали пользователя для входа во время установки Ubuntu Server, который будет использоваться для запуска сервера тайлов. Предположим, что выбранное вами имя пользователя — alisa. В этом документе каждый раз, когда будет упоминается alisa, замените его своим фактическим именем пользователя. * Если вам нужно создать нового пользователя: sudo useradd -m alisa sudo passwd alisa {{:software:linux_server:osm_140.png|}} * Установите пароль при появлении запроса. * Повторите пароль для правильности ввода. =====Установить Git===== Иногда [[https://git-scm.com/|Git]] может быть уже предустановлен. git --version {{:software:linux_server:osm_150.png|}} \\ в случае отсутствия установим: apt-get install -y git {{:software:linux_server:osm_151.png|}} \\ {{ :software:linux_server:progit.pdf | - Справочник Pro Git}} =====Установка библиотеки Mapnik===== Mapnik используется для рендеринга данных OpenStreetMap в тайлы, управляемые веб-сервером Apache через renderd и mod_tile. Эта установка предусматривает, что все команды выполняются в окружении обычной учетной записи (не root) с использованием "sudo". Не пытайтесь и не делайте все в окружении root; система не будет работать. (выход: exit) exit {{:software:linux_server:osm_159.png|}} \\ Создайте в корне каталог src для загрузки исходников mkdir -p ~/src {{:software:linux_server:osm_160.png|}} \\ и перейдите в него: cd ~/src {{:software:linux_server:osm_161.png|}} \\ sudo apt install python-is-python3 \\ \\ df ====Зависимость FreeType в Ubuntu 16.04 LTS==== ====Установить библиотеку Mapnik из пакета==== ====Или установите Mapnik из исходников==== ====Установить Boost из пакета==== ====В качестве альтернативы установите последнюю версию Boost из исходного кода==== ====Установите HarfBuzz из пакета==== ====Установите HarfBuzz из исходного кода==== ====Собрать библиотеку Mapnik из исходников==== =====Убедитесь, что Mapnik был правильно установлен===== =====Настроить брандмауэр===== =====Установить HTTP-сервер Apache===== =====Как узнать IP-адрес вашего сервера===== =====Установить Mod_tile из пакета===== ====Mod_tile/render для Ubuntu 18.04 и Ubuntu 20.04==== ====Mod_tile/рендеринг для Ubuntu 21.04==== =====Установить Mod_tile из исходников===== =====Установка Python===== =====Установите Yaml и диспетчер пакетов для Python===== =====Установите утилиты Mapnik===== =====Установить openstreetmap-carto===== =====Установите шрифты, необходимые для openstreetmap-carto===== ====Старый унифонт Средний шрифт==== =====Установите Node.js===== ====Версия дистрибутива из менеджера пакетов APT==== ====Установите Node.js с помощью инструмента управления версиями==== ====Проверьте версии Node.js==== =====Установите carto и создайте XML-таблицу стилей Mapnik===== =====Установите PostgreSQL и PostGIS===== ====Создайте экземпляр PostGIS==== ====Установите переменные среды==== ====Добавьте пользователя и предоставьте доступ к базе данных gis==== ====Включение удаленного доступа к PostgreSQL==== ====Настройка базы данных==== ====Минимальные требования к настройке==== ====Необязательные дополнительные требования к настройке==== =====Установить Osm2pgsql===== ====Сгенерировать Osm2pgsql из исходников==== =====Получите извлечение данных OpenStreetMap===== =====Загрузить данные в PostGIS===== =====Создайте папку данных===== =====Создание индексов и предоставление пользователям===== =====Настроить визуализацию===== =====Настроить Apache===== =====Предварительный рендеринг тайлов===== =====Устранение неполадок Apache, mod_tile и renderd===== =====Формат имен тайлов сервера тайлов OpenStreetMap===== =====Развертывание собственной карты Slippy Map===== ====OpenLayers==== ====Листовка==== =====Дополнения и файлы===== * [[https://ircama.github.io/osm-carto-tutorials/tile-server-ubuntu/|Установка сервера тайлов OpenStreetMap в Ubuntu]] * [[https://switch2osm.org/serving-tiles/manually-building-a-tile-server-ubuntu-24-04-lts/|Создание тайлового сервера вручную (Ubuntu 24.04)]] * [[http://use.openstreetmap.ru/serving-tiles/manually-building-a-tile-server-20-04-lts/|Создание тайлового сервера вручную (Ubuntu 20.04)]] * [[https://postgis.net/documentation/getting_started/install_windows/released_versions/|PostgreSQL]] * [[https://habr.com/ru/articles/316158/|Поднимаем собственный репозиторий пакетов для Ubuntu (Debian)]] * [[https://webhostinggeeks.com/howto/how-to-install-all-available-updates-for-an-ubuntu-release-before-upgrading/|Как установить все доступные обновления для выпуска Ubuntu перед обновлением]] * [[https://github.com/SomeoneElseOSM/mod_tile|mod_tile]] ====Упомянутые команды:==== * sudo apt update — обновляет список пакетов последней информацией из настроенных репозиториев. * sudo apt update — устанавливает доступные обновления для вашей текущей версии Ubuntu. * sudo apt dist-upgrade — выполняет более тщательное обновление, которое более тщательно обрабатывает зависимости пакетов. * sudo apt autoremove — удаляет из системы неиспользуемые или устаревшие пакеты. * sudo restart — перезагружает систему, чтобы все изменения вступили в силу. * sudo apt install update-manager-core — устанавливает основной пакет менеджера обновлений, если он еще не установлен. * sudo do-release-upgrade — запускает процесс обновления выпуска Ubuntu.