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

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


software:linux_server:tile_map_server

Различия

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

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

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
software:linux_server:tile_map_server [2024/08/03 21:46] – [Или установите Mapnik из исходников] vladpolskiysoftware:linux_server:tile_map_server [2025/03/31 18:14] (текущий) – [Упомянутые команды:] vladpolskiy
Строка 1: Строка 1:
 ======Tile map server====== ======Tile map server======
 =====Введение===== =====Введение=====
-На этой странице показано, как можно использовать OpenStreetMap Carto для реализации тайлового сервера с использованием того же программного обеспечения, что и OpenStreetMap. Он включает в себя пошаговые инструкции по установке Tile Server на основе Ubuntu и ограничен описанием некоторых передовых методов, учитывая, что основной целью этого сайта является предоставление руководств по настройке среды разработки OpenStreetMap Carto и предложение рекомендации по редактированию стиля.+На этой странице показано, как можно использовать [[https://wiki.openstreetmap.org/wiki/Standard_tile_layer|OpenStreetMap Carto]] для реализации [[https://en.wikipedia.org/wiki/Tiled_web_map|тайлового сервера]] с использованием того же программного обеспечения, что и OpenStreetMap. Он включает в себя пошаговые инструкции по установке Tile Server на основе Ubuntu и ограничен описанием некоторых передовых методов, учитывая, что основной целью этого сайта является предоставление руководств по настройке среды разработки OpenStreetMap Carto и предложение рекомендации по редактированию стиля
 +\\   
 +\\   
 +OSM Tile Server — это [[https://en.wikipedia.org/wiki/Web_server|веб-сервер]], специализирующийся на предоставлении  [[https://en.wikipedia.org/wiki/Raster_graphics|растровых]]растровых карт, представляющих их как статические [[https://en.wikipedia.org/wiki/Raster_graphics|плитки]] и способный выполнять [[https://wiki.openstreetmap.org/wiki/Rendering|рендеринг]] в реальном времени или предоставлять кэшированные изображения. Веб-программное обеспечение, принятое OpenStreetMap, представляет собой [[https://en.wikipedia.org/wiki/Apache_HTTP_Server|Apache HTTP Server]] вместе со специальным подключаемым модулем с именем //mod_tile// и связанным с ним внутренним стеком, способным генерировать плитки во время выполнения; программы и библиотеки объединены в цепочку для создания сервера тайлов.
 \\   \\  
-OSM Tile Server — это веб-сервер, специализирующийся на доставке растровых карт, представляющих их как статические тайлы и способный выполнять рендеринг в реальном времени или предоставлять кэшированные изображения. Веб-программное обеспечение, принятое OpenStreetMap, представляет собой HTTP-сервер Apache вместе со специальным подключаемым модулем с именем mod_tile и связанным с ним внутренним стеком, способным генерировать плитки во время выполнения; программы и библиотеки объединены в цепочку для создания сервера тайлов. 
 \\   \\  
 Как это часто бывает с OpenStreetMap, существует множество способов достижения цели, и почти все компоненты имеют альтернативы, которые имеют различные преимущества и недостатки. В этом руководстве описывается стандартный процесс установки OSM Tile Server, используемого на OpenStreetMap.org. Как это часто бывает с OpenStreetMap, существует множество способов достижения цели, и почти все компоненты имеют альтернативы, которые имеют различные преимущества и недостатки. В этом руководстве описывается стандартный процесс установки OSM Tile Server, используемого на OpenStreetMap.org.
 +\\  
 \\   \\  
 Он состоит из следующих основных компонентов: Он состоит из следующих основных компонентов:
Строка 20: Строка 23:
 Все упомянутое программное обеспечение является открытым исходным кодом. Все упомянутое программное обеспечение является открытым исходным кодом.
 \\   \\  
-Для тайлового сервера требуется база данных 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 возвращает созданный тайл на веб-сервер и, в свою очередь, в браузер.+Для тайлового сервера требуется база данных //PostGIS// в //которой хранятся геопространственные объекты//, заполненные инструментом //osm2pgsql// из данных OSM. Кроме того, необходим каталог файловой системы, включающий файл //OSM.xml//символы карты (проверьте подкаталог openstreetmap-carto/symbols) и шейп-файлы (проверьте подкаталог openstreetmap-carto/data). //OSM.xml// предварительно создается инструментом [[https://github.com/mapbox/carto|carto]] из стиля openstreetmap-carto (project.mml и все связанные файлы CartoCSS, включенные в openstreetmap-carto).
 \\   \\  
-Демон renderd реализует механизм очередей с несколькими уровнями приоритета, чтобы обеспечить актуальность просмотра с учетом доступных ресурсов рендеринга. Наивысший приоритет — для рендеринга «на лету» тайлов, еще не находящихся в кэше тайлов, два уровня приоритета для повторного рендеринга устаревших тайлов «на лету» и две очереди фонового пакетного рендеринга. Чтобы избежать проблем с каталогами, которые становятся слишком большими, и чтобы избежать слишком большого количества крошечных файлов, Mod_tile / renderd хранит визуализированные тайлы в «метатайлах», в специальной хешированной структуре каталогов. 
 \\   \\  
-Даже если тайловый сервер динамически генерирует тайлы во время выполнения, они также могут быть предварительно визуализированы для просмотра в автономном режиме с помощью специального инструмента с именем render_list , который обычно используется для предварительного рендеринга тайлов с низким уровнем масштабирования и требует значительного времени для выполнения процесса (десятки часов в случае, если вся планета предварительно визуализируется); эта утилита включена в mod_tile , а также в другой инструмент с именем render_expired , который предоставляет методы для разрешения истечения срока действия тайлов карты. Более подробное описание render_list и render_expired можно найти на их справочных страницах.+Когда веб-сервер Apache получает запрос от браузера, он вызывает подключаемый модуль [[https://github.com/openstreetmap/mod_tile/|mod_tile]], который, в свою очередь, проверяетбыла ли плитка уже создана (из предыдущего рендерингаи кэширована, чтобы она была готова к использованию; в этом случае mod_tile немедленно отправляет плитку обратно на веб-сервер. И наоборот, если запрос необходимо отобразить, то он ставится в очередь на серверную часть рендеринга которая отвечает за вызов [[https://wiki.openstreetmap.org/wiki/Mapnik|Mapnik]] для выполнения фактического рендеринга; renderd — это процессдемон , включенный в исходники mod_tile и связанный с mod_tile через очереди UNIX. визуализированныйявляется стандартным бэкэндом, используемым в настоящее время www.openstreetmap.org, даже если некоторые реализации OSM используют [[https://wiki.openstreetmap.org/wiki/Tirex|Tirex]]; Mapnik извлекает данные из базы данных PostGIS в соответствии с информацией о стиле openstreetmap-carto и динамически отображает тайл. renderd возвращает созданный тайл на веб-сервер и, в свою очередь, в браузер.
 \\   \\  
-Справочную информацию о методе истечения срока действия тайлов можно найти в механизме истечения срока действия тайлов. 
 \\   \\  
 +Демон renderd реализует механизм очередей с несколькими уровнями приоритета, чтобы обеспечить актуальность просмотра с учетом доступных ресурсов рендеринга. Наивысший приоритет — для рендеринга «на лету» тайлов, еще не находящихся в кэше тайлов, два уровня приоритета для повторного рендеринга устаревших тайлов «на лету» и две очереди фонового пакетного рендеринга. Чтобы избежать проблем с каталогами, которые становятся слишком большими, и чтобы избежать слишком большого количества крошечных файлов, Mod_tile / renderd хранит визуализированные тайлы в «метатайлах», в специальной хешированной структуре каталогов((Более подробную информацию  можно найти в описании процесса на [[https://github.com/openstreetmap/mod_tile/|сайте mod_tile]])).
 +\\  
 +\\  
 +Даже если тайловый сервер динамически генерирует тайлы во время выполнения, они также могут быть предварительно визуализированы для просмотра в автономном режиме с помощью специального инструмента с именем //render_list//, который обычно используется для предварительного рендеринга тайлов с низким уровнем масштабирования и требует значительного времени для выполнения процесса (десятки часов в случае, если вся планета предварительно визуализируется); эта утилита включена в mod_tile , а также в другой инструмент с именем //render_expired//, который предоставляет методы для разрешения истечения срока действия тайлов карты. Более подробное описание [[https://ircama.github.io/osm-carto-tutorials/manpage.html?url=https://rawgit.com/openstreetmap/mod_tile/master/docs/render_list.1|render_list]] и [[https://ircama.github.io/osm-carto-tutorials/manpage.html?url=https://rawgit.com/openstreetmap/mod_tile/master/docs/render_expired.1|render_expired]] можно найти на их справочных страницах.
 +\\  
 +\\  
 +Справочную информацию о методе истечения срока действия тайлов можно найти в [[https://wiki.openstreetmap.org/wiki/Tile_expire_methods|механизме истечения срока действия тайлов]].
 +\\  
 +====Общий процесс====
 +Информация о предыдущих периодах частично взята с [[https://switch2osm.org/serving-tiles/|switch2osm.org - Serving Tiles]](( см. главу «The toolchain»)). 
 +
 +
 +{{:software:linux_server:tile_map_server.png|}}
 +
 +Дополнительное описание процесса рендеринга OpenStreetMap можно найти в разделе [[https://ircama.github.io/osm-carto-tutorials/osm-rendering-process|Архитектура OSM]].
 +
 +Следующую пошаговую процедуру можно использовать для установки и настройки всего необходимого программного обеспечения для работы вашего собственного сервера тайлов OpenStreetMap на Ubuntu.((
 +При подготовке настоящего документа использовались следующие источники:
 +
 +  * [[https://switch2osm.org/serving-tiles/manually-building-a-tile-server-20-04-lts/|switch2osm.org - Ручная сборка сервера плиток (20.04 LTS)]]
 +  * [[https://wiki.openstreetmap.org/wiki/Mod_tile/Setup_of_your_own_tile_server|OSM Wiki - Mod tile/Настройка собственного сервера плиток]]
 +  * [[https://www.linuxbabe.com/linux-server/openstreetmap-tile-server-ubuntu-16-04|Создайте свой собственный сервер тайлов OpenStreetMap на Ubuntu 16.04]]
 +  * [[https://wiki.debian.org/OSM/tileserver/jessie|OSM сервер плитки jessie]]
 +))
 +
 +Цель этой процедуры — по возможности использовать [[https://en.wikipedia.org/wiki/Ubuntu_(operating_system)#Package_classification_and_support|пакеты Ubuntu]] и официальные [[https://developer.ubuntu.com/en/publish/other-forms-of-submitting-apps/ppa/|PPA]].
 +
 +Мы рассматриваем возможность использования [[https://en.wikipedia.org/wiki/Ubuntu_(operating_system)|Ubuntu]] 20.04.2 LTS [[https://en.wikipedia.org/wiki/Ubuntu_version_history#Ubuntu_20.04_LTS_(Focal_Fossa)|Focal Fossa]] или 18.04 LTS [[https://en.wikipedia.org/wiki/Ubuntu_version_history#Ubuntu_18.04_LTS_(Bionic_Beaver)|Bionic Beaver]], рекомендуемой версии операционной системы.
  
 +Эта процедура обновлена ​​до версии OpenStreetMap Carto, доступной на момент написания. Чтобы получить правильную процедуру установки, следует проверить [[https://github.com/gravitystorm/openstreetmap-carto/blame/master/INSTALL.md|историю INSTALL, учитывая, что разработчики]] [[https://github.com/gravitystorm/openstreetmap-carto/blob/master/INSTALL.md|OpenStreetMap Carto]] используют ее для обновления. Проверьте также [[https://github.com/gravitystorm/openstreetmap-carto/blame/master/README.md|журнал изменений README]].
 =====Общая настройка для Ubuntu===== =====Общая настройка для Ubuntu=====
  
Строка 142: Строка 171:
 {{:software:linux_server:osm_110.png|}} {{:software:linux_server:osm_110.png|}}
 \\   \\  
-<color #ed1c24>E: Package 'ttf-unifont' has no installation candidate</color>+<fc #ed1c24>E: Package 'ttf-unifont' has no installation candidate</fc>
 \\   \\  
 пакет 'ttf-unifont' установим позже (сейчас не критично) пакет 'ttf-unifont' установим позже (сейчас не критично)
Строка 303: Строка 332:
 df df
 ====Зависимость FreeType в Ubuntu 16.04 LTS==== ====Зависимость FreeType в Ubuntu 16.04 LTS====
-====Установить библиотеку Mapnik из пакета====+В Ubuntu 18.04 LTS, который устанавливает FreeType 2.8.1, пропустите этот абзац и продолжите установку Mapnik . 
 + 
 +[[https://github.com/mapnik/mapnik/wiki/MapnikDependencies|Mapnik]] зависит от [[https://en.wikipedia.org/wiki/FreeType|FreeType]] для поддержки шрифтов [[https://en.wikipedia.org/wiki/TrueType|TrueType]], [[https://en.wikipedia.org/wiki/PostScript_fonts#Type_1|Type 1]] и [[https://en.wikipedia.org/wiki/OpenType|OpenType]]. В Ubuntu 16.04 LTS [[https://launchpad.net/ubuntu/+source/freetype|установлена ​​версия FreeType]] 2.6.1 , в которой включено [[https://www.freetype.org/freetype2/docs/text-rendering-general.html#experimental-stem-darkening-for-the-auto-hinter|затемнение основы]], что делает шрифты [[https://en.wikipedia.org/wiki/Noto_fonts|Noto]] [[https://en.wikipedia.org/wiki/CJK_characters|CJK]] [[https://cloud.githubusercontent.com/assets/5209216/19252545/b640dd32-8f45-11e6-91be-8870350d6a3c.png|более жирными и чрезмерно подчеркнутыми]]. Установка [[https://github.com/achaphiv/ppa-fonts/tree/master/ppa|более новой версии FreeType из отдельного PPA]], переопределяющая версию по умолчанию, включенную в Ubuntu 16.04 LTS, решает эту проблему: 
 +<code> 
 +echo "Old freetype version:" 
 +dpkg -l|grep freetype6 
 + 
 +sudo add-apt-repository -y ppa:no1wantdthisname/ppa 
 +sudo apt-get update 
 +sudo apt-get install -y libfreetype6 libfreetype6-dev 
 +</code> 
 +Проверьте обновленную версию freetype: 
 +<code> 
 +echo "Updated freetype version:" 
 +dpkg -l|grep freetype6 
 +</code> 
 +Если вам необходимо понизить версию FreeType до стандартной в репозитории Ubuntu 16.04, просто очистите PPA с помощью //ppa-purge//: 
 +<code> 
 +sudo apt-get install ppa-purge && sudo ppa-purge ppa:no1wantdthisname/ppa 
 +</code> 
 +Мы расскажем о некоторых альтернативных процедурах установки Mapnik (с учетом возможности запуска обновленной версии Ubuntu). 
 + 
 +В версиях Ubuntu старше 18.04 LTS версия Mapnik по умолчанию старше минимально необходимой, которая составляет 3.0.19. В любом случае, специальный PPA, созданный [[https://github.com/talaj|talaj]], предлагает упакованную версию 3.0.19 Mapnik для Ubuntu 16.04 LTS Xenial. 
 +<code> 
 +sudo add-apt-repository -y ppa:talaj/osm-mapnik 
 +sudo apt-get update 
 +</code> 
 +Ubuntu 18.04 LTS предоставляет Mapnik 3.0.19 и не требует специального PPA. 
 +=====Установить библиотеку Mapnik из пакета====
 +Следующая команда устанавливает Mapnik из стандартного репозитория Ubuntu: 
 +<code> 
 +sudo apt-get install -y git autoconf libtool libxml2-dev libbz2-dev \ 
 +  libgeos-dev libgeos++-dev libproj-dev gdal-bin libgdal-dev g++ \ 
 +  libmapnik-dev mapnik-utils python3-mapnik 
 +</code> 
 +В Ubuntu 18.04 LTS вы можете использовать //python-mapnik// вместо //python3-mapnik//
 + 
 +[[https://launchpad.net/mapnik/+packages|Launchpad сообщает версию Mapnik]] , установленную из пакета, в зависимости от операционной системы; чем новее ОС, тем выше версия Mapnik. 
 + 
 +GitHub предоставляет упорядоченный список доступных версий для: 
 + 
 +  * [[https://github.com/mapnik/mapnik/releases|Mapnik]], 
 +  * [[https://github.com/mapnik/node-mapnik/releases|node-mapnik]], 
 +  * [[https://github.com/mapnik/python-mapnik/releases|python-mapnik]]. 
 +Версия 3.0.19 — минимальная рекомендуемая на данный момент.(([[https://github.com/openstreetmap/chef/issues/155|Развертывание новой версии Mapnik (3.0.19)]])) При использовании вышеупомянутого PPA эта версия будет установлена ​​вместо версии по умолчанию, доступной в Ubuntu. 
 + 
 +После установки Mapnik из пакета перейдите к [[https://ircama.github.io/osm-carto-tutorials/tile-server-ubuntu/#verify-that-mapnik-has-been-correctly-installed|проверке установки Mapnik]]. 
 + 
 + 
 + 
 + 
 + 
 + 
 ====Установить Mapnik из исходников==== ====Установить Mapnik из исходников====
 Чтобы установить Mapnik из исходников, перейдите на [[https://github.com/mapnik/mapnik/wiki/UbuntuInstallation|страницу установки Mapnik для Ubuntu]] . Чтобы установить Mapnik из исходников, перейдите на [[https://github.com/mapnik/mapnik/wiki/UbuntuInstallation|страницу установки Mapnik для Ubuntu]] .
Строка 399: Строка 481:
 </code> </code>
 ====Собрать библиотеку Mapnik из исходников==== ====Собрать библиотеку Mapnik из исходников====
-На момент написания статьи Mapnik 3.0 является текущей стабильной версией и должна использоваться. Ветка для последней версии Mapnik из серии 3.0.x — v3.0.x.+На момент написания статьи Mapnik 3.0 является текущей стабильной версией и должна использоваться. Ветка для последней версии Mapnik из серии 3.0.x — v3.0.x.(([[https://github.com/mapnik/mapnik-support/issues/104#issuecomment-364054698|talaj комментарий 8 февр. ↩]]))
  
 Загрузите последние исходники Mapnik: Загрузите последние исходники Mapnik:
Строка 946: Строка 1028:
 Настройки PostgreSQL, принятые OpenStreetMap, можно найти в [[https://github.com/openstreetmap/chef/blob/master/cookbooks/postgresql/attributes/default.rb|книге PostgreSQL Chef Cookbook]] : специальные настройки PostgreSQL для серверов тайлов OpenStreetMap описаны в соответствующей [[https://github.com/openstreetmap/chef/blob/master/roles/tile.rb#L38-L45|конфигурации Tileserver Chef]] . Настройки PostgreSQL, принятые OpenStreetMap, можно найти в [[https://github.com/openstreetmap/chef/blob/master/cookbooks/postgresql/attributes/default.rb|книге PostgreSQL Chef Cookbook]] : специальные настройки PostgreSQL для серверов тайлов OpenStreetMap описаны в соответствующей [[https://github.com/openstreetmap/chef/blob/master/roles/tile.rb#L38-L45|конфигурации Tileserver Chef]] .
  
-Для установки dev&test на системе с 16 ГБ ОЗУ предлагаются следующие настройки:12:+Для установки dev&test на системе с 16 ГБ ОЗУ предлагаются следующие настройки(([[Самый надежный способ импорта больших наборов данных с помощью osm2psq|Самый надежный способ импорта больших наборов данных с помощью osm2psq]])):
 <code> <code>
 shared_buffers = 2GB shared_buffers = 2GB
Строка 971: Строка 1053:
 sudo /etc/init.d/postgresql start sudo /etc/init.d/postgresql start
 </code> </code>
-Вы можете получить ошибку и вам нужно увеличить размер разделяемой памяти. Отредактируйте **/etc/sysctl.d/30-postgresql-shm.conf** и запустите //sudo sysctl -p /etc/sysctl.d/30-postgresql-shm.conf//. Параметр типа //kernel.shmmax=17179869184и kernel.shmall=4194304// может быть подходящим для размера сегмента 16 ГБ.+Вы можете получить ошибку и вам нужно увеличить размер разделяемой памяти. Отредактируйте **/etc/sysctl.d/30-postgresql-shm.conf** и запустите //sudo sysctl -p /etc/sysctl.d/30-postgresql-shm.conf//. Параметр типа //kernel.shmmax=17179869184и kernel.shmall=4194304// может быть подходящим для размера сегмента 16 ГБ.(([[http://www.paulnorman.ca/blog/2011/11/loading-a-pgsnapshot-schema-with-a-planet-take-2/|Информация из блога Пола Нормана.]]))
  
 Для управления и поддержания конфигурации серверов, работающих под управлением OpenStreetMap, используется инструмент управления конфигурацией [[https://www.chef.io/|Chef]] . Для управления и поддержания конфигурации серверов, работающих под управлением OpenStreetMap, используется инструмент управления конфигурацией [[https://www.chef.io/|Chef]] .
Строка 1155: Строка 1237:
 Создайте частичные индексы для ускорения запросов, включенных в //project.mml// , и предоставьте доступ ко всем таблицам //ГИС// , чтобы избежать ошибок рендеринга при доступе к таблицам с пользователем //tileserver// . Создайте частичные индексы для ускорения запросов, включенных в //project.mml// , и предоставьте доступ ко всем таблицам //ГИС// , чтобы избежать ошибок рендеринга при доступе к таблицам с пользователем //tileserver// .
  
-  * Добавьте частичные геометрические индексы, указанные //openstreetmap-carto// для обеспечения эффективного улучшения запросов:+  * Добавьте частичные геометрические индексы, указанные //openstreetmap-carto//((.travis.yml [[https://github.com/gravitystorm/openstreetmap-carto/blob/master/.travis.yml#L43|применяет]] пользовательские индексы через psql -1Xq -v ON_ERROR_STOP=1 -d gis -f indexes.sql. Обратите внимание, что indexes.sql должен поддерживаться в актуальном состоянии с помощью indexes.py , и это также [[https://github.com/gravitystorm/openstreetmap-carto/blob/master/.travis.yml#L37|проверяется]] .travis.yml)) для обеспечения эффективного улучшения запросов:
 <code> <code>
 cd ~/src cd ~/src
Строка 1902: Строка 1984:
   * sudo apt install update-manager-core — устанавливает основной пакет менеджера обновлений, если он еще не установлен.   * sudo apt install update-manager-core — устанавливает основной пакет менеджера обновлений, если он еще не установлен.
   * sudo do-release-upgrade — запускает процесс обновления выпуска Ubuntu.   * sudo do-release-upgrade — запускает процесс обновления выпуска Ubuntu.
 +=====Дополнения и Файлы=====
 +<html>
 +<iframe width="100%" height=700px  src="./repo/ubuntu_releases/" frameborder="0" allowfullscreen></iframe>
 +</html>
  
  
  
  
software/linux_server/tile_map_server.1722710773.txt.gz · Последнее изменение: vladpolskiy