Nominatim/Installation

原文地址:http://wiki.openstreetmap.org/wiki/Nominatim/Installation
本文介绍的是针对Nominatim 2.5.x版本的安装方法。
软件下载地址:http://www.nominatim.org/release/Nominatim-2.5.1.tar.bz2
本文介绍的是针对Nominatim 2.5.x版本的安装方法。
软件下载地址:http://www.nominatim.org/release/Nominatim-2.5.1.tar.bz2

预装软件:
GCC compiler http://gcc.gnu.org/
PostgreSQL http://www.postgresql.org/ (9.0 or later)
Proj4 http://trac.osgeo.org/proj/
GEOS http://trac.osgeo.org/geos/
PostGIS http://postgis.refractions.net/ (1.5 or later)
PHP5 http://php.net/ (both apache and command line)
PHP-pgsql
PEAR::DB http://pear.php.net/package/DB
wget
boost http://www.boost.org (1.48 or later)
osmosis http://wiki.openstreetmap.org/wiki/Osmosis

Ubuntu/Debian系统安装

在标准的Debian/Ubuntu发行版系统中,所有的依赖软件都有安装包.

Ubuntu / Debian 7下系统安装依赖软件:

sudo apt-get install build-essential libxml2-dev libpq-dev libbz2-dev libtool automake libproj-dev libboost-dev libboost-system-dev libboost-filesystem-dev libboost-thread-dev libexpat-dev gcc proj-bin libgeos-c1 libgeos++-dev libexpat-dev php5 php-pear php5-pgsql php5-json php-db libapache2-mod-php5 postgresql postgis postgresql-contrib postgresql-9.3-postgis-2.1 postgresql-server-dev-9.3 wget

Debian 8下系统安装依赖软件:

sudo apt-get install build-essential libxml2-dev libpq-dev libbz2-dev libtool automake libproj-dev libboost-dev libboost-system-dev libboost-filesystem-dev libboost-thread-dev libexpat-dev gcc proj-bin libgeos-c1 libgeos++-dev libexpat-dev php5 php-pear php5-pgsql php5-json php-db libapache2-mod-php5 postgresql postgis postgresql-contrib postgresql-9.4-postgis-2.1 postgresql-server-dev-9.4 wget

注意:只能安装php5,php7无法正常使用.

可能每个人电脑上的postgres软件版本会有所不同,根据需求选择合适的安装包即可.

CentOS下系统安装依赖软件:

按照Nominatim / Installation / CentOS提供的详细步骤在CentOS安装。

PostgreSQL优化
您可能需要调整PostgreSQL配置,以便后面的步骤可以充分利用您的硬件。您应该在postgresql.conf文件中调整以下参数。

Ubuntu位置:/etc/postgresql/9.x/main/postgresql.conf
CentOS位置:/var/lib/pgsql/data/postgresql.conf

shared_buffers(2GB)
maintenance_work_mem(10GB)
work_mem(50MB)
effective_cache_size(24GB)
synchronous_commit = off
checkpoint_segments = 100(仅适用于PostgreSQL <= 9.4)
checkpoint_timeout = 10min
checkpoint_completion_target = 0.9

在一些括号中的参数值为32GB,对于机器似乎工作性能更佳。调整到您认为合适的设置。

对于初次导入,您还应该设置:

fsync = off
full_page_writes =off

不要忘记在初次导入后重新启用它们,否则可能会导致数据库损坏。

不能关闭自动清理,因为它确保自动分析表格。

硬件

至少需要2GB的RAM,否则安装将失败。对于导入整个地球地图数据,建议使用的内存容量不少于32GB。

对于整个地球离线地图数据的导入,您将需要大约800GB的硬盘空间(截至2016年1月,考虑到OSM数据库正在快速增长)。 SSD磁盘将大大有助于加快导入和查询速度。

pummelzacken机器上,实现全球地图数据的导入需要大约2天。在具有32GB内存和标准SATA磁盘的12核机器上,初始导入(osm2pgsql)大约需要20个小时,而索引处理又需要250个小时。只有8个并行线程用于此设置,因为I / O速度是限制因素。同样的一台机器能够在大约4个小时内导入德国地图。

第一次安装

以正常(非root)用户身份运行安装步骤非常重要。即使在大量数据库数据处理的情况下,我们也需要创建一个普通的用户,并使用它。这里列出的PostgreSQL命令将不起作用。

下载Nominatim

下载最新的稳定版本并解压缩它:

wget http://www.nominatim.org/release/Nominatim-2.5.1.tar.bz2
tar xvf Nominatim-2.5.1.tar.bz2

编制Nominatim

编译源代码,运行

cd Nominatim-2.5.1
./configure

关于丢失lua库文件的警告可以忽略。 Nominatim不使用osm2pgsql的lua扩展。

定制安装

您可以通过创建本地配置文件settings/local.php来自定义Nominatim。看看settings/settings.php中的可用配置设置。

这是一个local.php的例子:

<?PHP
//Paths
@define'CONST_Postgresql_Version''9.3');
@define'CONST_Postgis_Version''2.1');

