GNU/Linux >> Znalost Linux >  >> Debian

Nastavte dlaždicový server OpenStreetMap (OSM) na Debian 10 Buster

OpenStreetMap (OSM) je uživatelsky přidaná, volně upravitelná mapa světa. Můžete si to představit jako open-source a samostatně hostovanou alternativu k Mapám Google. Tento tutoriál vám ukáže, jak vytvořit svůj vlastní dlaždicový server OpenStreetMap na Debianu 10, abyste nemuseli používat vlastní mapovou službu.

Funkce OpenStreetMap

  • Data OpenStreetMap pokrývají celý svět, takže je snadné podporovat uživatele v jakékoli zemi nebo v každé zemi.
  • OpenStreetMap se aktualizuje každou minutu každou hodinu každého dne a tyto aktualizace máte k dispozici v reálném čase.
  • Data OpenStreetMap jsou zdarma a otevřená – neplatí se žádné předplatné ani poplatek za zobrazení stránky.
  • Data OpenStreetMap jsou bohatá a podrobná a obsahují obrovské množství dat, která jsou relevantní pro lidi v terénu – pro lidi, kteří je shromáždili.

Předpoklady/hardwarové požadavky

Požadovaná paměť RAM a místo na disku závisí na mapě země, kterou budete používat. Například,

  • Mapa Spojeného království vyžaduje alespoň 12 G RAM a 100 GB místa na disku.
  • Mapa celé planety vyžaduje alespoň 32 G RAM a 1 TB SSD (Solid State Drive). Není životaschopné používat rotující pevný disk pro mapu celé planety.

Budete potřebovat více místa na disku, pokud se chystáte předběžně vykreslovat dlaždice, abyste urychlili načítání mapy ve webovém prohlížeči, což se velmi doporučuje. Na této stránce využití disku dlaždice zjistíte, kolik místa na disku je potřeba pro předběžné vykreslení dlaždic. Pokud se například chystáte předběžně vykreslit dlaždice od úrovně přiblížení 0 do úrovně přiblížení 15 pro mapu planety, je vyžadováno dalších 460 GB místa na disku.

Další věc, kterou je třeba poznamenat, je, že import velkých mapových dat, jako je celá planeta, do databáze PostgreSQL trvá dlouho. Zvažte přidání další paměti RAM a zejména použití SSD místo otáčení pevného disku pro urychlení procesu importu.

Pokud se chystáte hostit celou mapu světa, doporučuji vám zakoupit extra velké VPS od Contabo, které se pyšní

  • 10jádrový CPU
  • 60 GB RAM
  • 1,6 TB Intel Optane SSD

Stojí pouhých 26,99 €/měsíc.

Krok 1:Upgradujte software

Vždy je dobrým zvykem aktualizovat serverový software před provedením jakékoli větší práce na vašem serveru. Přihlaste se na svůj server přes SSH a spusťte následující příkaz.

aktualizace sudo apt; upgrade sudo apt

Pokud narazíte na následující chyby,

perl:warning:Návrat k záložnímu národnímu prostředí ("en_US.UTF-8").perl:warning:Nastavení národního prostředí se nezdařilo.perl:varování:Zkontrolujte prosím, zda vaše nastavení národního prostředí:LANGUAGE =(nenastaveno), LC_ALL =(nenastaveno), LC_MONETARY ="zh_CN.UTF-8", LC_ADDRESS ="zh_CN.UTF-8", LC_TELEPHONE ="zh_CN.UTF-8", LC_NAME ="zh_CN.UTF-8", LC_MEASUREMENT ="zh_CN.UTF -8", LC_IDENTIFICATION ="zh_CN.UTF-8", LC_NUMERIC ="zh_CN.UTF-8", LC_PAPER ="zh_CN.UTF-8", LANG ="en_US.UTF-8" jsou podporovány a nainstalovány ve vašem systému .perl:warning:Návrat k záložnímu národnímu nastavení ("en_US.UTF-8").

To znamená, že se váš místní počítač pokouší odeslat proměnnou prostředí locale do debian VPS, ale Debian nemá nainstalované locale. Chcete-li to opravit, upravte konfigurační soubor démona SSH.

sudo nano /etc/ssh/sshd_config

Přejděte dolů na konec, najdete následující řádek, který říká démonu SSH, aby přijal proměnné prostředí od klienta SSH.

