红联Linux门户
Linux帮助

搭建Openstreetmap地图服务器(Ubuntu 16.04LTS)

发布时间:2017-01-12 10:13:38来源:linux网站作者:Soe_7
国内关于OpenStreetMap的资料较少,主要通过整理国外网站资料加自己多方尝试,终于成功搭建环境。本教程在Ubuntu16.04中进行了测试,运行良好。Openstreetmap服务器需要至少2GB RAM以及40GB的内存。
 
step1:升级软件。
sudo apt update
sudo apt upgrade
 
step2:安装postgreSQL与postGIS
http://www.linuxdiyf.com/linux/27730.html
 
step3:下载OSM地图数据并导入至postgreSQL数据库中
http://www.linuxdiyf.com/linux/27729.html
 
step4:安装mapnik以及mod_tile
http://www.linuxdiyf.com/linux/27731.html
 
step5:生成Mapnik的样式表
su - osm
wget https://github.com/gravitystorm/openstreetmap-carto/archive/v2.41.0.tar.gz
tar xvf v2.41.0.tar.gz
cd openstreetmap-carto-2.41.0/
./get-shapefiles.sh
carto project.mml > style.xml
exit
其中 get-shapefiles.sh 将会花费大量的时间。
 
step6:配置renderd
编辑renderd配置文件
sudo nano /usr/local/etc/renderd.conf
在[default]区域,改变XML、HOST配置。
XML=/home/osm/openstreetmap-carto-2.41.0/style.xml
HOST=localhost
在[mapnik]区域,改变mapnik的引用路径
plugins_dir=/usr/lib/mapnik/3.0/input/
保存文件。
 
step7:配置apache
安装apache网页服务器:
sudo apt install apache2
创建一个模块来加载文件:
sudo nano /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 nano /etc/apache2/sites-enabled/000-default.conf
粘贴以下行至
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
保存文件并重启Apache
sudo systemctl restart apache2
 
step 8:手动启动renderd
sudo -u 'osm' renderd -f -c /usr/local/etc/renderd.conf
在网页浏览器中输入:your-server-ip/osm_tiles/0/0/0.png,如果出现了一张世界地图,说明搭建的服务器成功能。
 
step 9:后台启动renderd service
通过拷贝mod_tile的init脚本安装renderd init脚本:
sudo cp mod_tile/debian/renderd.init /etc/init.d/renderd
赋予权限
sudo chmod a+x /etc/init.d/renderd
编辑init脚本文件
sudo nano /etc/init.d/renderd
改变下列的变量值
DAEMON=/usr/local/bin/$NAME
DAEMON_ARGS="-c /usr/local/etc/renderd.conf"
RUNASUSER=osm
保存文件。
创建下列文件,使得osm可以操作这些文件
sudo mkdir -p /var/lib/mod_tile
sudo chown osm:osm /var/lib/mod_tile
然后开始renderd service
sudo systemctl daemon-reload
sudo systemctl start renderd
sudo systemctl enable renderd
 
本文永久更新地址:http://www.linuxdiyf.com/linux/27732.html