User:Zverik/Tile Server on Fedora 20
See this page for most recent instructions for Ubuntu 14.04, by Paul Norman.
Initialize database
yum install postgresql postgresql-contrib postgresql-server postgis
Default DB location
If your /usr partition is low on space, follow the next chapter instructions. Otherwise run this command and skip to "Start PostgreSQL...":
su postgres -c "initdb -E UTF8"
Moving DB to home
We'll be moving PostgreSQL data directory to /home/pgdata, as described here.
mkdir /home/pgdata chown postgres:postgres /home/pgdata su postgres -c "initdb -E UTF8 -D /home/pgdata" # change PGDATA in systemd config sed "s#^Environment=PGDATA=.*#Environment=PGDATA=/home/pgdata#" /usr/lib/systemd/system/postgresql.service > /etc/systemd/system/postgresql.service # change PGHOME selinux context chcon -R --reference=/var/lib/pgsql/data /home/pgdata # allow postgres to search /home cd /root mkdir selinux.local cd selinux.local chcon -R -t usr_t . ln -s /usr/share/selinux/devel/Makefile . touch postgresqlhome.fc touch postgresqlhome.if cat > postgresqlhome.te <<EOF module postgresqlhome 0.1; require { class dir search; class lnk_file read; type home_root_t; type postgresql_t; type var_lib_t; }; # Allow postgresql to search directory /home allow postgresql_t home_root_t:dir search; EOF make semodule -i postgresqlhome.pp
Start PostgreSQL and create database
systemctl enable postgresql systemctl start postgresql su postgres -c "createdb gis" psql -d gis -c "create extension postgis;"
Populate the database
It is recommended to set overcommit kernel flag, so osm2pgsql multiprocessing works (not tested on Fedora yet):
echo "vm.overcommit_memory=1" > /etc/sysctl.d/60-overcommit.conf sysctl -p /etc/sysctl.d/60-overcommit.conf
Now download some data, cut it if needed (see below) and load to a database:
yum install osm2pgsql # Download data # wget http://be.gis-lab.info/data/osm_dump/dump/latest/local.osm.pbf osm2pgsql -d gis --slim -C 8000 --number-processes 3 local.osm.pbf
Cutting a region
If you need to cut source file, install Osmosis:
mkdir osmosis cd osmosis wget -O - http://bretth.dev.openstreetmap.org/osmosis-build/osmosis-latest.tgz | tar -xz ln -r -s bin/osmosis /usr/bin/ cd .. # Cut local.osm.pbf with a polygon region.poly osmosis --read-pbf local.osm.pbf --bounding-polygon file=region.poly --write-pbf local-cut.osm.pbf # ...or with a bounding box osmosis --read-pbf local.osm.pbf --bounding-box top=46.6 bottom=44 left=32 right=37 --write-pbf local-cut.osm.pbf
Prepare mapnik style
yum install mapnik mapnik-utils carto gdal unifont-fonts git clone https://github.com/gravitystorm/openstreetmap-carto.git carto cd carto ./get-shapefiles.sh carto project.mml | grep -v 'Arundina\|Khmer\|Padauk' | sed 's/unifont/Unifont/' >osm.xml
Rendering tiles from command line
yum install python-shapely git clone https://github.com/Zverik/polytiles.git polytiles/polytiles.py -p region.poly -z 6 8
For rendering images, see Nik4.
Side note - installing TileMill
You would probably want it to edit mapnik style. Current instructions are too verbose: everything is packaged in Fedora except tilemill itself.
yum install nodejs-mapnik protobuf-devel protobuf-lite git clone https://github.com/mapbox/tilemill cd tilemill grep -v topcube package.json > ptmp; mv ptmp package.json npm install ./index.js
Now open localhost:20009 in any browser.