AcceptEnv LANG LC_*

Změňte jej na následující, takže démon SSH nebude přijímat proměnné prostředí.

AcceptEnv no

Uložte a zavřete soubor. Poté restartujte démona SSH.

sudo systemctl restart ssh

Odhlaste se a znovu se přihlaste. Chyba národního prostředí se již nezobrazí.

Krok 2:Nainstalujte databázový server PostgreSQL a rozšíření PostGIS

Pro ukládání mapových dat použijeme PostgreSQL. PostGIS je geoprostorové rozšíření PostgreSQL. Spusťte následující příkazy a nainstalujte je.

sudo apt install postgresql postgresql-contrib postgis postgresql-11-postgis-2.5

Databázový server PostgreSQL se automaticky spustí a naslouchá na 127.0.0.1:5432 . postgres uživatel bude vytvořen v OS během procesu instalace. Je to super uživatel pro databázový server PostgreSQL. Ve výchozím nastavení tento uživatel nemá žádné heslo a není třeba jej nastavovat, protože můžete použít sudo pro přepnutí do postgres a přihlaste se k serveru PostgreSQL.

sudo -u postgres -i

Nyní můžete vytvořit uživatele PostgreSQL databáze osm .

createuser osm

Poté vytvořte databázi s názvem gis a zároveň vytvořit osm jako vlastník databáze. -E UTF8 udává, že schéma kódování znaků, které se má v databázi použít, je UTF8.

vytvořenob -E UTF8 -O osm gis

Dále vytvořte postgis a hstore rozšíření pro gis databáze.

psql -c "CREATE EXTENSION postgis;" -d gispsql -c "VYTVOŘIT ROZŠÍŘENÍ hstore;" -d gis

Nastavte osm jako vlastník tabulky.

psql -c "ALTER TABLE space_ref_sys OWNER TO osm;" -d gis

Ukončete postgres uživatel.

exit

Vytvořte osm uživatel ve vašem operačním systému, takže dlaždicový server může běžet jako osm uživatel. Následující příkaz vytvoří systémového uživatele bez hesla.

sudo adduser --system osm

Krok 3:Stáhněte si šablonu stylů mapy a data map

Přejděte do domovského adresáře osm.

cd /home/osm/

Stáhněte si nejnovější šablony mapových stylů CartoCSS do osm domovský adresář uživatele pomocí git.

sudo apt install git klon https://github.com/gravitystorm/openstreetmap-carto.git

Pokud se při spouštění výše uvedeného příkazu zobrazí chyba „oprávnění odepřeno“, můžete udělit oprávnění pomocí následujícího příkazu. Nahraďte username s vaším skutečným uživatelským jménem.

sudo apt install aclsudo setfacl -R -m u:username:rwx /home/osm/

Dále spusťte následující příkaz ke stažení mapových dat celé planety (50G) ve formátu PBF (ProtoBufBinary).

wget -c http://planet.openstreetmap.org/pbf/planet-latest.osm.pbf

Upozorňujeme, že rychlost stahování pro openstreetmap.org je aktuálně omezena na 2048 kB/s. Mapu závodu si můžete stáhnout z jiného zrcadla, jako

wget -c https://download.bbbike.org/osm/planet/planet-latest.osm.pbf

Pokud chcete mapu jednotlivých zemí/států/provincií/měst, přejděte na http://download.geofabrik.de. BBBike.org také poskytuje výňatky z více než 200 měst a regionů po celém světě v různých formátech. Například stáhněte mapová data Velké Británie (1.1G) pomocí následujícího příkazu.

wget -c http://download.geofabrik.de/europe/great-britain-latest.osm.pbf

Krok 4:Optimalizace výkonu serveru PostgreSQL

Proces importu může nějakou dobu trvat. Pro urychlení tohoto procesu můžeme vyladit některá nastavení serveru PostgreSQL, abychom zlepšili výkon. Upravte hlavní konfigurační soubor PostgreSQL.

sudo nano /etc/postgresql/11/main/postgresql.conf

Nejprve bychom měli změnit hodnotu shared_buffer . Výchozí nastavení je:

shared_buffers =128 MB

Toto je příliš malé. Základním pravidlem je nastavit to na 25 % celkové paměti RAM (bez odkládacího prostoru). Moje VPS má například 60G RAM, takže jsem to nastavil na:

