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

国内关于OpenStreetMap的资料较少,主要通过整理国外网站资料加自己多方尝试,终于成功搭建环境。本教程在Ubuntu16.04中进行了测试,运行良好。Openstreetmap服务器需要至少2GB RAM以及40GB的内存。

step1 : 升级软件。

sudo apt update
sudo apt upgrade

step2: 安装postgreSQL与postGIS

http://blog.csdn.net/sinat_23246437/article/details/54341755

step3:下载OSM地图数据并导入至postgreSQL数据库中

http://blog.csdn.net/sinat_23246437/article/details/54341972

step4:安装mapnik以及mod_tile

http://blog.csdn.net/sinat_23246437/article/details/54342551

step5:添加中文支持。

sudo apt-get -y install fonts-wqy-zenhei
sudo apt-get install unifont
sudo apt-get install ttf-unifont

step6:生成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 将会花费大量的时间。

step7:配置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/

保存文件。

step8 配置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 9 手动启动renderd

sudo -u 'osm' renderd -f -c /usr/local/etc/renderd.conf

在网页浏览器中输入:your-server-ip/osm_tiles/0/0/0.png,如果出现了一张世界地图,说明搭建的服务器成功能。

step 10 后台启动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

你可能感兴趣的:(系统环境搭建)