======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.