// Website settings
@define'CONST_Website_BaseURL''http://mysite/nominatim/');

网站设置应该适应您的主机。如果您计划导入大型数据集(例如欧洲,北美,地球),则还应启用节点位置的平面节点存储。这将节点坐标保存在一个简单的文件而不是数据库中,并保存在导入时间和磁盘存储上,添加到你的设置/local.php:

@define'CONST_Osm2pgsql_Flatnode_File''/path/to/flatnode.file');

下载(可选)地图数据

维基百科排名

维基百科可以作为一个可选的辅助数据源来帮助指出osm功能的重要性。 Nominatim将在没有这些信息的情况下工作,但是如果安装了这些信息,将会提高结果运行效率。这些数据是以二进制下载形式提供的。

wget --output-document = data / wikipedia_article.sql.bin http://www.nominatim.org/data/wikipedia_article.sql.bin
wget --output-document = data / wikipedia_redirect.sql.bin http://www.nominatim.org/data/wikipedia_redirect.sql.bin

结合2个文件大约1.5GB,并增加约30GB到nominatim的安装大小。他们也增加了一个小时左右的安装时间。

UK 邮政编码

Nominatim可以使用来自外部来源的邮编来改善涉及英国邮政编码的搜索。这些数据可以选择性地下载:

wget --output-document = data / gb_postcode_data.sql.gz http://www.nominatim.org/data/gb_postcode_data.sql.gz

创建postgres帐户

创建导入数据账户

导入需要使用与导入帐户同名的postgres超级用户来完成。您可以运行以下命令来创建这样一个postgres超级用户帐户:

sudo -u postgres createuser -s <您的用户名>
其中<您的用户名>是将用于执行安装的帐户的名称。您应该确保该用户可以不需要密码就登录到数据库(例如使用ident身份验证)。这是大多数发行版的默认设置。请参阅信任认证以获取更多信息.

注意:您不得以用户www-data或root身份运行导入。

创建网站用户

创建网站用户www-data作为PostgreSQL数据库角色
createuser -SDR www-data
对于安装过程,您必须拥有此用户。如果您想在其他用户下运行该网站,请参阅安装Nominatim安装内容.

Nominatim模块读取权限

一些Nominatim Postgres函数是在nominatim.so C模块中实现的,这个模块是在之前的一个步骤中编译的。为了成功创建这些函数,PostgreSQL服务器进程必须能够读取模块文件。确保目录和文件权限允许读取文件。例如,如果您在主目录中下载并编译了Nominatim,则需要执行以下命令:

chmod +x 〜/src
chmod +x 〜/src/Nominatim
chmod +x 〜/src/Nominatim/module

导入和索引OSM数据
首先从Geofabrik下载一个planet文件或一个planet扩展文件。建议使用PBF格式的文件。

导入可能需要很长时间,所以您可能希望在屏幕会话中进行导入。现在开始导入:

./utils/setup.php --osm-file <你的星球文件> --all [--osm2pgsql-cache 18000] 2>&1 | tee setup.log

–osm2pgsql-cache参数是可选的,但强烈推荐用于planet文件的导入。它为osm2pgsql导入部分设置节点缓存大小(请参阅osm2pgsql帮助中的-C参数)。 建议使用不少于24GB的RAM空间的电脑进行数据的导入。适应你的可用内存,以避免交换。

一个小国的planet文件将需要一个小时的时间导入,整个地球的数据导入则需要十天的时间。它产生了很多日志消息,你应该仔细检查。该命令的最后一部分确保所有输出都被记录到一个文件中。请求支持安装时,请确保准备好此日志文件。

我们建议运行一个小一点的osm / pdf文件(例如卢森堡)的导入,然后再尝试进行全面的星球导入,以确认一切正常。

如果出现问题,则可能需要通过删除数据库来进行清理,因为在尝试重新创建现有数据库时脚本将失败。使用这个命令来做到这一点:sudo -u postgres dropdb nominatim

添加特殊的短语

将国家代码和国家/地区名称添加到搜索索引中:

./utils/specialphrases.php --countries> data / specialphrases_countries.sql
psql -d nominatim -f data / specialphrases_countries.sql

如果你想能够搜索像都柏林酒吧的特殊设施,你需要从这个维基导入特殊的短语,如下所示:

./utils/specialphrases.php --wiki-import> data / specialphrases.sql
psql -d nominatim -f data / specialphrases.sql

当wiki有变化时,可能会不时重复。每次更新后都不需要重复。

如果您不需要所有语言的短语,请编辑settings / phrase_settings.php并在文件的开头删除不需要的语言。

建立网站

以下说明将使http://localhost/nominatim
为网站创建目录,并确保它可以被安装用户写入,并且可以被Apache读取:

sudo mkdir -m 755 <Apache文件根目录> / nominatim
sudo chown <您的用户名> <Apache文档根目录> / nominatim

使用必要的符号链接填充网站目录:
./utils/setup.php --create-website <Apache文档根目录> / nominatim
你需要确保CONST_Website_BaseURL的settings / local.php配置了正确的值。往上看。

