这里写自定义目录标题
记录部署Nominatim地图服务器
配置这个的时候找过好多文章,都太旧了,一个抄一个的。所以才记录下自己的过程。
我是linux系统新手,面向百度开发。
GitHub项目地址:https://github.com/osm-search/Nominatim
介绍:Nominatim (from the Latin, ‘by name’) is a tool to search OpenStreetMap data by name and address (geocoding) and to generate synthetic addresses of OSM points (reverse geocoding). An instance with up-to-date data can be found at https://nominatim.openstreetmap.org. Nominatim is also used as one of the sources for the Search box on the OpenStreetMap home page.
文档:https://nominatim.org/release-docs/develop/
配置过程
我的系统环境,阿里云ECS,4核,16G内存,Ubuntu 20.04系统。
首先根据文档的基础安装部分,
执行:
然后安装postgresql数据库
sudo apt update -qq
sudo apt install -y php-cgi
sudo apt install -y build-essential cmake g++ libboost-dev libboost-system-dev \
libboost-filesystem-dev libexpat1-dev zlib1g-dev \
libbz2-dev libpq-dev \
postgresql-12-postgis-3 \
postgresql-contrib-12 postgresql-12-postgis-3-scripts \
php-cli php-pgsql php-intl libicu-dev python3-dotenv \
python3-psycopg2 python3-psutil python3-jinja2 \
python3-icu python3-datrie python3-yaml git
安装其他环境
pip install osmium
sudo apt install vagrant vagrant-libvirt libvirt-daemon nfs-kernel-server
然后修改数据库配置文件/etc/postgresql/12/main/postgresql.conf
最
最重要的部分是要把 fsync和full_page_writes改成off。在导入数据库完成后,要记得再改回来。
然后重启数据库
sudo systemctl restart postgresql
文档中说专用账户这部分,我没有操作,太麻烦了。只要不用root用户就行了。
我的用户用是ecs-user,跳过了专用账户部分。安装路径我也嫌放到srv下太麻烦,就直接如下执行了
export USERNAME=ecs-user
export USERHOME=~/nominatim
sudo chmod a+x $USERHOME
然后创建数据库用户
sudo -u postgres createuser -s ecs-user
sudo -u postgres createuser www-data
编译安装
进入到设置的USERHOME目录
cd $USERHOME
很可能会报错目录不存在,如果不存在就自己
mkdir nominatim
创建完目录后,
cd $USERHOME
git clone --recursive https://github.com/openstreetmap/Nominatim.git
cd Nominatim
wget -O data/country_osm_grid.sql.gz https://www.nominatim.org/data/country_grid.sql.gz
mkdir $USERHOME/build
cd $USERHOME/build
cmake $USERHOME/Nominatim
make
sudo make install
执行cmake的时候可能会报错,不过好像没有什么影响
上面这段就完全跟文档里面一样就完了。
然后导入数据,这部分直接看文档这部分
或者如下这样导入,最简单省事,但是如果想要更新就有点麻烦了.
因为我之前配置的目录是~/nominatim/Nominatim/
所以进到~/nominatim/Nominatim/data目录下
我只需要中国的数据,所以
wget http://download.geofabrik.de/asia/china-latest.osm.pbf
下载完成以后,执行
nominatim import --osm-file china-latest.osm.pbf
然后等待好几个小时,等数据库导入完成后执行
nominatim admin --check-database
检查数据库都成功完成,可能会报没有index没有完成,然后根据提示执行
nominatim index
最后记得将数据配置文件的fsync和full_page_writes改回去
部署服务器
安装apache2
sudo apt install -y apache2 libapache2-mod-php
图一和图二红线以下部分不知道有啥用,照着配置以后,怎么都不起效果。访问一直是没有权限。
我实际的部署是这样的,在把文档里面的配置都照做以后到apache2的目录下的sites-available下,创建conf文件
cd /etc/apache2/sites-available
sudo vi nominatim.conf
文件内容如下
然后再到sites-enabled目录,通过软连接创建出来
然后到
cd /var/www
mkdir nominatim
cd nominatim
在上面,第二种导入数据库方法,完成后会在data目录下自动生成一个website目录,将website下的所有文件复制到/var/www/nominatim
然后将上面图一部分改为下图这样即可