software:linux_server:tile_map_server_22.04.4
Различия
Показаны различия между двумя версиями страницы.
Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия | ||
software:linux_server:tile_map_server_22.04.4 [2024/08/04 18:49] – [Скомпилируем исходный код mod_tile] vladpolskiy | software:linux_server:tile_map_server_22.04.4 [2024/08/04 23:09] (текущий) – [Ссылки и литература] vladpolskiy | ||
---|---|---|---|
Строка 260: | Строка 260: | ||
</ | </ | ||
{{: | {{: | ||
- | \\ | + | * перейдем в эту папку |
- | и перейдем в эту папку | + | |
< | < | ||
cd ~/src | cd ~/src | ||
</ | </ | ||
- | {{: | + | {{: |
+ | * Обновим установленные пакеты | ||
< | < | ||
- | git clone -b switch2osm https:// | + | sudo apt update && sudo apt --yes upgrade |
</ | </ | ||
- | {{: | + | {{: |
+ | * Установим зависимости сборки (libmemcached-dev и librados-dev не являются обязательными) | ||
< | < | ||
- | cd mod_tile | + | sudo apt --no-install-recommends --yes install \ |
+ | apache2 \ | ||
+ | apache2-dev \ | ||
+ | cmake \ | ||
+ | curl \ | ||
+ | g++ \ | ||
+ | gcc \ | ||
+ | git \ | ||
+ | libcairo2-dev \ | ||
+ | libcurl4-openssl-dev \ | ||
+ | libglib2.0-dev \ | ||
+ | libiniparser-dev \ | ||
+ | libmapnik-dev \ | ||
+ | libmemcached-dev \ | ||
+ | librados-dev | ||
</ | </ | ||
- | перейдя в каталог mod_tile | + | {{: |
- | \\ | + | |
- | {{: | + | |
- | \\ | + | |
- | Запустим скрипт autogen.sh | + | |
< | < | ||
- | ./autogen.sh | + | export CMAKE_BUILD_PARALLEL_LEVEL=$(nproc) |
+ | rm -rf / | ||
+ | mkdir / | ||
+ | cd / | ||
+ | git clone --depth 1 https:// | ||
+ | cd / | ||
+ | cmake -B . -S / | ||
+ | -DCMAKE_BUILD_TYPE: | ||
+ | -DCMAKE_INSTALL_LOCALSTATEDIR: | ||
+ | -DCMAKE_INSTALL_PREFIX: | ||
+ | -DCMAKE_INSTALL_RUNSTATEDIR: | ||
+ | -DCMAKE_INSTALL_SYSCONFDIR: | ||
+ | -DENABLE_TESTS: | ||
+ | cmake --build . | ||
+ | ctest | ||
+ | sudo cmake --install | ||
</ | </ | ||
- | {{: | + | {{: |
- | \\ | + | |
- | (это должно | + | {{: |
- | \\ | + | |
- | {{: | + | |
- | \\ | + | |
- | (в предыдущих установках мне приходилось проделывать это 2 раза | + | |
- | \\ | + | |
- | {{: | + | |
< | < | ||
- | ./configure | + | a2enmod tile |
</ | </ | ||
- | {{: | + | {{: |
- | \\ | + | |
- | (это должно закончится “config.status: | + | |
- | \\ | + | |
- | {{: | + | |
< | < | ||
- | make | + | sudo apache2ctl start |
</ | </ | ||
- | {{: | + | {{: |
- | \\ | + | |
- | Обратите внимание, что здесь некоторые «тревожные» сообщения будут прокручиваться вверх по экрану. Однако это должно заканчиваться на «make[1]: Leaving directory '/ | + | |
- | \\ | + | |
- | {{: | + | |
< | < | ||
- | sudo make install | + | sudo service apache2 reload |
</ | </ | ||
- | {{: | + | {{: |
- | \\ | + | |
- | (это должно закончиться «make[1]: | + | |
- | \\ | + | |
- | {{: | + | |
< | < | ||
- | sudo make install-mod_tile | + | sudo systemctl status apache2 |
</ | </ | ||
- | {{: | + | {{: |
- | \\ | + | |
- | (это должно закончиться «chmod 644 / | + | |
- | \\ | + | |
- | {{: | + | |
- | < | ||
- | sudo ldconfig | ||
- | </ | ||
- | {{: | ||
- | \\ | ||
- | (без ответа) | ||
- | \\ | ||
- | {{: | ||
- | {{: | ||
- | {{: | ||
- | {{: | ||
- | {{: | ||
=====Конфигурация таблицы стилей===== | =====Конфигурация таблицы стилей===== | ||
* Теперь, | * Теперь, | ||
* Здесь мы будем использовать тот же стиль, что и на «стандартной» карте на веб-сайте openstreetmap.org. | * Здесь мы будем использовать тот же стиль, что и на «стандартной» карте на веб-сайте openstreetmap.org. | ||
- | * Переходим в домашний каталог. | + | |
+ | < | ||
+ | mkdir ~/src | ||
+ | </ | ||
+ | {{: | ||
+ | Перейдем в каталог | ||
< | < | ||
cd ~/src | cd ~/src | ||
</ | </ | ||
- | {{: | + | {{: |
+ | \\ | ||
+ | клонируем репозитарий | ||
+ | \\ | ||
< | < | ||
git clone https:// | git clone https:// | ||
</ | </ | ||
- | {{: | + | {{: |
- | \\ | + | |
- | клонируем репозитарий | + | |
- | \\ | + | |
- | {{: | + | |
\\ | \\ | ||
переходим в каталог openstreetmap-carto | переходим в каталог openstreetmap-carto | ||
Строка 363: | Строка 357: | ||
cd openstreetmap-carto | cd openstreetmap-carto | ||
</ | </ | ||
- | {{: | + | {{: |
\\ | \\ | ||
- | установим подходящую версию компилятора «carto». | + | установку подходящей версию компилятора «carto» |
< | < | ||
sudo apt install npm | sudo apt install npm | ||
</ | </ | ||
- | {{: | + | {{: |
- | \\ | + | \\ |
- | подтверждаем установку " | + | размер примерно в 600mb, т.ч. перекур |
- | \\ | + | |
- | {{: | + | |
- | \\ | + | |
- | размер в 600mb, т.ч. перекур | + | |
\\ | \\ | ||
+ | Скомпилируем «carto» | ||
< | < | ||
sudo npm install -g carto | sudo npm install -g carto | ||
</ | </ | ||
- | {{: | + | {{: |
вывод на экран | вывод на экран | ||
- | {{: | + | {{: |
+ | \\ | ||
+ | Тут разработчики просят профинансировать работу с пакетом openstreetmap-carto | ||
< | < | ||
npm fund | npm fund | ||
</ | </ | ||
- | {{: | + | {{: |
+ | Далее применяем заплатку, | ||
< | < | ||
npm audit fix --force | npm audit fix --force | ||
Строка 403: | Строка 397: | ||
</ | </ | ||
{{: | {{: | ||
+ | \\ | ||
+ | Проверим версию пакета " | ||
< | < | ||
carto -v | carto -v | ||
</ | </ | ||
- | {{: | + | {{: |
\\ | \\ | ||
Это должно ответить номером версии, | Это должно ответить номером версии, | ||
\\ | \\ | ||
- | {{: | + | {{: |
\\ | \\ | ||
преобразуем проект carto во что-то, | преобразуем проект carto во что-то, | ||
Строка 416: | Строка 412: | ||
carto project.mml > mapnik.xml | carto project.mml > mapnik.xml | ||
</ | </ | ||
- | {{: | + | {{: |
- | {{: | + | {{: |
\\ | \\ | ||
- | Теперь у вас есть таблица стиля Mapnik XML в / | + | Теперь у вас есть таблица стиля Mapnik XML в / |
+ | **Примечание: | ||
+ | **Warning: style/ | ||
+ | **Warning: style/ | ||
+ | Игнорируем | ||
\\ | \\ | ||
- | {{: | + | {{: |
Строка 431: | Строка 431: | ||
mkdir ~/data | mkdir ~/data | ||
</ | </ | ||
- | {{: | + | {{: |
\\ | \\ | ||
и переходим в эту папку | и переходим в эту папку | ||
Строка 437: | Строка 437: | ||
cd ~/data | cd ~/data | ||
</ | </ | ||
- | {{: | + | {{: |
\\ | \\ | ||
- | на странице загрузки http:// | + | на странице загрузки http:// |
- | < | + | |
- | wget http:// | + | |
- | </ | + | |
- | {{: | + | |
- | \\ | + | |
- | * карта России размером 3,2Gb, процесс не быстрый, | + | |
- | * [[: | + | |
- | \\ | + | |
- | {{: | + | |
\\ | \\ | ||
У кого собачки нет, том может для примера загрузить карту Азербайджана размером 32Mb... | У кого собачки нет, том может для примера загрузить карту Азербайджана размером 32Mb... | ||
Строка 454: | Строка 445: | ||
wget https:// | wget https:// | ||
</ | </ | ||
- | {{: | + | {{: |
Следующая команда вставит загруженные ранее данные OpenStreetMap в базу данных. Этот шаг очень интенсивно использует дисковый ввод-вывод; | Следующая команда вставит загруженные ранее данные OpenStreetMap в базу данных. Этот шаг очень интенсивно использует дисковый ввод-вывод; | ||
< | < | ||
cd ~/data | cd ~/data | ||
- | osm2pgsql -d gis --create --slim | + | osm2pgsql -d gis --create --slim |
</ | </ | ||
- | {{: | + | {{: |
**Обратите внимание на параметр -c (--create) при импорте через osm2pgsql. | **Обратите внимание на параметр -c (--create) при импорте через osm2pgsql. | ||
С этим параметром удалится вся существующая информация с таблиц.** | С этим параметром удалится вся существующая информация с таблиц.** | ||
Строка 491: | Строка 482: | ||
* <color # | * <color # | ||
* Место сохранения и файл данных для загрузки. | * Место сохранения и файл данных для загрузки. | ||
- | Примерный вывод на экран | ||
- | \\ | ||
- | {{: | ||
\\ | \\ | ||
- | * Команда загрузки должна завершится чем-то вроде «Osm2pgsql в целом занял 34583 секунд». | + | Команда загрузки должна завершится чем-то вроде «Osm2pgsql в целом занял 34583 секунд». |
- | {{: | + | {{: |
- | * Пока идет загрузка карты размером 3,2gb (которая по факту заняла 07 часов 23 минуты), | + | |
=====Создание индексов===== | =====Создание индексов===== | ||
* Начиная с версии v5.3.0 некоторые дополнительные индексы теперь необходимо применять вручную . | * Начиная с версии v5.3.0 некоторые дополнительные индексы теперь необходимо применять вручную . | ||
- | * переходим в папку openstreetmap-carto | + | переходим в папку openstreetmap-carto |
< | < | ||
cd ~/ | cd ~/ | ||
</ | </ | ||
- | {{: | + | {{: |
* запускаем команду создание индексов | * запускаем команду создание индексов | ||
< | < | ||
psql -d gis -f indexes.sql | psql -d gis -f indexes.sql | ||
</ | </ | ||
- | {{: | + | {{: |
* (ответ: | * (ответ: | ||
- | {{: | + | {{: |
- | * заняло примерно | + | * заняло примерно несколько минут |
| | ||
Строка 538: | Строка 526: | ||
cd ~/ | cd ~/ | ||
</ | </ | ||
- | {{: | + | {{: |
< | < | ||
scripts/ | scripts/ | ||
</ | </ | ||
- | {{: | + | {{: |
* Этот процесс включает в себя загрузку и требует некоторого времени — во время работы на экране мало что освещает. На самом деле он загружает таблица водных полигонов и прочее и заполняет каталог «data» ниже «openstreetmap-carto». | * Этот процесс включает в себя загрузку и требует некоторого времени — во время работы на экране мало что освещает. На самом деле он загружает таблица водных полигонов и прочее и заполняет каталог «data» ниже «openstreetmap-carto». | ||
- | * это занято примерно 47 минут при прогнозируемой загрузке системы | + | |
- | {{: | + | {{: |
- | {{: | + | |
=====Шрифты===== | =====Шрифты===== | ||
переходим в каталог openstreetmap-carto в папке src | переходим в каталог openstreetmap-carto в папке src | ||
Строка 554: | Строка 541: | ||
cd ~/ | cd ~/ | ||
</ | </ | ||
- | {{: | + | {{: |
\\ | \\ | ||
и собственно загружаем шрифты | и собственно загружаем шрифты | ||
Строка 560: | Строка 547: | ||
scripts/ | scripts/ | ||
</ | </ | ||
- | {{: | + | {{: |
\\ | \\ | ||
процесс занял 6 минут | процесс занял 6 минут | ||
\\ | \\ | ||
- | {{: | + | {{: |
=====Настройка веб-сервера===== | =====Настройка веб-сервера===== | ||
====визуализация==== | ====визуализация==== | ||
- | Отрываем с помощью текстового редактора | + | Отрываем с помощью текстового редактора |
< | < | ||
- | sudo vi /usr/local/ | + | sudo nano / |
</ | </ | ||
- | * нажимаем | + | {{: |
- | * нажимаем последовательно **<color #22b14c>esc</ | + | Добавляем в конец файла нижеприведенные строки |
- | {{: | + | <code> |
- | * нажимаем **<color # | + | [ajt] |
+ | URI=/hot/ | ||
+ | TILEDIR=/ | ||
+ | XML=/home/alisa/ | ||
+ | HOST=localhost | ||
+ | TILESIZE=256 | ||
+ | MAXZOOM=20 | ||
+ | </code> | ||
+ | {{: | ||
+ | * нажимаем последовательно **<color #22b14c>CTRL+0</ | ||
+ | |||
Строка 585: | Строка 583: | ||
sudo mkdir / | sudo mkdir / | ||
</ | </ | ||
- | {{: | + | {{: |
\\ | \\ | ||
Строка 592: | Строка 590: | ||
sudo chown alisa / | sudo chown alisa / | ||
</ | </ | ||
- | {{: | + | {{: |
\\ | \\ | ||
- | создаем папку renderd | + | создаем папку renderd, если не создавали ранее |
< | < | ||
sudo mkdir / | sudo mkdir / | ||
Строка 613: | Строка 611: | ||
sudo nano / | sudo nano / | ||
</ | </ | ||
- | {{: | + | {{: |
\\ | \\ | ||
- | * нажимаем **<color # | + | * вставляем строку **<color # |
- | * нажимаем последовательно **<color #22b14c>esc</ | + | * нажимаем последовательно **<color #22b14c>CTRL+0</ |
- | {{: | + | {{: |
- | * нажимаем **<color # | + | |
- | выполняем команду | + | выполняем команду |
< | < | ||
sudo a2enconf mod_tile | sudo a2enconf mod_tile | ||
</ | </ | ||
- | {{: | + | {{: |
- | * сообщение о необходимости перезапуска Apache «systemctl reload apache2», чтобы активировать новую конфигурацию; | + | * выполняем |
- | {{: | + | < |
+ | sudo systemctl reload apache2 | ||
+ | </ | ||
+ | {{: | ||
* сообщаем Apache о «renderd» | * сообщаем Apache о «renderd» | ||
* открываем в редакторе файл 000-default.conf | * открываем в редакторе файл 000-default.conf | ||
Строка 635: | Строка 634: | ||
sudo nano / | sudo nano / | ||
</ | </ | ||
- | {{: | + | {{: |
- | * вставляем следующие строки между строками <color # | + | * вставляем следующин строки |
< | < | ||
- | LoadTileConfigFile | + | LoadTileConfigFile / |
ModTileRenderdSocketName / | ModTileRenderdSocketName / | ||
# Timeout before giving up for a tile to be rendered | # Timeout before giving up for a tile to be rendered | ||
Строка 646: | Строка 644: | ||
ModTileMissingRequestTimeout 30 | ModTileMissingRequestTimeout 30 | ||
</ | </ | ||
- | + | | |
- | * нажимаем **<color # | + | {{: |
- | | + | \\ |
- | {{: | + | Проверим месторасположение файлов |
- | | + | \\ |
- | * дважды | + | {{: |
+ | \\ | ||
+ | и / | ||
+ | \\ | ||
+ | {{: | ||
+ | * запускаем и перезагрузите apache: | ||
< | < | ||
sudo service apache2 start | sudo service apache2 start | ||
</ | </ | ||
- | {{: | + | {{: |
< | < | ||
sudo service apache2 reload | sudo service apache2 reload | ||
</ | </ | ||
- | {{: | + | {{: |
- | * проверим наш Apache набрав в браузере адрес нашего виртуального сервера (в нашем случае: | + | * проверим наш Apache набрав в браузере адрес нашего виртуального сервера (в нашем случае: |
- | {{: | + | {{: |
+ | \\ | ||
+ | Перечень команд работы с сервисом рендер | ||
+ | * sudo systemctl start renderd | ||
+ | * sudo systemctl restart renderd | ||
+ | * sudo systemctl enable renderd | ||
+ | * sudo systemctl status renderd | ||
+ | * sudo systemctl stop renderd | ||
+ | * sudo systemctl daemon-reload | ||
+ | \\ | ||
+ | Перезапустим и провеим статус сервиса | ||
+ | < | ||
+ | sudo systemctl daemon-reload | ||
+ | sudo systemctl enable renderd | ||
+ | sudo systemctl restart renderd | ||
+ | sudo systemctl status renderd | ||
+ | </ | ||
+ | {{: | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | sudo nano / | ||
+ | sudo -u ' | ||
+ | sudo renderd -f -c / | ||
+ | sudo renderd -f | ||
+ | |||
+ | |||
+ | renderd.service | ||
+ | systemctl start renderd.service | ||
+ | systemctl enable renderd.service | ||
+ | systemctl status renderd.service | ||
+ | systemctl status | ||
+ | |||
+ | sudo systemctl start renderd | ||
+ | sudo systemctl restart renderd | ||
+ | sudo systemctl enable renderd | ||
+ | sudo systemctl status renderd | ||
+ | sudo systemctl stop renderd | ||
+ | sudo systemctl daemon-reload | ||
+ | |||
+ | sudo service renderd start | ||
+ | |||
+ | sudo chown alisa / | ||
+ | sudo chown alisa / | ||
+ | |||
+ | |||
+ | |||
+ | sudo apt install renderd | ||
+ | |||
+ | |||
+ | sudo chown alisa / | ||
+ | sudo chown alisa / | ||
+ | |||
+ | |||
+ | |||
+ | sudo nano / | ||
+ | [ajt] | ||
+ | URI=/hot/ | ||
+ | TILEDIR=/ | ||
+ | XML=/ | ||
+ | HOST=localhost | ||
+ | TILESIZE=256 | ||
+ | MAXZOOM=20 | ||
+ | |||
+ | sudo nano / | ||
+ | LoadModule tile_module / | ||
+ | |||
+ | sudo nano / | ||
+ | LoadTileConfigFile / | ||
+ | ModTileRenderdSocketName / | ||
+ | # Timeout before giving up for a tile to be rendered | ||
+ | ModTileRequestTimeout 0 | ||
+ | # Timeout before giving up for a tile to be rendered that is otherwise missing | ||
+ | ModTileMissingRequestTimeout 30 | ||
+ | |||
+ | sudo nano ~/ | ||
+ | |||
+ | sudo nano / | ||
+ | |||
+ | [Unit] | ||
+ | Description=Renderd | ||
+ | After=network.target auditd.service | ||
+ | |||
+ | [Service] | ||
+ | Type=forking | ||
+ | ExecStart=/ | ||
+ | ExecReload=/ | ||
+ | ExecStop=/ | ||
+ | Environment=G_MESSAGES_DEBUG=all | ||
+ | |||
+ | [Install] | ||
+ | WantedBy=multi-user.target | ||
+ | |||
+ | |||
+ | |||
+ | [Unit] | ||
+ | Description=Daemon that renders map tiles using mapnik | ||
+ | Documentation=man: | ||
+ | After=network.target auditd.service | ||
+ | |||
+ | [Service] | ||
+ | ExecStart=/ | ||
+ | User=alisa | ||
+ | |||
+ | [Install] | ||
+ | WantedBy=multi-user.target | ||
+ | </ | ||
+ | </ | ||
* <color # | * <color # | ||
+ | |||
=====Запуск рендера в первый раз===== | =====Запуск рендера в первый раз===== | ||
запустим renderd, чтобы попытаться отрендерить некоторые плитки. Сначала мы запустим его на переднем плане, чтобы видеть любые ошибки по мере их возникновения: | запустим renderd, чтобы попытаться отрендерить некоторые плитки. Сначала мы запустим его на переднем плане, чтобы видеть любые ошибки по мере их возникновения: | ||
Строка 815: | Строка 926: | ||
\\ | \\ | ||
[[https:// | [[https:// | ||
+ | \\ | ||
+ | https:// | ||
+ | \\ | ||
+ | https:// | ||
+ | \\ | ||
+ | https:// | ||
+ | \\ | ||
+ | https:// | ||
+ | \\ | ||
+ | https:// | ||
+ | \\ | ||
+ | https:// | ||
+ | \\ | ||
software/linux_server/tile_map_server_22.04.4.1722786564.txt.gz · Последнее изменение: 2024/08/04 18:49 — vladpolskiy