Tile Server (2011): Difference between revisions
No edit summary |
No edit summary |
||
Line 27: | Line 27: | ||
It took about 15 minutes. I continued with the mapnik installation while the database ground away. Take care copying those long URLs in the prepared data section. | It took about 15 minutes. I continued with the mapnik installation while the database ground away. Take care copying those long URLs in the prepared data section. | ||
The guide got me to generating a map from the command line with little fuss. | The guide got me to generating a map from the command line with little fuss. | ||
=== Create an OSM file for your database === | === Create an OSM file for your database === | ||
Line 37: | Line 37: | ||
The module uses a multithreaded version of apache. | The module uses a multithreaded version of apache. | ||
<pre>sudo apt-get | <pre>sudo apt-get install apache2 apache2-threaded-dev</pre> | ||
=== Build Apache Tile Module & renderd === | === Build Apache Tile Module & renderd === | ||
Line 47: | Line 46: | ||
make | make | ||
sudo make install | sudo make install | ||
mkdir /var/lib/mod_tile | sudo mkdir /var/lib/mod_tile | ||
mkdir /var/run/renderd | sudo chown rick /var/lib/mod_tile | ||
sudo mkdir /var/run/renderd | |||
sudo chown rick /bar | |||
</pre> | </pre> | ||
(if directories already exist, make sure they have write access to the user). | (if directories already exist, make sure they have write access to the user). | ||
Line 71: | Line 73: | ||
URI=/tiles/ | URI=/tiles/ | ||
XML=/home/rick/bin/mapnik/my_osm.xml | XML=/home/rick/bin/mapnik/my_osm.xml | ||
#HTCPHOST=proxy.openstreetmap.org</pre> | #HTCPHOST=proxy.openstreetmap.org</pre> | ||
=== Set up Apache configuration === | === Set up Apache configuration === | ||
Line 100: | Line 94: | ||
Now create a load file for the module and create the links in mods-enabled. | Now create a load file for the module and create the links in mods-enabled. | ||
<pre>sudo echo LoadModule tile_module /usr/lib/apache2/modules/mod_tile.so > /etc/apache2/mods-available/mod_tile.load | <pre>sudo su root | ||
echo LoadModule tile_module /usr/lib/apache2/modules/mod_tile.so > /etc/apache2/mods-available/mod_tile.load | |||
ln -s /etc/apache2/mods-available/mod_tile.load /etc/apache2/mods-enabled/mod_tile.load | |||
ln -s /etc/apache2/mods-available/mod_tile.conf /etc/apache2/mods-enabled/mod_tile.conf | |||
exit | |||
</pre> | |||
You can now restart apache and check the module is loaded: | You can now restart apache and check the module is loaded: | ||
<pre>apache2ctl restart</pre> | <pre>apache2ctl restart</pre> | ||
=== Start renderd === | |||
For debugging, do this in a separate window - as regular user, not root. | |||
<pre>~/src/mod_tile/renderd -f</pre> | |||
You should see activity as tiles are requested. You'd start a single instance in the background using | |||
<pre>~/src/mod_tile/renderd</pre> | |||
or multiple instances (for each thread) using | |||
<pre> ~/src/mod_tile/renderd.py &</pre> | |||
=== Testing === | |||
From a web browser, navigate to the IP of your VM | From a web browser, navigate to the IP of your VM | ||
<pre>http://192.168.0.151/mod_tile</pre> | <pre>http://192.168.0.151/mod_tile</pre> |
Revision as of 21:29, 30 July 2011
The Planimate Map object enables the use of tiled map data in models. These notes describe the setup of a map tile web server which can be used with Planimate or other open Street Maps projects.
The bulk of the install is described here and credit to the author for this guide, which gets you from a bare linux install to locally creating map tiles.
Setting up the VM
Create a new VM, pointing it to a Ubuntu 10.04 ISO (ubuntu-10.04-server-amd64.iso). I selected 3.5GB RAM, 100GB HDD and bridged networking. Selected defaults for the rest. In a few minutes you'll be at a linux login.
This was a first test, only for the Australia region. I'll see how it copes with the whole world when I get round to downloading some 8GB of data.
Installing PostGIS, Mapnik
Follow the guide linked above. Its useful to ssh in and copy/paste in a line at a time. I used PUTTY as the terminal. The guide is pretty well spot on except these:
- I found I had to install 'unzip', might as well do that first
sudo apt-get install unzip
- Later in the guide it says to do this:
psql -f /usr/share/postgresql/8.4/contrib/postgis-1.5/postgis.sql -d gis
This directory didn't exist so instead I did:
psql -f /usr/share/postgresql/8.4/contrib/postgis.sql -d gis
If you read the article's comments, you'll find this is how it used to be.
- I only downloaded Australian data, so my import was different. Also notice the -C parameter. This is the amount of RAM the import uses for caching, you might want to reduce it if space is tight.
cd ~/bin/osm2pgsql ./osm2pgsql -S default.style --slim -d gis -C 2048 ~/planet/australia.osm.bz2
It took about 15 minutes. I continued with the mapnik installation while the database ground away. Take care copying those long URLs in the prepared data section.
The guide got me to generating a map from the command line with little fuss.
Create an OSM file for your database
This file tells renderd about your database. I also edited some of the other py files like render_tiles.py to point to "my_osm.py".
cd ~/bin/mapnik ./generate_xml.py osm.xml my_osm.xml --dbname gis --symbols ./symbols/ --world_boundaries ./world_boundaries/ --user rick --accept-none
Web Server
The module uses a multithreaded version of apache.
sudo apt-get install apache2 apache2-threaded-dev
Build Apache Tile Module & renderd
Make sure you are the user that can access the DB, not root.
cd ~/src svn co http://svn.openstreetmap.org/applications/utils/mod_tile/ cd mod_tile make sudo make install sudo mkdir /var/lib/mod_tile sudo chown rick /var/lib/mod_tile sudo mkdir /var/run/renderd sudo chown rick /bar
(if directories already exist, make sure they have write access to the user).
Edit renderd configuration
The make install above copied /etc/renderd.conf from the src directory. In this setup, both Apache and the renderd program use this configuration file.
sudo vim /etc/renderd.conf
Edit as follows, adjust the home directory as appropriate:
[renderd] socketname=/var/run/renderd/renderd.sock num_threads=4 tile_dir=/var/lib/mod_tile ; DOES NOT WORK YET stats_file=/var/run/renderd/renderd.stats [mapnik] plugins_dir=/usr/local/lib/mapnik/input font_dir=/home/rick/src/mapnik/fonts font_dir_recurse=1 [default] URI=/tiles/ XML=/home/rick/bin/mapnik/my_osm.xml #HTCPHOST=proxy.openstreetmap.org
Set up Apache configuration
Copy the configuration file for mod_tile then edit it:
cd ~/src/mod_tile sudo cp mod_tile.conf /etc/apache2/mods-available sudo vim /etc/apache2/mods-available/mod_tile.conf
The changes are in the first few lines:
- comment this out, we'll load it separately
#LoadModule tile_module modules/mod_tile.so
- change the servername and comment out the alias line
ServerName maps
- update the document root
DocumentRoot /var/www/
- enable the use of the config file in /etc
LoadTileConfigFile /etc/renderd.conf
Thats it for the edits.
Now create a load file for the module and create the links in mods-enabled.
sudo su root echo LoadModule tile_module /usr/lib/apache2/modules/mod_tile.so > /etc/apache2/mods-available/mod_tile.load ln -s /etc/apache2/mods-available/mod_tile.load /etc/apache2/mods-enabled/mod_tile.load ln -s /etc/apache2/mods-available/mod_tile.conf /etc/apache2/mods-enabled/mod_tile.conf exit
You can now restart apache and check the module is loaded:
apache2ctl restart
Start renderd
For debugging, do this in a separate window - as regular user, not root.
~/src/mod_tile/renderd -f
You should see activity as tiles are requested. You'd start a single instance in the background using
~/src/mod_tile/renderd
or multiple instances (for each thread) using
~/src/mod_tile/renderd.py &
Testing
From a web browser, navigate to the IP of your VM
http://192.168.0.151/mod_tile
Now fetch a tile
http://192.168.0.151/tiles/0/0/0.png
If things dont work, check:
- Can renderd write to /var/lib/mod_tile and /bar/run/renderd
- Apache's error log
- Is font path correct in renderd.conf