Инструменты пользователя

Инструменты сайта


software:linux_server:tile_map_server_worl_20.04.4

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

software:linux_server:tile_map_server_worl_20.04.4 [2024/08/19 08:13] – [Догрузка карт в базу данных] vladpolskiysoftware:linux_server:tile_map_server_worl_20.04.4 [2025/02/01 09:47] (текущий) – внешнее изменение 127.0.0.1
Строка 1: Строка 1:
 ======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]]** 
Строка 7: Строка 10:
   * **[[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** 
 + <fc #7092be>**Все ниже написанное относиться к Ubuntu Server 20.04 (Focal Fossa) и протестировано в августе 2024 года.**</fc>
 \\   \\  
- <color #00a2e8>**:&1: Примечание: В этом руководстве многое загружается с альтернативных, а не с официальных  зеркал, по причине скорости загрузки и неизменности файлов в репозитории для данного руководства.**</color>+\\   
 + <fc #00a2e8>**:&1: Примечание: В этом руководстве многое загружается с альтернативных, а не с официальных  зеркал, по причине скорости загрузки и неизменности файлов в репозитории для данного руководства.**</fc>
 =====Общая теория=====  =====Общая теория===== 
- <color #7092be>**Tile Server OSM**</color> представляет собой набор программ и библиотек, которые работают вместе для создания тайлового (плиточного) сервера. Он состоит из 5 основных компонентов: + <fc #7092be>**Tile Server OSM**</fc> представляет собой набор программ и библиотек, которые работают вместе для создания тайлового (плиточного) сервера. Он состоит из 5 основных компонентов: 
   * **mod_tile**   * **mod_tile**
   * **renderd**   * **renderd**
Строка 17: Строка 25:
   * **osm2pgsql**    * **osm2pgsql** 
   * **postgresql/postgis**   * **postgresql/postgis**
- <color #22b14c>**Postgresql/postgis**</color> - базы данных. <color #22b14c>**Mod_tile**</color> — это модуль <color #22b14c>**http сервера apache**</color>, который обслуживает кэшированные тайлы и решает, какие тайлы нуждаются в повторном рендеринге — либо потому, что они еще не кэшированы, либо потому, что они устарели. <color #22b14c>**Mapnik**</color> — это программная библиотека, которая осуществляет реальный рендеринг с использованием открытого рендеринга.\\   + <fc #22b14c>**Postgresql/postgis**</fc> - базы данных. <fc #22b14c>**Mod_tile**</fc> — это модуль <fc #22b14c>**http сервера apache**</fc>, который обслуживает кэшированные тайлы и решает, какие тайлы нуждаются в повторном рендеринге — либо потому, что они еще не кэшированы, либо потому, что они устарели. <fc #22b14c>**Mapnik**</fc> — это программная библиотека, которая осуществляет реальный рендеринг с использованием открытого рендеринга.\\   
- <color #7092be>** :&2: Предполагается,** что вы запускаете все от пользователя **без регистрации root** через **«sudo»**. Имя пользователя без **root**, повторяемое по умолчанию, — **«eva»**. Если вы указываете иного пользователя, то вам необходимо будет заменить во всех командах на свое имя и добавить его в группу пользователей, которые могут использовать sudo для получения root-прав. Из вашей обычной учетной записи пользователя без регистрации root.</color>+\\   
 + <fc #7092be>** :&2: Предполагается,** что вы запускаете все от пользователя **без регистрации root** через **«sudo»**. Имя пользователя без **root**, повторяемое по умолчанию, — **«eva»**. Если вы указываете иного пользователя, то вам необходимо будет заменить во всех командах на свое имя и добавить его в группу пользователей, которые могут использовать sudo для получения root-прав. Из вашей обычной учетной записи пользователя без регистрации root.</fc>\\   
 +\\   
 +<fc #22b14c>**:&2: Общая последовательнось действий:**</fc>  
 +  * **Устанавливаем и обновляем Ubuntu Server** 
 +  * **Устанавливаем основное и дополнительное ПО** 
 +  * **Загружаем 6 файлов карт** 
 +  * **Объеденяем 3 файла и загружаем в базу** 
 +  * **Настраиваем веб-сервер** 
 +  * **Производим первый рендер** 
 +  * **Догружаем в базу дополнительный файл карты** 
 +  * **Проверяем работоспособность сервера** 
 +  * **Удаляем все лишнее, объединяем и загружаем в базу данных файл Евразии** 
 =====Обновление программного обеспечения===== =====Обновление программного обеспечения=====
   * Устанавливаем и обновляем Ubuntu   * Устанавливаем и обновляем Ubuntu
Строка 36: Строка 57:
  
 =====Установка postgresql/postgis===== =====Установка postgresql/postgis=====
-  * В Ubuntu есть предварительно упакованные версии как <color #22b14c>**postgis**</color>, так и <color #22b14c>**postgresql**</color>, поэтому их можно просто установить через диспетчер пакетов Ubuntu.+  * В Ubuntu есть предварительно упакованные версии как <fc #22b14c>**postgis**</fc>, так и <fc #22b14c>**postgresql**</fc>, поэтому их можно просто установить через диспетчер пакетов Ubuntu.
 <code> <code>
 sudo apt --yes install postgresql postgresql-contrib postgis postgresql-12-postgis-3 postgresql-12-postgis-3-scripts sudo apt --yes install postgresql postgresql-contrib postgis postgresql-12-postgis-3 postgresql-12-postgis-3-scripts
Строка 52: Строка 73:
 </code> </code>
 {{:software:linux_server:tile_map_server_wold_20.04.4_4.1.png?|}} {{:software:linux_server:tile_map_server_wold_20.04.4_4.1.png?|}}
-  * Создаем базу данных **postgis**. По умолчанию в различных программах предполагается, что база данных называется <color #22b14c>**gis**</color>, и тут мы будем использовать то же соглашение, хотя это и не обязательно. <color #ed1c24>Укажите/замените **"свое имя"**</color> пользователя вместо пользователя <color #ed1c24>**"eva"**</color>, где это используется ниже. Это должно быть имя пользователя, которое будет отображать карты с помощью **Mapnik**.+  * Создаем базу данных **postgis**. По умолчанию в различных программах предполагается, что база данных называется <fc #22b14c>**gis**</fc>, и тут мы будем использовать то же соглашение, хотя это и не обязательно. <fc #ed1c24>Укажите/замените **"свое имя"**</fc> пользователя вместо пользователя <fc #ed1c24>**"eva"**</fc>, где это используется ниже. Это должно быть имя пользователя, которое будет отображать карты с помощью **Mapnik**.
 <code> <code>
 sudo -u postgres -i sudo -u postgres -i
 </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>+  * Создадим пользователя <fc #ed1c24>(**"eva"**-пример имени пользователя для данного руководства)</fc>
 <code> <code>
 createuser eva createuser eva
 </code> </code>
 {{:software:linux_server:tile_map_server_wold_20.04.4_6.png?|}}  {{:software:linux_server:tile_map_server_wold_20.04.4_6.png?|}} 
-  * Создадим базу данных <color #22b14c>**gis**</color> с кодировкой <color #22b14c>**UTF8**</color>+  * Создадим базу данных <fc #22b14c>**gis**</fc> с кодировкой <fc #22b14c>**UTF8**</fc>
 <code> <code>
 createdb -E UTF8 -O eva gis createdb -E UTF8 -O eva gis
 </code> </code>
 {{:software:linux_server:tile_map_server_wold_20.04.4_7.png?|}} {{:software:linux_server:tile_map_server_wold_20.04.4_7.png?|}}
-  * Продолжая работать как пользователь **«postgres»**, настройте PostGIS в PostgreSQL (опять же, меняя имя пользователя на <color #ed1c24>**"eva"**</color> на <color #ed1c24>**"свое"**</color> имя пользователя ниже):+  * Продолжая работать как пользователь **«postgres»**, настройте PostGIS в PostgreSQL (опять же, меняя имя пользователя на <fc #ed1c24>**"eva"**</fc> на <fc #ed1c24>**"свое"**</fc> имя пользователя ниже):
 <code> <code>
 psql psql
 </code> </code>
 {{:software:linux_server:tile_map_server_wold_20.04.4_8.png?|}} {{:software:linux_server:tile_map_server_wold_20.04.4_8.png?|}}
-  * (ответ <color #22b14c>**«postgres=#»**</color>)+  * (ответ <fc #22b14c>**«postgres=#»**</fc>)
 <code> <code>
 \c gis \c gis
 </code> </code>
 {{:software:linux_server:tile_map_server_wold_20.04.4_9.png?|}} {{:software:linux_server:tile_map_server_wold_20.04.4_9.png?|}}
-  * (ответ: <color #22b14c>**“You are now connected to database ‘gis’ as user ‘postgres’”**</color>.)+  * (ответ: <fc #22b14c>**“You are now connected to database ‘gis’ as user ‘postgres’”**</fc>.)
 <code> <code>
 CREATE EXTENSION postgis; CREATE EXTENSION postgis;
Строка 87: Строка 108:
 \\   \\  
 \\   \\  
-<color #22b14c>**(ответ CREATE EXTENSION)\\  +<fc #22b14c>**(ответ CREATE EXTENSION)\\  
 (ответ CREATE EXTENSION)\\   (ответ CREATE EXTENSION)\\  
 (ответ ALTER TABLE)\\   (ответ ALTER TABLE)\\  
-(ответ ALTER TABLE)**</color>+(ответ ALTER TABLE)**</fc>
 <code> <code>
 \q \q
Строка 110: Строка 131:
 </code> </code>
 {{:software:linux_server:tile_map_server_wold_20.04.4_14.png?|}} {{:software:linux_server:tile_map_server_wold_20.04.4_14.png?|}}
-  * Опять же, выше замените <color #ed1c24>**“eva”**</color> на имя пользователя без регистрации <color #ed1c24>**root**</color>, которого вы выбрали.+  * Опять же, выше замените <fc #ed1c24>**“eva”**</fc> на имя пользователя без регистрации <fc #ed1c24>**root**</fc>, которого вы выбрали.
 =====Установка osm2pgsql===== =====Установка osm2pgsql=====
-  * Далее мы установим <color #22b14c>**osm2pgsql**</color>:+  * Далее мы установим <fc #22b14c>**osm2pgsql**</fc>:
 <code> <code>
 sudo apt install osm2pgsql sudo apt install osm2pgsql
 </code> </code>
 {{:software:linux_server:tile_map_server_wold_20.04.4_15.png?|}} {{:software:linux_server:tile_map_server_wold_20.04.4_15.png?|}}
-  * <color #22b14c>**Ошибок обычно быть не должно**</color>+  * <fc #22b14c>**Ошибок обычно быть не должно**</fc>
  
 =====Mapnik===== =====Mapnik=====
Строка 155: Строка 176:
   * Клонируем репозиторий **mod_tile**   * Клонируем репозиторий **mod_tile**
  
- <color #00a2e8>**:&1: Примечание: В этом руководстве mod_tile загружается с альтернативных, а не с официальных  зеркал (https://github.com/SomeoneElseOSM/mod_tile.git), по причине неизменности файлов в репозитории для данного руководства.**</color>+ <fc #00a2e8>**:&1: Примечание: В этом руководстве mod_tile загружается с альтернативных, а не с официальных  зеркал (https://github.com/SomeoneElseOSM/mod_tile.git), по причине неизменности файлов в репозитории для данного руководства.**</fc>
 <code> <code>
 git clone -b switch2osm https://git.wwoss.ru/root/mod_tile.git git clone -b switch2osm https://git.wwoss.ru/root/mod_tile.git
Строка 170: Строка 191:
 </code> </code>
 {{:software:linux_server:tile_map_server_wold_20.04.4_23.png?|}} {{:software:linux_server:tile_map_server_wold_20.04.4_23.png?|}}
-  * (это должно закончится <color #22b14c>**“autoreconf: Leaving directory ‘.’”.**</color>)+  * (это должно закончится <fc #22b14c>**“autoreconf: Leaving directory ‘.’”.**</fc>)
 {{:software:linux_server:tile_map_server_wold_20.04.4_24.png?|}} {{:software:linux_server:tile_map_server_wold_20.04.4_24.png?|}}
   * (в предыдущих установках мне приходилось проделывать это 2 раза для создания папки **mod_tile** в директории **src**)   * (в предыдущих установках мне приходилось проделывать это 2 раза для создания папки **mod_tile** в директории **src**)
Строка 179: Строка 200:
 </code> </code>
 {{:software:linux_server:tile_map_server_wold_20.04.4_26.png?|}} {{:software:linux_server:tile_map_server_wold_20.04.4_26.png?|}}
-  * (это должно закончится <color #22b14c>**“config.status: executing libtool commands”**</color>)+  * (это должно закончится <fc #22b14c>**“config.status: executing libtool commands”**</fc>)
 {{:software:linux_server:tile_map_server_wold_20.04.4_27.png?|}} {{:software:linux_server:tile_map_server_wold_20.04.4_27.png?|}}
 <code> <code>
Строка 185: Строка 206:
 </code> </code>
 {{:software:linux_server:tile_map_server_wold_20.04.4_28.png?|}} {{:software:linux_server:tile_map_server_wold_20.04.4_28.png?|}}
-  * Обратите внимание, что здесь некоторые «тревожные» сообщения будут прокручиваться вверх по экрану. Однако это должно заканчиваться на <color #22b14c>**«make[1]: Leaving directory '/home/eva/src/mod_tile'»**</color>+  * Обратите внимание, что здесь некоторые «тревожные» сообщения будут прокручиваться вверх по экрану. Однако это должно заканчиваться на <fc #22b14c>**«make[1]: Leaving directory '/home/eva/src/mod_tile'»**</fc>
 {{:software:linux_server:tile_map_server_wold_20.04.4_29.png?|}} {{:software:linux_server:tile_map_server_wold_20.04.4_29.png?|}}
 <code> <code>
Строка 191: Строка 212:
 </code> </code>
 {{:software:linux_server:tile_map_server_wold_20.04.4_30.png?|}} {{:software:linux_server:tile_map_server_wold_20.04.4_30.png?|}}
-  * (это должно закончиться <color #22b14c>**«make[1]: выход из каталога должно быть '/home/eva/src/mod_tile'»**</color>)+  * (это должно закончиться <fc #22b14c>**«make[1]: выход из каталога должно быть '/home/eva/src/mod_tile'»**</fc>)
 {{:software:linux_server:tile_map_server_wold_20.04.4_31.png?|}} {{:software:linux_server:tile_map_server_wold_20.04.4_31.png?|}}
 <code> <code>
Строка 197: Строка 218:
 </code> </code>
 {{:software:linux_server:tile_map_server_wold_20.04.4_32.png?|}} {{:software:linux_server:tile_map_server_wold_20.04.4_32.png?|}}
-  * (это должно закончиться <color #22b14c>**«chmod 644 /usr/lib/apache2/modules/mod_tile.so»**</color>)+  * (это должно закончиться <fc #22b14c>**«chmod 644 /usr/lib/apache2/modules/mod_tile.so»**</fc>)
 {{:software:linux_server:tile_map_server_wold_20.04.4_33.png?|}} {{:software:linux_server:tile_map_server_wold_20.04.4_33.png?|}}
 <code> <code>
Строка 215: Строка 236:
   * клонируем репозитарий   * клонируем репозитарий
  
- <color #00a2e8>**:&1: Примечание: В этом руководстве openstreetmap-carto загружается с альтернативных, а не с официальных  зеркал (https://github.com/gravitystorm/openstreetmap-carto), по причине неизменности файлов openstreetmap-carto в репозитории для данного руководства.**</color>+ <fc #00a2e8>**:&1: Примечание: В этом руководстве openstreetmap-carto загружается с альтернативных, а не с официальных  зеркал (https://github.com/gravitystorm/openstreetmap-carto), по причине неизменности файлов openstreetmap-carto в репозитории для данного руководства.**</fc>
 <code> <code>
 git clone https://git.wwoss.ru/root/openstreetmap-carto.git git clone https://git.wwoss.ru/root/openstreetmap-carto.git
Строка 240: Строка 261:
 carto -v carto -v
 </code> </code>
-  * Это должно ответить номером версии, которая должна быть не меньше: <color #22b14c>**1.2.0**</color>+  * Это должно ответить номером версии, которая должна быть не меньше: <fc #22b14c>**1.2.0**</fc>
 {{:software:linux_server:tile_map_server_wold_20.04.4_40.png?|}} {{:software:linux_server:tile_map_server_wold_20.04.4_40.png?|}}
   * преобразуем проект carto во что-то, понятное Mapnik:   * преобразуем проект carto во что-то, понятное Mapnik:
Строка 248: Строка 269:
 {{:software:linux_server:tile_map_server_wold_20.04.4_41.png?|}} {{:software:linux_server:tile_map_server_wold_20.04.4_41.png?|}}
   * Теперь у вас есть таблица стиля Mapnik XML в /home/eva/src/openstreetmap-carto/mapnik.xml.    * Теперь у вас есть таблица стиля Mapnik XML в /home/eva/src/openstreetmap-carto/mapnik.xml. 
-<color #22b14c> :&2: **Примечание:** все предупреждения\\  +<fc #22b14c> :&2: **Примечание:** все предупреждения\\  
 **Warning: style/admin.mss:22:18 Styles do not match layer selector #admin-low-zoom.**\\   **Warning: style/admin.mss:22:18 Styles do not match layer selector #admin-low-zoom.**\\  
 **Warning: style/admin.mss:18:6 Styles do not match layer selector #admin-low-zoom.**\\   **Warning: style/admin.mss:18:6 Styles do not match layer selector #admin-low-zoom.**\\  
-Игнорируем</color>+Игнорируем</fc>
 {{:software:linux_server:tile_map_server_wold_20.04.4_42.png?|}} {{:software:linux_server:tile_map_server_wold_20.04.4_42.png?|}}
  
Строка 263: Строка 284:
 {{:software:linux_server:tile_map_server_wold_20.04.4_43.png?|}} {{:software:linux_server:tile_map_server_wold_20.04.4_43.png?|}}
   * на странице зеркала загрузки https://wwoss.ru/openstreetmap/ выбираем нужную нам карту для и копируем  ее ссылку   * на странице зеркала загрузки https://wwoss.ru/openstreetmap/ выбираем нужную нам карту для и копируем  ее ссылку
- <color #00a2e8>**:&1: Примечание: В этом руководстве файлы ".osm.pbf" загружается с альтернативных, а не с официальных  зеркал (https://download.geofabrik.de/), по причине скорости загрузки с данного репозитория для данного руководства.**</color>+ <fc #00a2e8>**:&1: Примечание: В этом руководстве файлы ".osm.pbf" загружается с альтернативных, а не с официальных  зеркал (https://download.geofabrik.de/), по причине скорости загрузки с данного репозитория для данного руководства.**</fc>
 \\   \\  
-<color #22b14c>**:&2: Последовательность: Сейчас мы загрузим 3 небольшие карты (georgia, moldova и azerbaijan), произведем их слияние (для понимания и наглядного примера слияния) и с ними продолжим установку и настройку сервера. Так-же загрузим небольшую карту (andorra) для примера дозагрузки карт в базу и конечно карты Europe (28.9 GB) и Asia (13.1 GB). Europe и Asia поставим на слияние и загрузим в базу в конце статьи, на уже подготовленный нами и проверенный (рабочий) сервер.**</color>+<fc #22b14c>**:&2: Последовательность: Сейчас мы загрузим 3 небольшие карты (georgia, moldova и azerbaijan), произведем их слияние (для понимания и наглядного примера слияния) и с ними продолжим установку и настройку сервера. Так-же загрузим небольшую карту (andorra) для примера дозагрузки карт в базу и конечно карты Europe (28.9 GB) и Asia (13.1 GB). Europe и Asia поставим на слияние и загрузим в базу в конце статьи, на уже подготовленный нами и проверенный (рабочий) сервер.**</fc>
 <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
Строка 308: Строка 329:
 {{:software:linux_server:tile_map_server_wold_20.04.4_75.png?|}} {{:software:linux_server:tile_map_server_wold_20.04.4_75.png?|}}
 \\   \\  
-  * <color #ed1c24>**Обратите внимание на параметр -c (--create) при импорте через osm2pgsql.  +  * <fc #ed1c24>**Обратите внимание на параметр -c (--create) при импорте через osm2pgsql.  
-  * С этим параметром удаляется вся существующая информация с таблиц.**</color+  * С этим параметром удаляется вся существующая информация с таблиц.**</fc
 \\   \\  
-<color #00a2e8>**:&2: Дополнение: Откроем второе окно программы Putty и поставим слияник карт Europe и Asia, чтобы к концу статьи у нас уже был объедененный файл  "eurasia.osm.pbf"**</color>+<fc #00a2e8>**:&2: Дополнение: Откроем второе окно программы Putty и поставим слияник карт Europe и Asia, чтобы к концу статьи у нас уже был объедененный файл  "eurasia.osm.pbf"**</fc>
 <code> <code>
 cd ~/data cd ~/data
Строка 319: Строка 340:
  
 ====Догрузка карт в базу данных==== ====Догрузка карт в базу данных====
-<color #ed1c24>**:&9: Внимание!: Этот шаг выполняеся только в случае необходимости дозагрузки в готовую базу данных дополнительных файлов, в нашем случае сейчас пропустим этот подраздел, перейдем в  радел [[software:linux_server:tile_map_server_22.04.4|"Создание индексов"]] и вернемся сюда в конце статьи при уже настроенном сервере. (этот шаг указан в этом разделе т.к команды эдинтичные с разницей в способе загрузки (%%--create/--append%%)).**</color>\\  +<fc #ed1c24>**:&9: Внимание!: Этот шаг выполняеся только в случае необходимости дозагрузки в готовую базу данных дополнительных файлов, в нашем случае сейчас пропустим этот подраздел, перейдем в  радел [[software:linux_server:tile_map_server_22.04.4|"Создание индексов"]] и вернемся сюда в конце статьи при уже настроенном сервере. (этот шаг указан в этом разделе т.к команды эдинтичные с разницей в способе загрузки (%%--create/--append%%)).**</fc>\\  
   * Следующая команда загрузит файл карты "andorra" в уже существующую базу данных.     * Следующая команда загрузит файл карты "andorra" в уже существующую базу данных.  
 <code> <code>
Строка 325: Строка 346:
 osm2pgsql -d gis --append --slim  -G --hstore --tag-transform-script ~/src/openstreetmap-carto/openstreetmap-carto.lua -C 64000 --number-processes 8 -S ~/src/openstreetmap-carto/openstreetmap-carto.style ~/data/andorra-latest.osm.pbf osm2pgsql -d gis --append --slim  -G --hstore --tag-transform-script ~/src/openstreetmap-carto/openstreetmap-carto.lua -C 64000 --number-processes 8 -S ~/src/openstreetmap-carto/openstreetmap-carto.style ~/data/andorra-latest.osm.pbf
 </code> </code>
-  * **Если вам необходимо сделать импорт ещё нескольких стран, то вместо -c указывайте параметр -a (<color #ed1c24>--append</color>).**+  * **Если вам необходимо сделать импорт ещё нескольких стран, то вместо -c указывайте параметр -a (<fc #ed1c24>--append</fc>).**
 Командные опции: Командные опции:
-  * <color #22b14c>-d gis</color>+  * <fc #22b14c>-d gis</fc>
   * База данных, с которой нужно работать (раньше gis была по умолчанию, теперь нужно указать).   * База данных, с которой нужно работать (раньше gis была по умолчанию, теперь нужно указать).
-  * <color #22b14c>--create</color>+  * <fc #22b14c>--create</fc>
   * Загружает данные в пустую базу данных, а не пытается добавить их в существующую (иначе --append).   * Загружает данные в пустую базу данных, а не пытается добавить их в существующую (иначе --append).
-  * <color #22b14c>--slim</color>+  * <fc #22b14c>--slim</fc>
   * osm2pgsql может использовать разные макеты таблиц; «тонкие» таблицы работают для рендеринга.   * osm2pgsql может использовать разные макеты таблиц; «тонкие» таблицы работают для рендеринга.
-  * <color #22b14c>-G</color>+  * <fc #22b14c>-G</fc>
   * Определяет, как обрабатываются мультиполигоны.   * Определяет, как обрабатываются мультиполигоны.
-  * <color #22b14c>--hstore</color>+  * <fc #22b14c>--hstore</fc>
   * Позволяет тегам, для которых нет явных столбцов базы данных, использоваться для рендеринга.   * Позволяет тегам, для которых нет явных столбцов базы данных, использоваться для рендеринга.
-  * <color #22b14c>--tag-transform-script</color>+  * <fc #22b14c>--tag-transform-script</fc>
   * Определяет сценарий lua, используемый для обработки тегов. Это простой способ обработки тегов OSM до того, как их обработает сам стиль, что значительно упрощает логику стиля.   * Определяет сценарий lua, используемый для обработки тегов. Это простой способ обработки тегов OSM до того, как их обработает сам стиль, что значительно упрощает логику стиля.
-  * <color #22b14c>-C 4000</color>+  * <fc #22b14c>-C 4000</fc>
   * Выделено 4,0 Гб памяти osm2pgsql для процесса импорта. Если у вас меньше памяти, вы можете попробовать меньшее число, а если процесс импорта завершится из-за нехватки памяти, вам нужно будет попробовать меньшее число или меньший размер карты OSM.   * Выделено 4,0 Гб памяти osm2pgsql для процесса импорта. Если у вас меньше памяти, вы можете попробовать меньшее число, а если процесс импорта завершится из-за нехватки памяти, вам нужно будет попробовать меньшее число или меньший размер карты OSM.
-  * <color #22b14c>--number-processes 2</color>+  * <fc #22b14c>--number-processes 2</fc>
   * Используйте 2 ЦП. Если у вас есть больше доступных ядер, вы можете использовать больше.   * Используйте 2 ЦП. Если у вас есть больше доступных ядер, вы можете использовать больше.
-  * <color #22b14c>-S</color>+  * <fc #22b14c>-S</fc>
   * Создайте столбцы базы данных в этом файле (на самом деле они не изменились по сравнению с «openstreetmap-carto»)   * Создайте столбцы базы данных в этом файле (на самом деле они не изменились по сравнению с «openstreetmap-carto»)
-  * <color #22b14c>~/src/openstreetmap-carto/openstreetmap-carto.style ~/data/planet-latest.osm.pbf</color>+  * <fc #22b14c>~/src/openstreetmap-carto/openstreetmap-carto.style ~/data/planet-latest.osm.pbf</fc>
   * Место сохранения и файл данных для загрузки.   * Место сохранения и файл данных для загрузки.
  
Строка 432: Строка 453:
 </code> </code>
 {{:software:linux_server:tile_map_server_wold_20.04.4_54.png?|}} {{:software:linux_server:tile_map_server_wold_20.04.4_54.png?|}}
-  * сообщаем Apache о «mod_tile» редактируя файл mod_tile.conf добавляя следующую строку <color #ed1c24>**LoadModule tile_module /usr/lib/apache2/modules/mod_tile.so**</color>+  * сообщаем Apache о «mod_tile» редактируя файл mod_tile.conf добавляя следующую строку <fc #ed1c24>**LoadModule tile_module /usr/lib/apache2/modules/mod_tile.so**</fc>
 <code> <code>
 sudo nano /etc/apache2/conf-available/mod_tile.conf sudo nano /etc/apache2/conf-available/mod_tile.conf
Строка 469: Строка 490:
 </code> </code>
 {{:software:linux_server:tile_map_server_wold_20.04.4_61.png?|}} {{:software:linux_server:tile_map_server_wold_20.04.4_61.png?|}}
-  * вставляем следующие строки между строками <color #00a2e8>«ServerAdmin»</color> и <color #00a2e8>«DocumentRoot»</color+  * вставляем следующие строки между строками <fc #00a2e8>«ServerAdmin»</fc> и <fc #00a2e8>«DocumentRoot»</fc
  
 <code> <code>
Строка 493: Строка 514:
   * проверим наш Apache набрав в браузере адрес нашего виртуального сервера (в нашем случае: http://192.168.1.132/)   * проверим наш Apache набрав в браузере адрес нашего виртуального сервера (в нашем случае: http://192.168.1.132/)
 {{:software:linux_server:tile_map_server_wold_20.04.4_65.png?|}} {{:software:linux_server:tile_map_server_wold_20.04.4_65.png?|}}
-  * **<color #ed1c24>Дальше не продолжаем если не дождались загрузки данных в базу и не осуществили после этого [[software:linux_server:tile_map_server_worl_20.04.4#Создание индексов|Создание индексов]]</color>**+  * **<fc #ed1c24>Дальше не продолжаем если не дождались загрузки данных в базу и не осуществили после этого [[software:linux_server:tile_map_server_worl_20.04.4#Создание индексов|Создание индексов]]</fc>**
  
 =====Запуск рендера в первый раз===== =====Запуск рендера в первый раз=====
Строка 513: Строка 534:
 {{:software:linux_server:tile_map_server_wold_20.04.4_89.png?|}} {{:software:linux_server:tile_map_server_wold_20.04.4_89.png?|}}
   * Мы видим на карте отображение 3х государств (georgia, moldova и azerbaijan), которые мы объеденили в один файл в разделе [[software:linux_server:tile_map_server_worl_20.04.4#Загрузка данных|Загрузка данных]]. Остановим ренден и загрузим небольшую карту "andorra", размером 2Mb в существующую карту используя команду (см. описание в разделе [[software:linux_server:tile_map_server_worl_20.04.4#Догрузка карт в базу данных|Догрузка карт в базу данных]])   * Мы видим на карте отображение 3х государств (georgia, moldova и azerbaijan), которые мы объеденили в один файл в разделе [[software:linux_server:tile_map_server_worl_20.04.4#Загрузка данных|Загрузка данных]]. Остановим ренден и загрузим небольшую карту "andorra", размером 2Mb в существующую карту используя команду (см. описание в разделе [[software:linux_server:tile_map_server_worl_20.04.4#Догрузка карт в базу данных|Догрузка карт в базу данных]])
-  * Команда остановки работающего процесса <color #22b14c>**CTRL+C**</color>, далее останавливаем рендер  +  * Команда остановки работающего процесса <fc #22b14c>**CTRL+C**</fc>, далее останавливаем рендер  
 <code> <code>
 systemctl stop renderd systemctl stop renderd
Строка 530: Строка 551:
   * В окне веб-браузера найдем наше новое государство. Т.к. оно очень маленькое, то искать его будем в строке браузера по координатам плиток "#7/39.428/1.725" (в меньших масштабах такие маленькие государства не отображаютя, а мы его взяли для примера догрузки)   * В окне веб-браузера найдем наше новое государство. Т.к. оно очень маленькое, то искать его будем в строке браузера по координатам плиток "#7/39.428/1.725" (в меньших масштабах такие маленькие государства не отображаютя, а мы его взяли для примера догрузки)
 {{:software:linux_server:tile_map_server_wold_20.04.4_94.png?|}} {{:software:linux_server:tile_map_server_wold_20.04.4_94.png?|}}
-<color #22b14c>**:&2: Примечание:Иногда рендер идет с командой, т.е. без sudo -u 'eva'**</color>+<fc #22b14c>**:&2: Примечание:Иногда рендер идет с командой, т.е. без sudo -u 'eva'**</fc>
 <code> <code>
 renderd -f -c /usr/local/etc/renderd.conf renderd -f -c /usr/local/etc/renderd.conf
 </code> </code>
   * Убидившись в работоспособности нашего сервера, научившись соединять файлы карт, загружать новые и дополнять в базе данных файлы карт, продолжим настройку сервера и подготовку к загрузке большого файла eurasia.osm.pbf (>40Gb), который к этому моменту уже должен подготовиться.   * Убидившись в работоспособности нашего сервера, научившись соединять файлы карт, загружать новые и дополнять в базе данных файлы карт, продолжим настройку сервера и подготовку к загрузке большого файла eurasia.osm.pbf (>40Gb), который к этому моменту уже должен подготовиться.
-  * Останавливаем работающий процесс <color #22b14c>**CTRL+C**</color>, и далее останавливаем рендер +  * Останавливаем работающий процесс <fc #22b14c>**CTRL+C**</fc>, и далее останавливаем рендер 
 <code> <code>
 systemctl stop renderd systemctl stop renderd
Строка 587: Строка 608:
   * Загрузим максимольно приближенный масштаб карты. Если у вам это получилось, значит сервер настроен правильно.   * Загрузим максимольно приближенный масштаб карты. Если у вам это получилось, значит сервер настроен правильно.
 {{:software:linux_server:tile_map_server_wold_20.04.4_105.png?|}} {{:software:linux_server:tile_map_server_wold_20.04.4_105.png?|}}
-  * Проверяем завершение слияние нашего файла <color #22b14c>**eurasia.osm.pbf**</color> (во втором окне консоли должен быть завершенный процесс и ожидание новых команд)+  * Проверяем завершение слияние нашего файла <fc #22b14c>**eurasia.osm.pbf**</fc> (во втором окне консоли должен быть завершенный процесс и ожидание новых команд)
 {{:software:linux_server:tile_map_server_wold_20.04.4_106.png?|}} {{:software:linux_server:tile_map_server_wold_20.04.4_106.png?|}}
   * Проверим размер файла eurasia.osm.pbf после слияния   * Проверим размер файла eurasia.osm.pbf после слияния
Строка 612: Строка 633:
 </code> </code>
 {{:software:linux_server:tile_map_server_wold_20.04.4_109.png?|}} {{:software:linux_server:tile_map_server_wold_20.04.4_109.png?|}}
-  * Следующая команда с параметром <color #ed1c24>**--create**</color> сотрет все данные в нашей базе данных и загрузит файл карты eurasia. Процесс достаточно длительный и займет очень много времени (примерно >15-17 часов, в зависимости от комплектации сервера)+  * Следующая команда с параметром <fc #ed1c24>**--create**</fc> сотрет все данные в нашей базе данных и загрузит файл карты eurasia. Процесс достаточно длительный и займет очень много времени (примерно >15-17 часов, в зависимости от комплектации сервера)
 <code> <code>
 cd ~/data cd ~/data
Строка 626: Строка 647:
 {{: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}}
  
software/linux_server/tile_map_server_worl_20.04.4.1724044423.txt.gz · Последнее изменение: 2024/08/19 08:13 — vladpolskiy