OSM Tiles Installation

System Requirements

A minimum of 1GB of RAM is required or installation will fail. For a full planet import 32GB or more are recommended.

For a full planet install you will need about 500GB of hard disk space (as of May 2015, take into account that the OSM database is growing fast). SSD disks will help considerably to speed up import and queries.

On pummelzacken the complete initial import requires around 2 days. On a 12-core machine with 32GB RAM and standard SATA disks, the initial import (osm2pgsql) takes around 20 hours and the indexing process another 250 hours. Only 8 parallel threads were used for this setup because I/O speed was the limiting factor. The same machine is able to import the Germany extract in around 4 hours.


sudo apt-get install libboost-all-dev subversion git-core tar unzip wget bzip2 build-essential autoconf libtool libxml2-dev libgeos-dev libgeos++-dev libpq-dev libbz2-dev libproj-dev munin-node munin libprotobuf-c0-dev protobuf-c-compiler libfreetype6-dev libpng12-dev libtiff4-dev libicu-dev libgdal-dev libcairo-dev libcairomm-1.0-dev apache2 apache2-dev libagg-dev liblua5.2-dev ttf-unifont lua5.1 liblua5.1-dev node-carto

sudo apt-get install geotiff-bin

sudo apt-get install libgeotiff-dev

sudo apt-get install postgresql postgresql-contrib postgis postgresql-9.3-postgis-2.1

Adding a New Postgre User 

sudo -u postgres -i
createuser username # answer yes for superuser (although this isn't strictly necessary)
createdb -E UTF8 -O username gis

Be careful with what you type in username. It will need later.

Postgres Tables

sudo -u postgres psql
\c gis
ALTER TABLE geometry_columns OWNER TO username;
ALTER TABLE spatial_ref_sys OWNER TO username;

Installation of OSM2PGSQL

mkdir ~/src
cd ~/src
git clone git://github.com/openstreetmap/osm2pgsql.git
cd osm2pgsql
mkdir build && cd build
cmake ..
sudo make install

Installation of Mapnik

sudo apt-get install -y python-software-properties

sudo add-apt-repository ppa:mapnik/nightly-2.3
sudo apt-get update
sudo apt-get install libmapnik libmapnik-dev mapnik-utils python-mapnik
# also install datasource plugins if you need them
sudo apt-get install mapnik-input-plugin-gdal mapnik-input-plugin-ogr mapnik-input-plugin-postgis mapnik-input-plugin-sqlite mapnik-input-plugin-osm

Checking Mapnik Installation in Python

>>> import mapnik
>>> quit()

Installation of mod_tile and Renderd

Install mod_tile and renderd:
cd ~/src
git clone git://github.com/openstreetmap/mod_tile.git
cd mod_tile
sudo make install
sudo make install-mod_tile
sudo ldconfig

Installation of Stylesheet (OSMBright)

Also available other themes are TileMill , Kosmtik , Sputnik

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

Downloading Shapes

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/

Indexing to Improve Performances

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 ../

Location of local data files

nano osm-bright/osm-bright.osm2pgsql.mml

Replace all values start with ‘http://’

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

Finally, replace sections that are ‘srs’ and ‘srs_name’ with

"srs": "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs"

Run in /osm-bright-master/

cp configure.py.sample configure.py
nano configure.py

Replace “~/Documents/Mapbox/project” line with “/usr/local/share/maps/style” and change database name ‘osm’ to ‘gis’.

Editing /usr/local/etc/renderd.conf 


Configuring mod_tile

sudo mkdir /var/run/renderd
sudo chown username /var/run/renderd
sudo mkdir /var/lib/mod_tile
sudo chown username /var/lib/mod_tile

username must be same as before

Adding Apache Module

Open /etc/apache2/conf-available/mod_tile.conf as sudo and adding this line

LoadModule tile_module /usr/lib/apache2/modules/mod_tile.so

Editing Apache Configuration

Open /etc/apache2/sites-available/000-default.conf as sudo and adding these lines after admin email address

LoadTileConfigFile /usr/local/etc/renderd.conf
ModTileRenderdSocketName /var/run/renderd/renderd.sock
# Timeout before giving up for a tile to be rendered
ModTileRequestTimeout 0
# Timeout before giving up for a tile to be rendered that is otherwise missing
ModTileMissingRequestTimeout 30

Apply the changes

sudo a2enconf mod_tile
sudo service apache2 reload

Tuning the system

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

shared_buffers = 128MB
checkpoint_segments = 20
maintenance_work_mem = 256MB
autovacuum = off

sudo nano /etc/sysctl.conf

# Increase kernel shared memory segments - needed for large databases

After reboot your system, you can check to kernel definition

sudo sysctl kernel.shmmax

Downloading Maps

From http://planet.openstreetmap.org/ or http://download.geofabrik.de/

mkdir /usr/local/share/maps/planet
cd /usr/local/share/maps/planet
wget http://download.geofabrik.de/europe/turkey-latest.osm.pbf

Loading data to database

osm2pgsql --slim -d gis -C 256 -S /home/ubuntu/src/osm2pgsql/default.style --number-processes 3 ~/planet/planet-latest.osm.pbf

Change planet-lastest.som.pdf file with whatever your file is downloaded.

After passed without error, screen would show

Completed planet_osm_point
Completed planet_osm_roads
Completed planet_osm_polygon
Completed planet_osm_line
Stopped table: planet_osm_ways

Osm2pgsql took 86400s overall

Running Server

sudo mkdir /var/run/renderd
sudo chown username /var/run/renderd
sudo -u username renderd -f -c /usr/local/etc/renderd.conf
service apache2 reload

If everthing is fine, a small png picture will be appear after browsing ‘http://yourserveraddress/osm_tiles/0/0/0.png’.

Setting to startup scripts

sudo cp  ~/src/mod_tile/debian/renderd.init /etc/init.d/renderd
sudo chmod u+x /etc/init.d/renderd

sudo nano /etc/init.d/renderd"
DAEMON_ARGS="-c /usr/local/etc/renderd.conf" 

Replace ‘www-data’ username with whatever you defined before.

sudo /etc/init.d/renderd start
sudo ln -s /etc/init.d/renderd /etc/rc2.d/S20renderd

Now we can reboot the system then good luck with that new tile server 🙂


Source: https://switch2osm.org/why-switch/