shared_buffers =15 GB

Najděte následující řádek.

#work_mem =4 MB#maintenance_work_mem =64 MB

Opět platí, že hodnota je příliš malá. Používám následující nastavení.

work_mem =1 GBmaintenance_work_mem =8 GB

Pak najděte následující řádek.

#effective_cache_size =4 GB

Pokud máte hodně paměti RAM jako já, můžete nastavit vyšší hodnotu pro efektivní_mezipaměť, například 20G.

effective_cache_size =20 GB

Uložte a zavřete soubor. Restartujte PostgreSQL, aby se změny projevily.

sudo systemctl restart postgresql

Ve výchozím nastavení by se PostgreSQL snažil používat velké stránky v RAM. Linux však ve výchozím nastavení nepřiděluje velké stránky. Zkontrolujte ID procesu PostgreSQL.

sudo head -1 /var/lib/postgresql/11/main/postmaster.pid

Ukázkový výstup:

7031

Poté zkontrolujte hodnotu VmPeak tohoto ID procesu.

grep ^VmPeak /proc/7031/status

Ukázkový výstup:

VmPeak:16282784 kB

Toto je maximální velikost paměti, kterou bude PostgreSQL používat. Nyní zkontrolujte velikost velké stránky v Linuxu.

cat /proc/meminfo | grep -i obrovský

Ukázkový výstup:

AnonHugePages:0 kBShmemHugePages:0 kBHugePages_Total:0HugePages_Free:0HugePages_Rsvd:0HugePages_Surp:0Obrovská velikost stránky:2048 kB Hugetlb:0 kB

Můžeme si spočítat, kolik velkých stránek potřebujeme. Vydělte hodnotu VmPeak velikostí velké stránky:16282784 kB / 2048 kB =7950. Upravit /etc/sysctl.conf soubor.

sudo nano /etc/sysctl.conf

Přidejte následující řádek a přidělte 7950 velkých stránek.

vm.nr_hugepages =7950

Uložte a zavřete soubor. Poté použijte změny.

sudo sysctl -p

Pokud znovu zkontrolujete informace o paměti,

cat /proc/meminfo | grep -i obrovský

Vidíme, že je k dispozici 7950 obrovských stránek.

AnonHugePages:0 kBShmemHugePages:0 kBHugePages_Total:7950HugePages_Free:7950HugePages_Rsvd:0HugePages_Surp:0Obrovská velikost:2048 kB:16268 kB>160l 

Chcete-li používat velké stránky, restartujte PostgreSQL.

sudo systemctl restart postgresql

Použít obrazovku na vzdálených serverech

Vzhledem k tomu, že proces importu může trvat dlouho a váš počítač může být odpojen od internetu, doporučuje se použít obslužný program obrazovky k udržení vaší relace. Instalační obrazovka na serveru Debian 10:

instalační obrazovka sudo apt

Poté úvodní obrazovka:

obrazovka

Při prvním spuštění se zobrazí úvodní text, stačí stisknout Enter do konce. Poté budete moci spouštět příkazy jako obvykle.

Krok 5:Importujte data mapy do PostgreSQL

K importu mapových dat potřebujeme nainstalovat osm2pgsql který převádí data OpenStreetMap na databáze PostgreSQL s podporou postGIS.

sudo apt install osm2pgsql

Udělte oprávnění uživateli postgres.

sudo setfacl -R -m u:postgres:rwx /home/osm/

Přepněte na postgres uživatel.

sudo -u postgres -i

Spusťte následující příkaz k načtení šablony stylů mapy a mapových dat do gis databáze. Nahraďte great-britain-latest.osm.pbf s vaším vlastním souborem mapových dat.

osm2pgsql --slim -d gis --hstore --multi-geometry --number-processes 10 --tag-transform-script /home/osm/openstreetmap-carto/openstreetmap-carto.lua --style /home /osm/openstreetmap-carto/openstreetmap-carto.style -C 32000 /home/osm/great-britain-latest.osm.pbf

