Skip to content

Instantly share code, notes, and snippets.

@elbosso
Created July 10, 2018 11:34
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save elbosso/7d5a62686be9edd7f095165ce677366b to your computer and use it in GitHub Desktop.
Save elbosso/7d5a62686be9edd7f095165ce677366b to your computer and use it in GitHub Desktop.
//https://ircama.github.io/osm-carto-tutorials/tile-server-ubuntu/
CONTAINERNAME=osm
PROCESSORCOUNT=$(cat /proc/cpuinfo | grep processor | wc -l) # used to speed up make
lxc-create -n $CONTAINERNAME -t download -- --arch amd64 --dist ubuntu --release xenial
lxc-start -n $CONTAINERNAME
lxc-attach -n $CONTAINERNAME -- apt-get update
lxc-attach -n $CONTAINERNAME -- apt-get -y upgrade
lxc-attach -n $CONTAINERNAME -- apt-get -y install joe screen conky-cli openssh-server curl unzip gdal-bin tar wget bzip2 build-essential clang git autoconf libtool libxml2-dev libbz2-dev libgeos-dev libgeos++-dev libproj-dev gdal-bin libgdal-dev g++ libmapnik-dev mapnik-utils python-mapnik libxml2-dev libfreetype6-dev libjpeg-dev libpng-dev libproj-dev libtiff-dev libcairo2 libcairo2-dev python-cairo python-cairo-dev libgdal-dev build-essential python-dev libbz2-dev libicu-dev libboost-all-dev apache2 apache2-dev python-yaml python-pip mapnik-utils fonts-noto-cjk fonts-noto-hinted fonts-noto-unhinted fonts-hanazono ttf-unifont fontconfig fonts-dejavu-core nodejs-legacy npm postgresql postgis pgadmin3 postgresql-contrib osm2pgsql
lxc-attach -n $CONTAINERNAME -- apt-get clean
lxc-attach -n $CONTAINERNAME -- useradd -m tileserver
lxc-attach -n $CONTAINERNAME -- passwd tileserver
lxc-attach -n $CONTAINERNAME -- usermod -aG sudo tileserver
ssh tileserver@$CONTAINERNAME
export LANGUAGE=en_US.UTF-8
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8
test -d ~/src || mkdir ~/src ; cd ~/src
git clone https://github.com/openstreetmap/mod_tile.git
git clone https://github.com/gravitystorm/openstreetmap-carto.git
git clone https://github.com/googlei18n/noto-emoji.git
mapnik-config -v
python -c "import mapnik;print mapnik.__file__"
curl localhost| grep 'It works!'
cd mod_tile
./autogen.sh && ./configure && make -j$PROCESSORCOUNT && sudo make install && sudo make install-mod_tile && sudo ldconfig
cd ~/src/
sudo cp noto-emoji/fonts/NotoColorEmoji.ttf noto-emoji/fonts/NotoEmoji-Regular.ttf /usr/share/fonts/truetype/noto
sudo fc-cache -fv
fc-list
fc-list | grep Emoji
cd openstreetmap-carto
scripts/get-shapefiles.py
sudo npm install -g carto@0.18.0
cd ~/src/openstreetmap-carto
carto -a "3.0.0" project.mml > style.xml
ls -l style.xml
export PGHOST=localhost
export PGPORT=5432
export PGUSER=postgres
export PGPASSWORD=postgres_007%
sudo -u postgres psql postgres
\password postgres
\q
export PGPASSWORD=postgres_007%
HOSTNAME=localhost # set it to the actual ip address or host name
sudo mkdir /mnt/db # Suppose this is the tablespace location
sudo chown postgres:postgres /mnt/db
ls -l /mnt # add a host directory and use it instead: https://gist.github.com/julianlam/07abef272136ea14a627
psql -U postgres -h $HOSTNAME -c "CREATE TABLESPACE gists LOCATION '/mnt/db'"
psql -U postgres -h $HOSTNAME -c "CREATE DATABASE gis TABLESPACE gists"
psql -U postgres -h $HOSTNAME -c "\connect gis"
psql -U postgres -h $HOSTNAME -d gis -c "CREATE EXTENSION postgis"
psql -U postgres -h $HOSTNAME -d gis -c "CREATE EXTENSION hstore"
sudo su -
sudo -i -u postgres
createuser tileserver
psql
grant all privileges on database gis to tileserver;
\q
exit
exit
sudo joe /etc/postgresql/9.5/main/pg_hba.conf
--host all all <your IP set>/<your netmask> md5
sudo joe /etc/postgresql/9.5/main/postgresql.conf
--listen_addresses = 'localhost'
sudo /etc/init.d/postgresql restart
sudo joe /etc/postgresql/9.5/main/postgresql.conf
--shared_buffers = 2GB
--work_mem = 128MB
--maintenance_work_mem = 1GB
--wal_level = minimal
--synchronous_commit = off
--min_wal_size = 1GB
--max_wal_size = 2GB
--checkpoint_timeout = 15min
--checkpoint_completion_target = 0.9
--default_statistics_target = 1000
--autovacuum = off
--fsync = off
sudo /etc/init.d/postgresql stop
sudo /etc/init.d/postgresql start
cd ~/
wget -c http://download.geofabrik.de/europe/germany/thueringen-latest.osm.pbf
HOSTNAME=localhost
cd ~/src/openstreetmap-carto/
osm2pgsql -s -C 2048 -c -G --number-processes $PROCESSORCOUNT --hstore --style openstreetmap-carto.style --tag-transform-script openstreetmap-carto.lua -d gis -H $HOSTNAME -U postgres -k ~/thueringen-latest.osm.pbf
HOSTNAME=localhost
cd ~/src/openstreetmap-carto
scripts/indexes.py | psql -U postgres -h $HOSTNAME -d gis
sudo joe /usr/local/etc/renderd.conf
--XML=/home/tileserver/src/openstreetmap-carto/style.xml
--HOST=localhost
--plugins_dir=/usr/lib/mapnik/3.0/input/
sudo cp ~/src/mod_tile/debian/renderd.init /etc/init.d/renderd
sudo chmod a+x /etc/init.d/renderd
sudo joe /etc/init.d/renderd
--DAEMON=/usr/local/bin/$NAME
--DAEMON_ARGS="-c /usr/local/etc/renderd.conf"
--RUNASUSER=tileserver
sudo mkdir -p /var/lib/mod_tile
sudo chown tileserver:tileserver /var/lib/mod_tile
sudo systemctl daemon-reload
sudo systemctl start renderd
sudo systemctl enable renderd
sudo joe /etc/apache2/mods-available/mod_tile.load
--LoadModule tile_module /usr/lib/apache2/modules/mod_tile.so
sudo ln -s /etc/apache2/mods-available/mod_tile.load /etc/apache2/mods-enabled/
sudo joe /etc/apache2/sites-enabled/000-default.conf
--# Load all the tilesets defined in the configuration file into this virtual host
--LoadTileConfigFile /usr/local/etc/renderd.conf
--# Socket where we connect to the rendering daemon
--ModTileRenderdSocketName /var/run/renderd/renderd.sock
--# Timeout before giving up for a tile to be rendered
--ModTileRequestTimeout 3
--# Timeout before giving up for a tile to be rendered that is otherwise missing
--ModTileMissingRequestTimeout 60
sudo systemctl restart apache2
wget --spider http://localhost/osm_tiles/0/0/0.png
##replace by another area:
cd ~/
wget -c http://download.geofabrik.de/europe/germany/hessen-latest.osm.pbf
HOSTNAME=localhost
cd ~/src/openstreetmap-carto/
export PGPASSWORD=postgres_007%
osm2pgsql -s -C 2048 -c -G --number-processes $PROCESSORCOUNT --hstore --style openstreetmap-carto.style --tag-transform-script openstreetmap-carto.lua -d gis -H $HOSTNAME -U postgres -k ~/hessen-latest.osm.pbf
HOSTNAME=localhost
cd ~/src/openstreetmap-carto
scripts/indexes.py | psql -U postgres -h $HOSTNAME -d gis
sudo rm -rf /var/lib/mod_tile/default
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment