Una volta risolte tutte le dipendenze per l'installazione del tile server, il passo da compiere è la configurazione di tutti i componenti, iniziando con la configurazione di un foglio di stile.
Configurazione del foglio di stile
Scegliamo di utilizzare OSM Bright, scritto nel linguaggio CartoCSS e compilato nell'XML richiesto da Mapnik mediante uno script: per questo motivo è necessario adattare un file di configurazione ai percorsi dei file di dati della propria installazione.
Assumiamo di installare il tutto in /usr/local/share/maps/style.
Scaricare OSM Bright
È necessario scaricare sia OSM Bright che alcune risorse dati aggiuntive. Lo faremo con wget:
mkdir -p /usr/local/share/maps/style
cd /usr/local/share/maps/style
wget https://github.com/mapbox/osm-bright/archive/master.zip
wget http://data.openstreetmapdata.com/simplified-land-polygons-complete-3857.zip
wget http://data.openstreetmapdata.com/land-polygons-split-3857.zip
wget http://www.naturalearthdata.com/http//www.naturalearthdata.com/download/10m/cultural/ne_10m_populated_places_simple.zip
I dati scaricati vengono spostati in osm-bright-master.
unzip '*.zip'
mkdir osm-bright-master/shp
mv land-polygons-split-3857 osm-bright-master/shp/
mv simplified-land-polygons-complete-3857 osm-bright-master/shp/
mv ne_10m_populated_places_simple osm-bright-master/shp/
Si crea quindi un file di indici per ciascuno degli shapefile.
cd osm-bright-master/shp/land-polygons-split-3857
shapeindex land_polygons.shp
cd ../simplified-land-polygons-complete-3857/
shapeindex simplified_land_polygons.shp
cd ../
Configurare OSM Bright
Ora bisogna personalizzare il file di configurazione di OSM Bright perchè possa generare appropriatamente OSMBright.xml
, utilizzando gli shapefile decompressi al passo precedente. Apriamo perciò il file osm-bright/osm-bright.osm2pgsql.mml
con un editor di testo.
In questo file, tutti gli URL relativi terminanti in .zip devono essere sostituiti con il percorso relativo al file decompresso, aggiungendo la riga "type": "shape"
sotto ognuno di essi.
"file": "/usr/local/share/maps/style/osm-bright-master/shp/land-polygons-split-3857/land_polygons.shp",
"type": "shape"
"file": "/usr/local/share/maps/style/osm-bright-master/shp/simplified-land-polygons-complete-3857/simplified_land_polygons.shp",
"type": "shape",
"file": "/usr/local/share/maps/style/osm-bright-master/shp/ne_10m_populated_places_simple/ne_10m_populated_places_simple.shp",
"type": "shape"
Infine, nella sezione che contiene ne_places
, sostituiamo le righe "srs"
ed "srs-name"
con la riga seguente per impostare il sistema di proiezione della mappa:
"srs": "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs"
Compilare il foglio di stile
È necessario effettuare un preprocessing con uno script proprio di OSMBright, che va adattato al proprio scenario:
cp configure.py.sample configure.py
nano configure.py
Sostituiamo a questo punto la riga che punta a ~/Documents/Mapbox/project
con /usr/local/share/maps/style
, e cambiamo il nome del database dbname
da osm
a gis
.
Quindi eseguiamo quanto segue:
./make.py
cd ../OSMBright/
carto project.mml > OSMBright.xml
In questo modo abbiamo memorizzato un foglio di stile XML per Mapnik in /usr/local/share/maps/style/OSMBright/OSMBright.xml
.
Configurazione del server web
Perchè sia possibile servire i tile bisogna configurare ed eseguire renderd, oltre ad aggiungere mod_tile tra i moduli di Apache.
Configurazione renderd
1. All'interno del file /usr/local/etc/renderd.conf
, decommentiamo e modifichiamo le righe indicate come segue:
socketname=/var/run/renderd/renderd.sock
plugins_dir=/usr/local/lib/mapnik/input
font_dir=/usr/share/fonts/truetype/ttf-dejavu
XML=/usr/local/share/maps/style/OSMBright/OSMBright.xml
HOST=localhost
2. Creiamo quindi le seguenti directory per renderd:
sudo mkdir /var/run/renderd
sudo chown username /var/run/renderd
sudo mkdir /var/lib/mod_tile
sudo chown username /var/lib/mod_tile
Configurare mod_tile
1. Creiamo il file /etc/apache2/conf-available/mod_tile.conf
, contenente:
LoadModule tile_module /usr/lib/apache2/modules/mod_tile.so
2. Per semplicità, si suppone di utilizzare il sito di default configurato in Apache. Modifichiamo il file /etc/apache2/sites-available/000-default.conf
, aggiungendo quanto segue subito dopo la riga dell'indirizzo email dell'amministratore:
LoadTileConfigFile /usr/local/etc/renderd.conf
ModTileRenderdSocketName /var/run/renderd/renderd.sock
# Timeout richiesta di rendering di un tile
ModTileRequestTimeout 0
# Timeout richiesta di rendering di un tile non presente nella cache
ModTileMissingRequestTimeout 30
3. Attivare la configurazione per mod_tile, e ricaricare Apache:
a2enconf mod_tile
service apache2 reload
Messa a punto del sistema
Un tile server impegna notevolmente il sistema che lo esegue. Di seguito, quindi, ecco alcuni suggerimenti per migliorarne le prestazioni.
Messa a punto di postgresql
Modifichiamo il file /etc/postgresql/9.1/main/postgresql.conf
con queste impostazioni:
shared_buffers = 128MB
checkpoint_segments = 20
maintenance_work_mem = 256MB
autovacuum = off
Per lanciare PostgreSQL con questi nuovi parametri, è necessario inserire nel file /etc/sysctl.conf
la riga kernel.shmmax=268435456
.
A questo punto, dopo il riavvio del computer, otterremo l’incremento di prestazioni desiderato.