配置使用Apache

确保您的Apache配置包含以下目录的设置:

<Directory "/var/www/nominatim/">
    Options FollowSymLinks MultiViews
    AddType text/html   .php     
</Directory>

/var/www/nominatim /应该被替换为你在上面设置Nominatim网站的目录.remove

在修改apache配置之后,您需要重新启动apache。

配置使用Nginx

安装nginx和php-fpm作为服务器端,HTML嵌入式脚本语言(FPM-CGI二进制),作为守护程序运行并接收从nginx传递的快速/ CGI请求。

Ubuntu# apt-get install nginx php5-fpm
CentOS# yum install nginx php-fpm

如果你想更改守护进程来监听unix套接字,而不是配置池侦听器(在标准的Ubuntu / Debian安装中的/etc/php5/fpm/pool.d/www.conf)

;注释掉tcp监听器并添加unix套接字
;listen = 127.0.0.1:9000
listen = /var/run/php5-fpm.sock
:确保守护程序以正确的用户身份运行
listen.owner = www-data
listen.group = www-data
listen.mode = 0666

通过将位置定义添加到默认配置,告诉nginx php文件是特殊的,并将fastcgi_pass传递到php-fpm unix套接字。(标准Ubuntu/Debian安装中的/etc/nginx/sites-available/default)

location ~ [^/]\.php(/|$) {
    fastcgi_split_path_info ^(.+?\.php)(/.*)$;
    if (!-f $document_root$fastcgi_script_name) {
        return 404;
    }
    fastcgi_pass unix:/var/run/php5-fpm.sock;
    fastcgi_index index.php;
    include fastcgi_params;
}

注意:如果您使用的是Debian 8.1 / Jesse或更新版本,则必须更改include fastcgi_params;在上面的配置代码中包含fastcgi.conf;请参考[1]了解更多细节。

重新启动nginx和php5-fpm服务,并使用您最喜爱的浏览器查看您的家庭Nominatim索引OpenStreetMap。

更新

有很多不同的可能性来更新您的Nominatim数据库。以下部分介绍如何使渗透保持最新状态。有关其他方法的列表,请参阅./utils/update.php –help的输出。

安装最新版本的渗透

获取最新版本的渗透

然后通过将以下行添加到您的settings / local.php来告诉Nominatim使用此版本:

@define('CONST_Osmosis_Binary','/ usr / local / bin / osmosis');
设置更新过程
接下来更新需要被初始化。默认情况下,nominatim被配置为使用全局微小差异进行更新。

如果你想要一个不同的更新源,你将需要添加一些设置settings/local.php。例如,要使用日常国家/地区从geofabrik中为爱尔兰提取差异,请添加以下内容:

 @define'CONST_Replication_Url''http://download.geofabrik.de/europe/ireland-and-northern-ireland-updates');
 @define'CONST_Replication_MaxInterval''40000'); //分别处理每个更新,渗透不能合并多个更新
 @define'CONST_Replication_Update_Interval''86400'); //上游发布差异的频率
 @define'CONST_Replication_Recheck_Interval''900'); //如果没有发现更新,需要多长时间睡觉

首先,您必须删除现有的“configuration.txt”,然后运行以下命令来创建osmosis配置文件:

./utils/setup.php --osmosis-init

启用分层更新

在数据库中更新地点时,需要更新地址中包含此地点的所有地点。这些分层更新在默认情况下是禁用的,因为它们减慢了初始导入。使用以下命令启用它们:

./utils/setup.php --create-functions --enable-diff-updates

更新Nominatim

以下命令将保持您的数据库不断更新:

./utils/update.php --import-osmosis-all --no-npi
如果您导入了多个国家/地区摘录并希望保持最新状态,请查看此问题的脚本。

安装美国房屋标记数据

在美国,Nominatim的OSM实例使用TIGER地址数据来补充仍然稀疏的OSM门牌号码数据。您可以通过以下步骤将TIGER数据添加到您自己的Nominatim实例中:

安装GDAL库和python绑定

Ubuntu:apt-get install python-gdal
CentOS:yum install gdal-python

获取TIGER 2015年的数据。您将需要EDGES文件(3,234个zip文件,总共11GB)

 wget -r ftp://mirror1.shellbot.com/census/geo/tiger/TIGER2015/EDGES/
 (1gb/s preferred mirror) [MIRROR HOSTED BY SHELLBOT, LTD](https://www.shellbot.com/).
 ```
 或者:

wget -r ftp://ftp2.census.gov/geo/tiger/TIGER2015/EDGES/
(500kb/s original source) HOSTED BY THE US CENSUS BUREAU
``
将数据转换成SQL语句(存储在data/tiger中):
./utils/imports.php –parse-tiger <虎头数据目录>
将数据导入您的Nominatim数据库:
./utils/setup.php –import-tiger-data`
警告:数据的导入可能需要很长时间,特别是如果你正在导入所有的美国地图数据。

猜你喜欢

转载自blog.csdn.net/pengrui18/article/details/78777561