整个服务器的结构为:
(1) apache Web服务器处理用户的页面请求,包括一些局部渲染;
(2) mod_tile为apache的一个模块,用来缓存切片并决定哪一部分需要重新被渲染
(3) Renderd 为渲染请求提供一个优先队列系统来管理并润化显示的效果
(4) mapnik在背后渲染所需的图片,被rendered调用
(5) postgis数据库作为数据来源,其数据使用osm2sql工具来导入openstreetmap官网下载的数据,具体见《一步步DIY: OSM-Web服务器(一) PostgreSql 配置以及osm2pgsql原始PBF数据导入》
所以需要分别安装这三款软件:
(1) apache服务器的安装参考了《一步步DIY: OSM-Web服务器(二) mapnik 与 apache2mod_tile 的配置》的第9部分,操作与之类似。
(2) mapnik需要最新的boost库,可以通过以下方式来完成安装:
sudoapt-get install python-software-properties
sudoadd-apt-repository ppa:mapnik/boost
sudoapt-get update
sudoapt-get install libboost-dev libboost-filesystem-devlibboost-program-options-dev libboost-python-dev libboost-regex-devlibboost-system-dev libboost-thread-dev
其它的依赖库可以通过以下方式来安装:
sudoapt-get install libltdl-dev libltdl7 libpng12-dev libtiff4-dev
sudoapt-get install libicu-dev python-cairo-dev python-nose libfreetype6-devlibfreetype6
sudoapt-get install libcairo2-dev libcairomm-1.0-dev libgeotiff-dev
sudoapt-get install libsigx-2.0-2libsigx-2.0-dev
sudoapt-get install libgdal1-dev python-gdalimagemagick ttf-dejavu ttf-unifont
下面安装mapnik,先从服务器下载并解压
cd~/src
gitclone https://github.com/mapnik/mapnik.git
cdmapnik
然后使用利用python完成安装,验证方法网上很多,Python中import mapnik
pythonscons/scons.py configure INPUT_PLUGINS=all OPTIMIZATION=3SYSTEM_FONTS=/usr/share/fonts/truetype/
pythonscons/scons.py
sudopython scons/scons.py install
sudoldconfig
(3) 下面安装OpenStreetMap 的Mapnik 工具,这里面包含了一些可以用于帮助案显示OpenStreetMap数据的默认样式文件以及工具。其中第4步需要下载大概400MB的内容。
1.cd ~/bin
2.svn co http://svn.openstreetmap.org/applications/rendering/mapnik mapnik-style
3.cd ~/bin/mapnik-style
4.sudo ./get-coastlines.sh /usr/local/share
5. ./generate_xml.py
--world_boundaries=/usr/local/share/world_boundaries(上一步生成)
--host=127.0.0.1(postgis所在主机ip地址)
--port=5432(postgis端口号)
--user=mfl345(postgis数据库的用户名)
--password=mfl345909(postgis数据库的密码)
--dbname=osmgis(postgis数据库)
如果第5步生成文件失败,则需要配置一下其中的各个文件,将其中的默认值修改为自己的数据库相关属性,需要修改三个文件,首先使用默认配置值填充:
cdinc
cpfontset-settings.xml.inc.template fontset-settings.xml.inc
cpdatasource-settings.xml.inc.template datasource-settings.xml.inc
cpsettings.xml.inc.template settings.xml.inc
然后分别修改,对于settings.xml.inc,
1.用
代替
2.用
代替
3.用
代替
4.用
(引号内部为world_boundaries的路径)
代替
5. 用
代替
对于datasource-settings.xml.inc,
fontset-settings.xml.inc最好不要修改。
当前mapnik-style是为0.7调配的,需要转换到3.x格式。转换比较简单,首先,安装库
cd ~/bin/mapnik-style
sudoapt-get install libxml2 libxml2-dev python-lxml
而后,直接升级
upgrade_map_xml.py osm.xml osm-mapnik3.xml
如果没有产生文件,可能是前一步没有把数据库连接配置好。
测试方法参考前文。
(4) 配置rendered,先创建文件夹并赋予权限
sudomkdir /var/run/renderd
sudochown mfl345 /var/run/renderd
然后修改配置文件
sudogedit /usr/local/etc/renderd.conf
为:
socketname=/var/run/renderd/renderd.sock
plugins_dir=/usr/local/lib/mapnik/input
font_dir=/usr/share/fonts/truetype/ttf-dejavu
XML=/home/username/src/mapnik-style/osm-mapnik3.xml((3)中生成)
HOST=localhost
(5) 安装并配置mod_tile,首先下载
cd~/src
gitclone https://github.com/openstreetmap/mod_tile/
然后安装
cdmod_tile
./autogen.sh
./configure
make
sudomake install
sudomake install-mod_tile
sudoldconfig
在执行make命令的时候会出现错误,提示好多类型都未定义,这时候就需要修改其中的一些文件了,具体修改内容参考《mod_tile文件变更》。之后创建文件夹放置瓦片并赋予权限
sudomkdir /var/lib/mod_tile
sudochown mfl345 /var/lib/mod_tile
(6) 配置apache,让apache2 在启动时装载 mod_tile,需要修改
sudogedit /etc/apache2/httpd.conf
在文件末尾添加:
ServerName(填IP地址或者localhost)
LoadModule tile_module /usr/lib/apache2/modules/mod_tile.so
而后,设置用户访问网页的入口点 ,打开文件
sudo gedit/etc/apache2/sites-available/000-default.conf
然后在ServAdmin所在行的下面添加:
LoadTileConfigFile/usr/local/etc/renderd.conf
ModTileRenderdSocketName/var/run/renderd/renderd.sock
#Timeout before giving up for a tile to be rendered
ModTileRequestTimeout0
#Timeout before giving up for a tile to be rendered that is otherwise missing
ModTileMissingRequestTimeout30
最后按照参考博客的说明测试render。
1. mapnik_style安装后在./generate_xml.py生成配置文件的时候,如果最后生成不成功,可以参照之后的说明直接修改相应的文件
2.其中采用本文方式从网上下载mod_tile报中文件内容有部分内容需要改变。