kde

  • --slim :běžet v tenkém režimu spíše než v normálním režimu. Tato možnost je nutná, pokud chcete v budoucnu aktualizovat mapová data pomocí souborů změn OSM (OSC).
  • -d gis :vyberte databázi.
  • --hstore :přidat značky bez sloupce do dalšího sloupce hstore (klíč/hodnota) do tabulek PostgreSQL
  • --multi-geometry :generování multigeometrických prvků v tabulkách postgresql.
  • --style :zadejte umístění souboru stylu
  • --number-processes :počet jader CPU na vašem serveru. Mám 10.
  • -C příznak určuje velikost mezipaměti v megabajtech. Mělo by to být přibližně 70 % volné paměti RAM ve vašem počítači. Větší velikost mezipaměti má za následek vyšší rychlost importu. Můj server má například 60 GB volné paměti RAM, takže mohu zadat -C 32000 . Uvědomte si, že PostgreSQL bude potřebovat RAM pro sdílené_buffery. K výpočtu, jak velká by měla být velikost mezipaměti, použijte tento vzorec:(Total RAM - PostgreSQL shared_buffers) * 70%
  • Nakonec musíte určit umístění souboru mapových dat.

Výstup příkazu:

Pokud se chystáte importovat úplná data mapy planet, použijte --drop možnost a --flat-nodes možnost zvýšit rychlost importu. Všimněte si, že --flat-nodes tato možnost není vhodná pro malé mapy.

osm2pgsql --slim -d gis --drop --flat-nodes /home/osm/nodes.cache --hstore --multi-geometry --number-processes 10 --tag-transform-script /home/ osm/openstreetmap-carto/openstreetmap-carto.lua --style /home/osm/openstreetmap-carto/openstreetmap-carto.style -C 32000 /home/osm/planet-latest.osm.pbf

Využití paměti RAM se bude během procesu importu postupně zvyšovat.

Nyní pravděpodobně nemusíte na svém serveru dělat další věci. Protože používáte obrazovku, můžete stisknout Ctrl+A , uvolněte tyto klávesy a poté stiskněte D tlačítko pro odpojení od aktuální relace obrazovky. Zobrazí se zpráva jako níže.

[odděleno od 32113.pts-1.buster]

To mi říká, že předchozí ID relace obrazovky je 32113. Můžete se odhlásit z relace SSH a dokonce vypnout počítač. Nebojte se, proces importu OSM stále běží. Když se potřebujete vrátit a zkontrolovat průběh importu, SSH na váš server a spuštěním následujícího příkazu získejte předchozí Screen Session ID.

screen -ls

Ukázkový výstup:

Obrazovka je na:32113 .pts-1.buster (05/19/2020 15:45:29 PM) (Detached)1 Socket v /run/screen/S-linuxbabe.

Poté se můžete znovu připojit k předchozí relaci obrazovky.

screen -r 32113

A budete moci pokračovat ve své práci. Po dokončení importu udělte všechna oprávnění gis databáze do osm uživatel.

psql -c "UDĚLEJTE VŠECHNA PRIVILEGIA VE VŠECH TABULKÁCH VE SCHÉMATU public TO osm;" -d gis

Ukončete postgres uživatel.

exit

Poznámka :Pokud import osm2pgsql ještě není dokončen, nepokračujte prosím krokem 6.

Krok 6:Nainstalujte mod_tile a Renderd

mod_tile je modul Apache, který je nutný pro zobrazování dlaždic a renderd je vykreslovací démon pro vykreslování dlaždic OpenStreetMap. Výchozí úložiště Debian Buster neobsahuje mod_tile a renderd , takže musíme zkompilovat zdrojový kód.

Nejprve nainstalujte závislost sestavení.

sudo apt install git autoconf libtool libmapnik-dev apache2-dev

Poté naklonujte úložiště z Github.

klon git https://github.com/openstreetmap/mod_tile.gitcd mod_tile/

Upravte soubor.

nano debian/compat

Ve výchozím nastavení je úroveň kompatibility nastavena na 7. Měli byste však použít úroveň kompatibility 9, takže změňte číslo 7 na 9. Uložte a zavřete soubor.

Potom upravte další soubor.

nano debian/changelog

Najděte první řádek.

libapache2-mod-tile (0,4-12~precise2) přesné; naléhavost=nízká

Změňte jej na následující. 0.4-12 by měl být změněn na 0.4.12 a precise2 by měl být změněn na buster .

libapache2-mod-tile (0.4.12~buster) přesné; naléhavost=nízká

