Instalacja i optymalizacja serwera kafelków OpenStreetMap na Ubuntu 24.04 LTS

Evaluez cet article !
[Total: 0 Moyenne : 0]

Hostowanie własnych kafelków OSM gwarantuje niezależność, wydajność i zgodność z RODO. Ten skondensowany przewodnik idzie dalej niż klasyczne tutoriale: obejmuje instalację, ustawienia wydajności, bezpieczeństwo, aktualizacje w czasie rzeczywistym, monitorowanie oraz wprowadza do kafelków wektorowych.

1. Wymagania wstępne i dobór sprzętu

Dlaczego? Prawidłowe dobranie wymiarów zapobiega spowolnieniom podczas importu i gwarantuje płynne renderowanie.

  • Aktualny Ubuntu 24.04 LTS (kernel 6.8).
  • Minimum 16 GB RAM (Francja); 64 GB dla Europy; 128 GB dla całej planety.
  • SSD NVMe ≥ 1 TB na import i cache.
  • CPU 8 wątków lub więcej (osm2pgsql wielowątkowy).

2. Instalacja krok po kroku

2.1 Instalacja pakietów

Dlaczego? Te pakiety tworzą stos renderujący (Apache, mod_tile, renderd) oraz bazę przestrzenną (PostgreSQL 16 + PostGIS 3.4).

sudo apt update && sudo apt upgrade -y
sudo apt install apache2 libapache2-mod-tile renderd git wget unzip bzip2 
  postgresql postgresql-16-postgis-3 postgresql-16-postgis-3-scripts 
  python3-mapnik mapnik-utils gdal-bin lua5.1 npm node-carto osm2pgsql

2.2 Utworzenie bazy PostGIS

Dlaczego? Baza gis przechowuje dane OSM i służy Mapnikowi.

sudo -u postgres createuser _renderd
sudo -u postgres createdb -E UTF8 -O _renderd gis
sudo -u postgres psql -d gis -c "CREATE EXTENSION postgis; CREATE EXTENSION hstore;"

2.3 Pobranie stylu openstreetmap-carto

Dlaczego? To standardowy styl OSM, gotowy dla wszystkich regionów.

git clone https://github.com/gravitystorm/openstreetmap-carto ~/src/osm-carto
cd ~/src/osm-carto && npm install -g carto
carto project.mml > mapnik.xml

2.4 Import danych OSM

Dlaczego? Zapełnienie bazy danymi z Twojego regionu.

wget -P ~/data https://download.geofabrik.de/europe/france/alsace-latest.osm.pbf
sudo -u _renderd osm2pgsql -d gis --create --slim -G --hstore 
  --tag-transform-script ~/src/osm-carto/openstreetmap-carto.lua 
  -C 75% --number-processes $(nproc) 
  -S ~/src/osm-carto/openstreetmap-carto.style 
  ~/data/alsace-latest.osm.pbf

2.5 Konfiguracja renderd i Apache

Dlaczego? Połączenie silnika renderującego z serwerem HTTP.

sudo tee /etc/renderd.conf >/dev/null <<EOF

[renderd]

Lire aussi  Samouczek wideo: składanie komputera gamingowego zoptymalizowanego pod kątem AI i deep learningu

num_threads=$(nproc) tile_dir=/var/lib/mod_tile stats_file=/run/renderd/stats

[default]

URI=/osm/ XML=/home/$USER/src/osm-carto/mapnik.xml HOST=localhost TILESIZE=256 EOF sudo systemctl enable –now renderd apache2

Test: http://IP/osm/0/0/0.png

3. Optymalizacje

Dlaczego? Skrócenie czasu renderowania i zwiększenie przepustowości.

  • PostgreSQL: shared_buffers=RAM/4, work_mem=128MB.
  • Wstępne renderowanie zoomów 0-12: render_list -a -z 0 -Z 12.
  • Cache HTTP przez Cache-Control: max-age=31536000.

4. Bezpieczeństwo i kopie zapasowe

Dlaczego? Ochrona Twoich danych i usługi.

  • UFW: otwórz tylko porty 80/443, ogranicz 5432.
  • fail2ban na Apache.
  • TLS Let’s Encrypt: sudo certbot --apache --hsts.
  • Kopie zapasowe: pg_dump -Fc gis | rclone copy - s3://bucket/.

5. Automatyczne aktualizacje

Dlaczego? Utrzymanie bazy w zgodzie z OSM.

sudo -u _renderd osm2pgsql-replication init -d gis 
  --osm-file ~/data/alsace-latest.osm.pbf
# systemd timer toutes les 5 min

6. Monitorowanie

Dlaczego? Przewidywanie problemów.

  • Munin: wtyczka renderd queue size.
  • Prometheus + Grafana do metryk i alertów.

7. Rozszerzenia: kafelki wektorowe, Docker, Ansible

  • Tegola lub TileServer-GL do kafelków wektorowych.
  • Obraz Dockera overv/openstreetmap-tile-server gotowy do użycia.
  • Playbook Ansible do idempotentnego wdrożenia.

Ostatnia aktualizacja: lipiec 2025.

Evaluez cet article !
[Total: 0 Moyenne : 0]
Julie - auteure Com-Strategie.fr

Julie – Auteure & Fondatrice

Étudiante en journalisme et passionnée de technologie, Julie partage ses découvertes autour de l’IA, du SEO et du marketing digital. Sa mission : rendre la veille technologique accessible et proposer des tutoriels pratiques pour le quotidien numérique.

Dodaj komentarz