| |
software:linux_server:tile_map_server_worl_20.04.4 [2024/08/19 08:46] – [OSM The Eurasia Ubuntu 20.04] vladpolskiy | software:linux_server:tile_map_server_worl_20.04.4 [2025/02/01 09:47] (текущий) – внешнее изменение 127.0.0.1 |
---|
* **RAM > 12Gb** | * **RAM > 12Gb** |
* **HDD > 1Tb** | * **HDD > 1Tb** |
<color #7092be>**Все ниже написанное относиться к Ubuntu Server 20.04 (Focal Fossa) и протестировано в августе 2024 года.**</color> | <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** |
* **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>\\ |
\\ | \\ |
<color #22b14c>**:&2: Общая последовательнось действий:**</color> | <fc #22b14c>**:&2: Общая последовательнось действий:**</fc> |
* **Устанавливаем и обновляем Ubuntu Server** | * **Устанавливаем и обновляем Ubuntu Server** |
* **Устанавливаем основное и дополнительное ПО** | * **Устанавливаем основное и дополнительное ПО** |
* **Загружаем 6 файлов карт** | * **Загружаем 6 файлов карт** |
* **Объеденяе 3 файла** | * **Объеденяем 3 файла и загружаем в базу** |
* **Настраиваем веб-сервер** | * **Настраиваем веб-сервер** |
* **Производим первый рендер** | * **Производим первый рендер** |
* **Догружаем в базу 4 файл** | * **Догружаем в базу дополнительный файл карты** |
* **Проверяем работоспособность сервера** | * **Проверяем работоспособность сервера** |
* **Удаляем все лишнее и загружаем файл Евразии** | * **Удаляем все лишнее, объединяем и загружаем в базу данных файл Евразии** |
| |
=====Обновление программного обеспечения===== | =====Обновление программного обеспечения===== |
| |
=====Установка 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 |
</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; |
\\ | \\ |
\\ | \\ |
<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 |
</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===== |
* Клонируем репозиторий **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 |
</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**) |
</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> |
</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> |
</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> |
</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> |
* клонируем репозитарий | * клонируем репозитарий |
| |
<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 |
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: |
{{: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?|}} |
| |
{{: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 |
{{: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 |
| |
====Догрузка карт в базу данных==== | ====Догрузка карт в базу данных==== |
<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> |
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> |
* Место сохранения и файл данных для загрузки. | * Место сохранения и файл данных для загрузки. |
| |
</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 |
</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> |
* проверим наш 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>** |
| |
=====Запуск рендера в первый раз===== | =====Запуск рендера в первый раз===== |
{{: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 |
* В окне веб-браузера найдем наше новое государство. Т.к. оно очень маленькое, то искать его будем в строке браузера по координатам плиток "#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 |
* Загрузим максимольно приближенный масштаб карты. Если у вам это получилось, значит сервер настроен правильно. | * Загрузим максимольно приближенный масштаб карты. Если у вам это получилось, значит сервер настроен правильно. |
{{: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 после слияния |
</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 |
{{: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}} |
| |