Uložte a zavřete soubor. Poté zkompilujte zdrojový balíček.

./autogen.shsudo dpkg-buildpackage -uc -us

Nyní budou dva .deb balíčky v horním adresáři. Nainstalujte je pomocí apt .

cd .. sudo apt install ./libapache2-mod-tile_0.4.12~buster_amd64.deb ./renderd_0.4.12~buster_amd64.deb

Během instalace nainstaluje webový server Apache a zeptá se, zda chcete povolit mod_tile v konfiguraci Apache. Vyberte Ano a stiskněte Enter. Tím se vytvoří konfigurační soubor Apache pro mod_tile (/etc/apache2/sites-available/tileserver_site.conf ).

Vykreslovací démon se automaticky spustí, jak je vidět na:

vykreslen stav systemctl

Krok 7:Vygenerujte šablonu stylů Mapnik

Nainstalujte požadované balíčky.

sudo apt install curl rozbalit gdal-bin mapnik-utils libmapnik-dev python3-pip python3-psycopg2

Potřebujeme také nainstalovat nodejs a npm z upstream úložiště pomocí následujících příkazů.

curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -sudo apt-get install -y nodejs

Poté nainstalujte balíček carto pomocí npm.

instalace sudo npm -g carto

Nainstalujte yaml Modul Python.

instalace sudo -H pip3 pyyaml

Přepněte na postgres uživatel.

sudo -u postgres -i

Cd do adresáře stylu carto.

cd /home/osm/openstreetmap-carto/

Získejte shapefiles.

scripts/get-external-data.py

Pokud při spuštění výše uvedeného příkazu narazíte na následující chybovou zprávu, máte problémy s DNS. Jednoduše počkejte několik minut a spusťte skript Python znovu.

Nepodařilo se navázat nové připojení:[Errno -3] Dočasné selhání při překladu názvů

Nyní vytvořte šablonu stylů XML Mapnik pomocí carto kompilátor šablony stylů mapy.

carto project.mml> style.xml

Udělte všechna oprávnění gis databáze do osm uživatel.

psql -c "UDĚLEJTE VŠECHNA PRIVILEGIA VE VŠECH TABULKÁCH VE SCHÉMATU public TO osm;" -d gis

Ukončete postgres uživatel.

exit

Krok 8:Instalace písem

Musíte nainstalovat ttf-dejavu balíček.

sudo apt install ttf-dejavu

Chcete-li zobrazit jiné než latinské znaky, nainstalujte následující balíčky.

sudo apt install fonts-noto-cjk fonts-noto-cjk-extra fonts-noto-hinted fonts-noto-unhinted ttf-unifont

Krok 9:Konfigurace vykreslení

Upravte vykreslený konfigurační soubor.

sudo nano /etc/renderd.conf

V [renderd] změňte počet vláken podle počtu jader CPU na vašem serveru.

num_threads=10

V [default] části, změňte hodnotu XML a HOST na následující. Všimněte si, že řádky začínající středníkem (;) jsou komentáře.

XML=/home/osm/openstreetmap-carto/style.xmlHOST=tile.vase-domena.com

V [mapnik] sekce, změňte hodnotu plugins_dir na následující.

plugins_dir=/usr/lib/mapnik/3.0/input/

Výchozí vstupní adresář zásuvných modulů můžete vytisknout pomocí následujícího příkazu.

mapnik-config --input-plugins

Pokud chcete zobrazit jiné než latinské znaky, je lepší změnit nastavení písma na následující.

font_dir=/usr/share/fonts/truetypefont_dir_recurse=true

Uložte a zavřete soubor. Poté upravte soubor init skriptu

sudo nano /etc/init.d/renderd

Najděte následující řádek.

RUNASUSER=www-data

Změňte uživatele na osm . To je potřeba k načtení mapových dat z databáze PostgreSQL.

RUNASUSER=osm

Nastavte také cestu k vykreslenému konfiguračnímu souboru.

DAEMON_ARGS="-c etc/renderd.conf"

Uložte a zavřete soubor. Nastavte osm jako vlastník /var/lib/mod_tile/ adresář, který bude obsahovat vykreslené soubory dlaždic.

sudo chown osm /var/lib/mod_tile/ -R

Poté restartujte poskytovanou službu.

