GNU/Linux >> Znalost Linux >  >> Ubuntu

Jak nastavit OpenStreetMap Tile Server na Ubuntu 20.04

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 Ubuntu 20.04, abyste nemuseli používat proprietární 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

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-12-postgis-3

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 --group 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/12/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/12/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. Upravte soubor /etc/sysctl.conf.

sudo nano /etc/sysctl.conf

Přidejte následující řádek na konec tohoto souboru, abyste přidělili 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:0Hugepagesize:2048 kB

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. Obrazovka instalace na serveru Ubuntu 20.04:

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.focal]

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.focal (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.

Odstraňování problémů

Pokud při importu mapových dat ze souboru PBF narazíte na následující chybu,

Chyba PBF:neplatná velikost blobheaderu (> max_blob_header_size)

je to pravděpodobně proto, že váš soubor PBF je poškozený. Ověřte součet md5 souboru PBF jako níže.

md5sum great-britain-latest.osm.pbf

Porovnejte výsledek s hodnotou md5sum na stránce stahování souboru PBF.

Krok 6:Nainstalujte Renderd a mod_tile

  • renderd je démon pro vykreslování dlaždic OpenStreetMap z databáze PostgreSQL.
  • mod_tile je modul Apache, který se používá k poskytování dlaždic klientům (např. webovým prohlížečům)

Výchozí úložiště Ubuntu neobsahuje mod_tile a renderd , ale můžeme je nainstalovat z OSM PPA.

sudo apt install software-properties-commonsudo add-apt-repository ppa:osmadmins/ppasudo apt install apache2 libapache2-mod-tile renderd

Nainstaluje se webový server Apache a konfigurační soubor pro renderd bude také vytvořen na /etc/apache2/conf-available/renderd.conf .

Povolte tile modul.

dlaždice sudo a2enmod

Dále vytvořte virtuálního hostitele pro dlaždicový server.

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

Přidejte do tohoto souboru následující řádky. Nahraďte tile.your-domain.com s vaším skutečným názvem domény. Nezapomeňte na záznam DNS A.

 Název serveru tile.your-domain.com LogLevel info Zahrnout /etc/apache2/conf-available/renderd.conf

Uložte a zavřete soubor. Povolit tohoto virtuálního hostitele.

sudo a2ensite tileserver_site.conf

Restartujte Apache, aby se změny projevily.

sudo systemctl restart apache2

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 unzip gdal-bin mapnik-utils libmapnik-dev python3-pip

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 carto balíček s npm .

instalace sudo npm -g carto

Nainstalujte psycopg2 Modul Python.

instalace sudo -H pip3 psycopg2==2.8.5

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 renderd 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

Přidejte default vrstva. Řádky začínající středníkem (;) jsou komentáře.

; PŘIDEJTE SVÉ VRSTVY:[výchozí]URI=/osm/XML=/home/osm/openstreetmap-carto/style.xmlHOST=tile.your-domain.com

Uložte a zavřete soubor. Poté vytvořte nový adresář pro vykreslenou službu.

sudo mkdir /etc/systemd/system/renderd.service.d/

V tomto adresáři vytvořte vlastní konfigurační soubor.

sudo nano /etc/systemd/system/renderd.service.d/custom.conf

Přidejte do tohoto souboru následující řádky.

[Služba]User=osm

Uložte a zavřete soubor. Změňte vlastnictví /run/renderd/ a /var/cache/renderd/tiles/ adresář.

sudo chown osm /run/renderd/ -Rsudo chown osm /var/cache/renderd/tiles/ -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:Test

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

Nyní máte funkční dlaždicový server OSM, k zobrazení mapy na ostatních serverech musíte použít knihovnu map JavaScript. V tomto tutoriálu vytvářím webovou mapu na dlaždicovém serveru, ale můžete to udělat na jakémkoli jiném serveru.

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/html/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/html/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/html/sudo wget http://cdn.leafletjs.com/leaflet/v1.7.1/leaflet.zipsudo rozbalit leták.zip

Dále vytvořte index.html soubor. Pokud již existuje index.html soubor a poté smažte původní obsah.

sudo nano /var/www/html/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. osmadmins/ppa PPA obsahuje nefunkční certbot binární, proto doporučuji nainstalovat certbot z obchodu Snap.

sudo apt install snapdsudo snap install --classic certbot

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

sudo /snap/bin/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 /snap/bin/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/12/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/12/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 Ubuntu 20.04. Můžete také chtít nastavit geokódovací server Nominatim, aby poskytoval funkci vyhledávání adres.

  • Nastavit OSM Nominatim Geocoding Server na Ubuntu 20.04

Navigační funkce pro vaši mapu můžete poskytnout pomocí Open Source Routing Machine (OSRM).

  • Jak nainstalovat OSRM na Ubuntu 20.04 – Open Source Routing Machine

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 🙂


Ubuntu
  1. Jak nastavit Ubuntu/Debian LAMP Server

  2. Jak nastavit Nginx jako reverzní proxy na Ubuntu 20.04

  3. Jak nastavit WireGuard na Ubuntu 22.04

  1. Jak nastavit a nainstalovat Squid Proxy Server na Ubuntu 18.04

  2. Jak nastavit server a klienta NFS na Ubuntu 20.04

  3. Jak nastavit TeamSpeak Server na Ubuntu 16.04

  1. Jak nastavit bloky serveru Nginx na Ubuntu 18.04

  2. Jak nastavit server OpenVPN na Ubuntu 18.04

  3. Jak nastavit bloky serveru Nginx na Ubuntu 20.04