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>160lChcete-li používat velké stránky, restartujte PostgreSQL.
sudo systemctl restart postgresqlPouží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 aptPoté úvodní obrazovka:
obrazovkaPř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 osm2pgsqlUdě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 -iSpusťte následující příkaz k načtení šablony stylů mapy a mapových dat do
gis
databáze. Nahraďtegreat-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.pbfkde
--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 Přejít na mapu
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"preUložte a zavřete soubor. Poté vytvořte šablonu stylů XML Mapnik pomocí
carto
kompilátor šablony stylů mapy.carto project.mml> style.xmlNa databázovém serveru PostgreSQL upravte hlavní konfigurační soubor.
sudo nano /etc/postgresql/11/main/postgresql.confPř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.confPř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 trustUložte a zavřete soubor. Poté restartujte PostgreSQL.
sudo systemctl restart postgresqlRestartujte démona vykreslování na hostiteli Apache.
vykreslení restartu sudo systemctlMusíte zkontrolovat protokol vykreslení. Ujistěte se, že vykreslení nezpůsobí žádnou chybu v protokolu, jinak se mapa nezobrazí.
vykreslení sudo journalctl -euMě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 5432Další 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 🙂