sudo systemctl daemon-reloadsudo systemctl restart vykreslen

Musíte zkontrolovat protokol vykreslení.

vykreslení sudo journalctl -eu

Ujistěte se, že vykreslení po restartu nevyvolá žádnou chybu v protokolu, jinak se mapa nezobrazí.

Krok 10:Konfigurace Apache

Upravte soubor virtuálního hostitele OSM.

sudo nano /etc/apache2/sites-available/tileserver_site.conf

Změňte název serveru na svůj vlastní název domény, například tile.your-domain.com . Pro tuto subdoménu musíte také vytvořit záznam DNS A.

Dlaždice název_serveru.vaše-doména.com

Uložte a zavřete soubor. Restartujte Apache.

sudo systemctl restart apache2

Poté do adresního řádku webového prohlížeče zadejte

tile.your-domain.com/osm/0/0/0.png

Měli byste vidět dlaždici mapy světa. Gratuluji! Právě jste úspěšně vybudovali svůj vlastní dlaždicový server OSM.

Pokud jste povolili bránu firewall UFW, nezapomeňte otevřít port 80 a 443 následujícím příkazem.

sudo ufw povolit 80 443/tcp

Pokud vidíte 404 nenalezeno Chyba, jednoduše počkejte několik minut, obnovte stránku v prohlížeči a měla by být schopna načíst dlaždici mapy světa. Pokud se stále nenačte, restartujte vykreslenou službu (sudo systemctl restart renderd ).

Krok 11:Zobrazte svou dlaždicovou webovou mapu

Dlaždicová webová mapa je také známá jako kluzká mapa v terminologii OpenStreetMap. Pro svůj dlaždicový server můžete použít dvě bezplatné a otevřené JavaScriptové mapové knihovny:OpenLayer a Leták . Výhodou Leaflet je, že se snadno používá a vaše mapa bude vhodná pro mobily.

OpenLayer

Chcete-li svou kluzkou mapu zobrazit pomocí OpenLayer, stáhněte si JavaScript a CSS z openlayer.org a extrahujte je do složky webroot.

cd /var/www/sudo wget https://github.com/openlayers/openlayers/releases/download/v5.3.0/v5.3.0.zipsudo unzip v5.3.0.zip

Dále vytvořte index.html soubor.

sudo nano /var/www/index.html

Do souboru vložte následující kód HTML. Nahraďte červeně zbarvený text a upravte zeměpisnou délku, šířku a úroveň přiblížení podle svých potřeb.

Dostupná mapa 
 

Uložte a zavřete soubor. Nyní si můžete svou kluzkou mapu zobrazit zadáním své subdomény do adresního řádku prohlížeče.

tile.vase-domena.com

nebo

tile.vase-domena.com/index.html

Leták

Chcete-li svou kluzkou mapu zobrazit pomocí Leftlet, stáhněte si JavaScript a CSS z leftletjs.com a extrahujte je do složky webroot.

cd /var/www/sudo wget http://cdn.leafletjs.com/leaflet/v1.7.1/leaflet.zipsudo rozbalit leták.zip

Dále vytvořte index.html soubor.

sudo nano /var/www/index.html

Do souboru vložte následující kód HTML. Nahraďte červeně zbarvený text a upravte zeměpisnou délku, šířku a úroveň přiblížení podle svých potřeb.

Můj první osm 

Uložte a zavřete soubor. Nyní si můžete zobrazit svou kluzkou mapu zadáním IP adresy vašeho serveru do prohlížeče.

tile.vase-domena.com

nebo

tile.vase-domena.com/index.html

Krok 12:Předběžné vykreslení dlaždic

Vykreslování dlaždic za běhu prodlouží dobu načítání mapy ve webovém prohlížeči. Chcete-li dlaždice předem vykreslit namísto vykreslování za běhu, použijte následující render_list příkaz. Použijte -z a -Z příznak určete úroveň přiblížení a nahraďte počet vláken podle počtu jader CPU na vašem serveru. Render_list vykreslí seznam dlaždic mapy odesláním požadavků vykreslovacímu démonovi. Předem vykreslené dlaždice budou uloženy do mezipaměti ve /var/lib/mod_tile adresář.

render_list -m default -a -z 0 -Z 19 --num-threads=10

