Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия |
software:linux_server:tile_map_server_worl_20.04.4 [2024/08/19 07:45] – [Обновление программного обеспечения] vladpolskiy | software:linux_server:tile_map_server_worl_20.04.4 [2024/09/04 13:43] (текущий) – [Запуск рендера в фоновом режиме] vladpolskiy |
---|
======OSM The Eurasia Ubuntu 20.04====== | ======OSM The Eurasia Ubuntu 20.04====== |
| {{:software:linux_server:tile_map_server_wold_20.04.4_114.png?500 |}} Тайл-сервер является основным инструментом для генерации и предоставления тайлов пользователям в мире OpenStreetMap. Это набор программ и библиотек, позволяющий эффективно обрабатывать географические данные и создавать картографические тайлы, представляющие собой небольшие изображения карты для отображения на веб-сайтах или мобильных приложениях. Важно понимать, что существует несколько различных конфигураций тайл-серверов, каждая из которых имеет свои плюсы и минусы.\\ Руководство по запуску стандартного тайл-сервера, аналогичного тому, используемому на серверах OpenStreetMap.org, может быть полезным для тех, кто только начинает знакомиться с этой областью. Обычно такие инструкции включают в себя установку необходимого программного обеспечения, настройку базы данных геоданных, настройку веб-сервера и самого тайл-сервера, а также запуск и тестирование процесса генерации тайлов. |
| |
| В результате выполнения всех необходимых шагов по установке и настройке тайл-сервера, пользователь сможет получить доступ к генерируемым тайлам через веб-приложения или мобильные устройства. Это отличное решение для тех, кто хочет создать собственный проект на основе картографических данных OpenStreetMap и обеспечить пользователям доступ к персонализированным картам. |
=====Введение===== | =====Введение===== |
Установка производиться на устройство | В данном руководстве установка программного обеспечения производиться на оборудование следующей конфигурации: |
* **[[hardware:motherboard_supermicro_h11ssl-i|Материнская плата Supermicro MBD-H11SSL-I]]** | * **[[hardware:motherboard_supermicro_h11ssl-i|Материнская плата Supermicro MBD-H11SSL-I]]** |
* **[[hardware:cpu_amd_epyc_7551p_oem|Процессор AMD EPYC™ 7551P OEM]]** | * **[[hardware:cpu_amd_epyc_7551p_oem|Процессор AMD EPYC™ 7551P OEM]]** |
* **[[hardware:ddr4_ecc_reg_64gb|256GB DDR4 3200MHz DIMM ECC Reg Micron]]** | * **[[hardware:ddr4_ecc_reg_64gb|256GB DDR4 3200MHz DIMM ECC Reg Micron]]** |
* **[[software:linux_server:ubuntu_server|ОС Ubuntu Server 20.04 LTS]]** | * **[[software:linux_server:ubuntu_server|ОС Ubuntu Server 20.04 LTS]]** |
<color #7092be>**Все ниже написанное относиться к Ubuntu Server 20.04 (Focal Fossa) и протестированы в августе 2024 года.**</color> | Конфигурация вашего оборудавания будет соответственно отличаться, но это так-же будет работать, заняв больше времени при установке и рендере карт на устройстве с минимальными параметрами: |
| * **CPU > 4 ядер** |
| * **RAM > 12Gb** |
| * **HDD > 1Tb** |
| <color #7092be>**Все ниже написанное относиться к Ubuntu Server 20.04 (Focal Fossa) и протестировано в августе 2024 года.**</color> |
| \\ |
\\ | \\ |
<color #00a2e8>**:&1: Примечание: В этом руководстве многое загружается с альтернативных, а не с официальных зеркал, по причине скорости загрузки и неизменности файлов в репозитории для данного руководства.**</color> | <color #00a2e8>**:&1: Примечание: В этом руководстве многое загружается с альтернативных, а не с официальных зеркал, по причине скорости загрузки и неизменности файлов в репозитории для данного руководства.**</color> |
* **osm2pgsql** | * **osm2pgsql** |
* **postgresql/postgis** | * **postgresql/postgis** |
Postgresql/postgis - базы данных. Mod_tile — это модуль apache, который обслуживает кэшированные тайлы и решает, какие тайлы нуждаются в повторном рендеринге — либо потому, что они еще не кэшированы, либо потому, что они устарели. Mapnik — это программная библиотека, которая осуществляет реальный рендеринг с использованием открытого рендеринга.\\ | <color #22b14c>**Postgresql/postgis**</color> - базы данных. <color #22b14c>**Mod_tile**</color> — это модуль <color #22b14c>**http сервера apache**</color>, который обслуживает кэшированные тайлы и решает, какие тайлы нуждаются в повторном рендеринге — либо потому, что они еще не кэшированы, либо потому, что они устарели. <color #22b14c>**Mapnik**</color> — это программная библиотека, которая осуществляет реальный рендеринг с использованием открытого рендеринга.\\ |
<color #7092be>** :&2: Предполагается, что вы запускаете все от пользователя без регистрации root через «sudo». Имя пользователя без root, повторяемое по умолчанию, — «eva». Если вы указываете иного пользователя, то вам необходимо будет заменить во всех командах на свое имя и добавить его в группу пользователей, которые могут использовать sudo для получения root-прав. Из вашей обычной учетной записи пользователя без регистрации root.**</color> | \\ |
| <color #7092be>** :&2: Предполагается,** что вы запускаете все от пользователя **без регистрации root** через **«sudo»**. Имя пользователя без **root**, повторяемое по умолчанию, — **«eva»**. Если вы указываете иного пользователя, то вам необходимо будет заменить во всех командах на свое имя и добавить его в группу пользователей, которые могут использовать sudo для получения root-прав. Из вашей обычной учетной записи пользователя без регистрации root.</color>\\ |
| \\ |
| <color #22b14c>**:&2: Общая последовательнось действий:**</color> |
| * **Устанавливаем и обновляем Ubuntu Server** |
| * **Устанавливаем основное и дополнительное ПО** |
| * **Загружаем 6 файлов карт** |
| * **Объеденяем 3 файла и загружаем в базу** |
| * **Настраиваем веб-сервер** |
| * **Производим первый рендер** |
| * **Догружаем в базу дополнительный файл карты** |
| * **Проверяем работоспособность сервера** |
| * **Удаляем все лишнее, объединяем и загружаем в базу данных файл Евразии** |
=====Обновление программного обеспечения===== | =====Обновление программного обеспечения===== |
* Устанавливаем и обновляем Ubuntu | * Устанавливаем и обновляем Ubuntu |
</code> | </code> |
{{:software:linux_server:tile_map_server_wold_20.04.4_5.png?|}} | {{:software:linux_server:tile_map_server_wold_20.04.4_5.png?|}} |
* Создадим пользователя <color #ed1c24>(**"eva"**-пример имени пользователя для дпнного рукеводства)</color> | * Создадим пользователя <color #ed1c24>(**"eva"**-пример имени пользователя для данного руководства)</color> |
<code> | <code> |
createuser eva | createuser eva |
<color #00a2e8>**:&1: Примечание: В этом руководстве файлы ".osm.pbf" загружается с альтернативных, а не с официальных зеркал (https://download.geofabrik.de/), по причине скорости загрузки с данного репозитория для данного руководства.**</color> | <color #00a2e8>**:&1: Примечание: В этом руководстве файлы ".osm.pbf" загружается с альтернативных, а не с официальных зеркал (https://download.geofabrik.de/), по причине скорости загрузки с данного репозитория для данного руководства.**</color> |
\\ | \\ |
<color #22b14c>**:&2: Примечание: Сейчас мы загрузим 3 небольшие карты (georgia, moldova и azerbaijan), произведем их слияние (для понимания и наглядного примера слияния) и с ними продолжим установку и настройку сервера. Так-же загрузим небольшую карту (andorra) для примера дозагрузки карт в базу и конечно карты Europe (28.9 GB) и Asia (13.1 GB). Europe и Asia поставим на слияние и загрузим в базу в конце статьи, на уже подготовленный нами и проверенный (рабочий) сервер.**</color> | <color #22b14c>**:&2: Последовательность: Сейчас мы загрузим 3 небольшие карты (georgia, moldova и azerbaijan), произведем их слияние (для понимания и наглядного примера слияния) и с ними продолжим установку и настройку сервера. Так-же загрузим небольшую карту (andorra) для примера дозагрузки карт в базу и конечно карты Europe (28.9 GB) и Asia (13.1 GB). Europe и Asia поставим на слияние и загрузим в базу в конце статьи, на уже подготовленный нами и проверенный (рабочий) сервер.**</color> |
<code> | <code> |
wget https://wwoss.ru/openstreetmap/europe/europe-sub-region/georgia-latest.osm.pbf | wget https://wwoss.ru/openstreetmap/europe/europe-sub-region/georgia-latest.osm.pbf |
| |
====Догрузка карт в базу данных==== | ====Догрузка карт в базу данных==== |
<color #00a2e8>**:&2: Следующая команда загрузит файл карты "andorra" в уже существующую базу данных. Пока мы пропустим этот шаг и продолжим установку сервера и вернемся к этому шагу позже. уже на подготовленном нами сервере. (этот шаг указан в этом разделе т.к команды эдинтичные с разницей в способе загрузки (--create/--append)).**</color> | <color #ed1c24>**:&9: Внимание!: Этот шаг выполняеся только в случае необходимости дозагрузки в готовую базу данных дополнительных файлов, в нашем случае сейчас пропустим этот подраздел, перейдем в радел [[software:linux_server:tile_map_server_22.04.4|"Создание индексов"]] и вернемся сюда в конце статьи при уже настроенном сервере. (этот шаг указан в этом разделе т.к команды эдинтичные с разницей в способе загрузки (%%--create/--append%%)).**</color>\\ |
| * Следующая команда загрузит файл карты "andorra" в уже существующую базу данных. |
<code> | <code> |
cd ~/data | cd ~/data |
{{:software:linux_server:tile_map_server_wold_20.04.4_113.png?|}} | {{:software:linux_server:tile_map_server_wold_20.04.4_113.png?|}} |
| |
| * Прошли почти сутки, мы видим данные, которые уже загрузились, в кансоле |
| {{:software:linux_server:tile_map_server_wold_20.04.4_116.png?|}} |
| * При этом заполнение SSD диска уже составило 811Gb при загрузке карты Евразии размером всего 40Gb |
| {{:software:linux_server:tile_map_server_wold_20.04.4_117.png?|}} |
| * Прошли почти 2 сутки (48 часов), мы видим данные в кансоле об окончании загрузки |
| {{:software:linux_server:tile_map_server_wold_20.04.4_121.png?|}} |
| * И заполнение SSD диска на 1,3Tb при загрузке карты Евразии размером всего 40Gb |
| {{:software:linux_server:tile_map_server_wold_20.04.4_120.png?|}} |
| * Вернемся в раздел [[software:linux_server:tile_map_server_worl_20.04.4#Создание индексов|создание индексов]] и запустим повторно создание индексов. |
| {{:software:linux_server:tile_map_server_wold_20.04.4_123.png?|}} |
| * При приближении мы видим рендер участков карты которые ранее не были записаны в кэш, а те что уже записаны закрыты серыми плитками, т.к. при первых картах эти участки не были в базе данных. |
| {{:software:linux_server:tile_map_server_wold_20.04.4_124.png?|}} |
| * Заходим в наш сервер в каталог /var/lib/mod_tile/ajt и удаляем все каталоги с кешем прошлого рендера |
| {{:software:linux_server:tile_map_server_wold_20.04.4_126.png?|}} |
| * Возвращаемся в наш веб-браузер и обновляем страницу. Перед нами карта с названиями государств Европы и Азии, при этом видим, что Африка и Австралия просто белые и без названий, т.к. мы их не грузили в базу данных. Остается провести предварительный рендер, чтобы пользователи не ждали загрузки. |
| {{:software:linux_server:tile_map_server_wold_20.04.4_125.png?|}} |
| * Процесс рендера достаточно медленный, но мы можем наблюдать преобразование новых регионов, а те, что еще не попали в кэш имеют плитки серого цвета |
| {{:software:linux_server:tile_map_server_wold_20.04.4_128.png?|}} |
| * При этом сервер нагружен на 40% по мониторингу процессора, и почти на максимум работает ssd, учитывая, что установлен AMD EPYC™ в 32 ядра/64 потока и 256gb оперативной памяти. |
| {{:software:linux_server:tile_map_server_wold_20.04.4_127.png?|}} |
| * Следующуя команда запустит предварительный рендер всей карты с 0 до 10 уровня в 16 потоков, чтобы пользователи не ждали загрузки тайлов, а использовали уже готовые области карт |
| <code> |
| sudo -u eva render_list -a -n 16 --map=ajt --tile-dir=/var/lib/mod_tile/ajt --min-zoom=0 --max-zoom=10 --force |
| </code> |
| * Ниже приведены параметры **render_list** |
| <file render_list> |
| Использование: render_list [ОПЦИЯ] ... |
| -a, --all визуализировать все плитки в заданном диапазоне масштабирования вместо чтения из STDIN |
| -f, --force отображать плитки, даже если они кажутся текущими |
| -m, --map=MAP отображает тайлы на этой карте (по умолчанию «по умолчанию») |
| -l, --max-load=ЗАГРУЗИТЬ спящий режим, если нагрузка настолько высока (по умолчанию 16) |
| -s, --socket=SOCKET имя доменного сокета unix для связи с renderd |
| -n, --num-threads=N количество параллельных потоков запросов (по умолчанию 1) |
| -t, --tile-dir Каталог тайлового кэша (по умолчанию «/var/lib/mod_tile») |
| -z, --min-zoom=Ввод фильтра ZOOM для рендеринга только тех фрагментов, которые больше или равны этому уровню масштабирования (по умолчанию – 0) |
| -Z, --max-zoom=Ввод фильтра ZOOM для рендеринга только плиток, меньших или равных этому уровню масштабирования (по умолчанию — 20) |
| Если вы используете --all, вы можете ограничить диапазон плиток, добавив следующие параметры: |
| -x, --min-x=X минимальная координата X плитки |
| -X, --max-x=X максимальная координата X тайла |
| -y, --min-y=Y минимальная координата Y тайла |
| -Y, --max-y=Y максимальная координата тайла Y |
| Без --all отправить список тайлов для рендеринга из STDIN в формате: |
| Х Y Я |
| например |
| 0 0 1 |
| 0 1 1 |
| 1 0 1 |
| 1 1 1 |
| Вышеупомянутое приведет к отображению всех 4 плиток при масштабировании 1. |
| </file> |
| {{:software:linux_server:tile_map_server_wold_20.04.4_129.png?|}} |
=====Дополнения и Файлы===== | =====Дополнения и Файлы===== |
* {{ :software:linux_server:ubuntu-22.04.4-live-server-amd64.iso |ОС Ubuntu Server 20.04 LTS}} | * {{ :software:linux_server:ubuntu-22.04.4-live-server-amd64.iso |ОС Ubuntu Server 20.04 LTS}} |
* {{ :software:linux_server:index.zip |Файл для просмотра плиток и проверки render}} | * {{ :software:linux_server:index.zip |Файл для просмотра плиток и проверки render}} |
| * {{ https://osm2pgsql.org/doc/manual.html#expert-tuning |Настройка сервера PostgreSQL}} |
| * {{ https://habr.com/ru/companies/lsfusion/articles/590599/ |Настройка PostgreSQL под Linux}} |
| |