Pokud později aktualizujete data mapy, můžete všechny dlaždice znovu předem vykreslit pomocí --force možnost.

render_list -m default -a -z 0 -Z 19 --num-threads=10 --force

Chcete-li vykreslit dlaždice mapy na pozadí, přidejte & symbol na konci.

render_list -m default -a -z 0 -Z 19 --num-threads=10 &

Nyní můžete zavřít okno terminálu. Chcete-li zkontrolovat průběh vykreslování, otevřete další relaci SSH a spusťte následující příkaz.

vykreslení sudo journalctl -eu

Výše uvedený příkaz zobrazí nejnovější protokol renderd servis. Následující řádky ukazují, že můj OSM server nyní vykresluje dlaždice mapy na úrovni přiblížení 12.

 Renderd [20838]:Debug:Start Tile Default 12 1008-1015 4056-4063, nový metatilní renderd [20838]:Promítané souřadnice 12 1008 4056-> -10175297.205328 | -19724422,2749444422,2749444422,2749444422,2749444422,274944. Vykresleno 8 dlaždic[20838]:DEBUG:DONE TILE výchozí 12 1008-1015 3984-3991 za 0,799 sekund vykresleno[20838]:DEBUG:Odesílání render cmd (3 výchozí 12/1008/3984) s protokolem fd 18 vykresleno verze 12 20838]:DEBUG:Mám příchozí požadavek s vykresleným protokolem verze 2[20838]:DEBUG:Mám příkaz RenderBulk fd(18) xml(výchozí), z(12), x(1008), y(4064), mime(obrázek/ PNG), Možnosti () Renderd [20838]:Debug:Start Tile Default 12 1008-1015 4064-4071, nový Metatile Renderd [20838]:Plánované souřadnice 12 1008 4064-> -10175297.2053642. --1908 -100970199084269701990834222019908 -164220269908426979084226979908422222204908422222. dlaždice 8 x 8

Krok 13:Povolte HTTPS

Pro šifrování HTTP provozu můžeme získat a nainstalovat bezplatný TLS certifikát od Let’s Encrypt. Nejprve nainstalujte klienta Let’s Encrypt (certbot) na Debian 10.

sudo apt install certbot

Protože používáme webový server Apache, musíme také nainstalovat plugin Apache.

sudo apt install python3-certbot-apache

Poté spusťte následující příkaz pro získání a instalaci certifikátu TLS.

sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --must-staple --email [e-mail chráněný] -d dlaždice.vaše-doména.com

Jakmile je certifikát nainstalován, obnovte webovou stránku a v adresním řádku se zobrazí zámek.

Pokud v adresním řádku Firefoxu vidíte žlutý trojúhelník, znamená to, že adresy URL dlaždic stále používají HTTP. Musíte upravit soubor index.html a nahradit všechny protokoly HTTP protokolem HTTPS následujícím příkazem.

sudo sed -i 's/http/https/g' /var/www/index.html

Krok 14:Povolte HTTP2

Chcete-li dále zlepšit výkon načítání mapy, můžete povolit protokol HTTP2. Nejprve musíte povolit modul HTTP2.

sudo a2enmod http2

Poté otevřete soubor virtuálního hostitele SSL.

sudo nano /etc/apache2/sites-enabled/tileserver_site-le-ssl.conf

Vložte následující direktivu za úvodní <VirtualHost *:443> tag.

Protokoly h2 http/1.1

Uložte a zavřete soubor. Poté restartujte Apache, aby se změny projevily.

sudo systemctl restart apache2

Omezit přístup k vašemu dlaždicovému serveru OSM pomocí záhlaví HTTP Referrer

Ve výchozím nastavení může kdokoli použít OpenLayer nebo Leaflet k vytvoření kluzké mapy s adresou URL vašeho dlaždicového serveru. Chcete-li omezit přístup k vašemu dlaždicovému serveru, upravte soubor virtuálního hostitele Apache.

sudo nano /etc/apache2/sites-enabled/tileserver_site-le-ssl.conf

Přidejte následující řádky do <VirtualHost> značky.

  SetEnvIf Referer example\.com trusted_referer Objednávka odepřít, povolit Odepřít všem Povolit z env=trusted_referer 

Výše uvedený kód zkontroluje, zda hlavička odkazu HTTP obsahuje vaši vlastní doménu. Pokud ne, přejděte do /osm adresář bude odepřen. Zpětné lomítko se používá k ukončení znaku tečka. Chcete-li přidat více názvů hostitelů jako důvěryhodné referrery, použijte následující syntaxi.

SetEnvIf Referer (example\.com|www\.example\.com|map\.example\.com) trusted_referer

Uložte a zavřete soubor. Poté otestujte syntaxi.

sudo apache2ctl -t

Pokud je syntaxe v pořádku, znovu načtěte Apache, aby se změny projevily.

sudo systemctl reload apache2

Automaticky obnovit certifikát TLS

Chcete-li automaticky obnovit certifikát TLS, můžete vytvořit úlohu Cron. Jednoduše otevřete soubor crontab uživatele root.

sudo crontab -e

Přidejte následující řádek na konec souboru.

@daily certbot renew --quiet &&systemctl reload apache2

Databáze PostgreSQL a webový server na různých hostitelích

Pokud váš webový server PostgreSQL a Apache sídlí na různých hostitelích, musíte upravit project.mml soubor na hostiteli Apache.

nano /home/osm/openstreetmap-carto-4.20.0/project.mml

Najděte následující řádky:

osm2pgsql:&osm2pgsql typ:"postgis" dbname:"gis" key_field:"" geometry_field:"way" rozsah:"-20037508,-20037508,20037508,20037508"

Zadejte IP adresu databázového serveru PostgreSQL.

osm2pgsql:&osm2pgsql typ:"postgis" hostitel:"10.0.0.2" dbname:"gis" klíčové_pole:"" geometry_field:"way" rozsah:"-20037508,-20037508,20037508,2008"pre
 

Uložte a zavřete soubor. Poté vytvořte šablonu stylů XML Mapnik pomocí carto kompilátor šablony stylů mapy.

carto project.mml> style.xml

Na databázovém serveru PostgreSQL upravte hlavní konfigurační soubor.

sudo nano /etc/postgresql/11/main/postgresql.conf

Přidáním následujícího řádku nastavíte PostgreSQL tak, aby naslouchal na všech rozhraních.

listen_addresses ='*'

Uložte a zavřete soubor. Poté upravte konfigurační soubor ověřování klienta PostgreSQL.

sudo nano /etc/postgresql/11/main/pg_hba.conf

Přidejte následující řádek na konec souboru, abyste povolili osm uživatele k přihlášení z hostitele Apache. Nahraďte 10.0.0.1 IP adresou hostitele Apache.

hostitel gis osm 10.0.0.1/32 trust

Uložte a zavřete soubor. Poté restartujte PostgreSQL.

sudo systemctl restart postgresql

Restartujte démona vykreslování na hostiteli Apache.

vykreslení restartu sudo systemctl

Musíte zkontrolovat protokol vykreslení. Ujistěte se, že vykreslení nezpůsobí žádnou chybu v protokolu, jinak se mapa nezobrazí.

vykreslení sudo journalctl -eu

Měli byste také omezit přístup k portu 5432 databázového serveru PostgreSQL. Můžete například použít následující příkaz UFW k povolení pouze adresy IP hostitele Apache.

sudo ufw umožňuje vstup z 10.0.0.1 na libovolný port 5432

Další krok

Doufám, že vám tento tutoriál pomohl nastavit dlaždicový server OpenStreetMap na Debianu 10. Můžete také nastavit geokódovací server Nominatim, aby poskytoval funkce vyhledávání.

  • Nastavte OSM Nominatim Geocoding Server na Debianu 10

Jako vždy, pokud vám tento příspěvek přišel užitečný, přihlaste se k odběru našeho bezplatného zpravodaje, kde získáte další tipy a triky. Opatruj se 🙂


Debian
  1. Jak nastavit statickou IP adresu na Debian 10 Buster

  2. Jak nastavit SFTP server na Debian 11 Server

  3. Jak nainstalovat MySQL Server na Debian 10 Buster

  1. Jak nastavit server Samba na Debian 10 Buster

  2. Jak nastavit server LAMP na Debian 10 Buster

  3. Jak nastavit server NFS na Debian 10 Buster

  1. Jak nastavit LEMP server na Debian 10 Buster

  2. Jak nastavit RVM na Debian 10 Buster

  3. Jak nastavit server OpenVPN na Debianu 9