Nominatim/Installation
原文地址:http://wiki.openstreetmap.org/wiki/Nominatim/Installation
本文介紹的是針對(duì)Nominatim 2.5.x版本的安裝方法。
軟件下載地址:http://www.nominatim.org/release/Nominatim-2.5.1.tar.bz2
本文介紹的是針對(duì)Nominatim 2.5.x版本的安裝方法。
軟件下載地址:http://www.nominatim.org/release/Nominatim-2.5.1.tar.bz2
預(yù)裝軟件:
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系統(tǒng)安裝
在標(biāo)準(zhǔn)的Debian/Ubuntu發(fā)行版系統(tǒng)中,所有的依賴軟件都有安裝包.
##Ubuntu / Debian 7下系統(tǒng)安裝依賴軟件:
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下系統(tǒng)安裝依賴軟件:
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無法正常使用.
可能每個(gè)人電腦上的postgres軟件版本會(huì)有所不同,根據(jù)需求選擇合適的安裝包即可.
##CentOS下系統(tǒng)安裝依賴軟件:
按照Nominatim / Installation / CentOS提供的詳細(xì)步驟在CentOS安裝。
PostgreSQL優(yōu)化
您可能需要調(diào)整PostgreSQL配置,以便后面的步驟可以充分利用您的硬件。您應(yīng)該在postgresql.conf文件中調(diào)整以下參數(shù)。
Ubuntu位置:/etc/postgresql/9.x/main/postgresql.conf
CentOS位置:/var/lib/pgsql/data/postgresql.conf
在一些括號(hào)中的參數(shù)值為32GB,對(duì)于機(jī)器似乎工作性能更佳。調(diào)整到您認(rèn)為合適的設(shè)置。
對(duì)于初次導(dǎo)入,您還應(yīng)該設(shè)置:
fsync = off full_page_writes =off不要忘記在初次導(dǎo)入后重新啟用它們,否則可能會(huì)導(dǎo)致數(shù)據(jù)庫損壞。
不能關(guān)閉自動(dòng)清理,因?yàn)樗_保自動(dòng)分析表格。
###硬件
至少需要2GB的RAM,否則安裝將失敗。對(duì)于導(dǎo)入整個(gè)地球地圖數(shù)據(jù),建議使用的內(nèi)存容量不少于32GB。
對(duì)于整個(gè)地球離線地圖數(shù)據(jù)的導(dǎo)入,您將需要大約800GB的硬盤空間(截至2016年1月,考慮到OSM數(shù)據(jù)庫正在快速增長)。 SSD磁盤將大大有助于加快導(dǎo)入和查詢速度。
在pummelzacken機(jī)器上,實(shí)現(xiàn)全球地圖數(shù)據(jù)的導(dǎo)入需要大約2天。在具有32GB內(nèi)存和標(biāo)準(zhǔn)SATA磁盤的12核機(jī)器上,初始導(dǎo)入(osm2pgsql)大約需要20個(gè)小時(shí),而索引處理又需要250個(gè)小時(shí)。只有8個(gè)并行線程用于此設(shè)置,因?yàn)镮 / O速度是限制因素。同樣的一臺(tái)機(jī)器能夠在大約4個(gè)小時(shí)內(nèi)導(dǎo)入德國地圖。
###第一次安裝
以正常(非root)用戶身份運(yùn)行安裝步驟非常重要。即使在大量數(shù)據(jù)庫數(shù)據(jù)處理的情況下,我們也需要?jiǎng)?chuàng)建一個(gè)普通的用戶,并使用它。這里列出的PostgreSQL命令將不起作用。
###下載Nominatim
下載最新的穩(wěn)定版本并解壓縮它:
###編制Nominatim
編譯源代碼,運(yùn)行
關(guān)于丟失lua庫文件的警告可以忽略。 Nominatim不使用osm2pgsql的lua擴(kuò)展。
###定制安裝
您可以通過創(chuàng)建本地配置文件settings/local.php來自定義Nominatim。看看settings/settings.php中的可用配置設(shè)置。
這是一個(gè)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/');網(wǎng)站設(shè)置應(yīng)該適應(yīng)您的主機(jī)。如果您計(jì)劃導(dǎo)入大型數(shù)據(jù)集(例如歐洲,北美,地球),則還應(yīng)啟用節(jié)點(diǎn)位置的平面節(jié)點(diǎn)存儲(chǔ)。這將節(jié)點(diǎn)坐標(biāo)保存在一個(gè)簡單的文件而不是數(shù)據(jù)庫中,并保存在導(dǎo)入時(shí)間和磁盤存儲(chǔ)上,添加到你的設(shè)置/local.php:
@define('CONST_Osm2pgsql_Flatnode_File','/path/to/flatnode.file');##下載(可選)地圖數(shù)據(jù)
###維基百科排名
維基百科可以作為一個(gè)可選的輔助數(shù)據(jù)源來幫助指出osm功能的重要性。 Nominatim將在沒有這些信息的情況下工作,但是如果安裝了這些信息,將會(huì)提高結(jié)果運(yùn)行效率。這些數(shù)據(jù)是以二進(jìn)制下載形式提供的。
結(jié)合2個(gè)文件大約1.5GB,并增加約30GB到nominatim的安裝大小。他們也增加了一個(gè)小時(shí)左右的安裝時(shí)間。
###UK 郵政編碼
Nominatim可以使用來自外部來源的郵編來改善涉及英國郵政編碼的搜索。這些數(shù)據(jù)可以選擇性地下載:
##創(chuàng)建postgres帳戶
###創(chuàng)建導(dǎo)入數(shù)據(jù)賬戶
導(dǎo)入需要使用與導(dǎo)入帳戶同名的postgres超級(jí)用戶來完成。您可以運(yùn)行以下命令來創(chuàng)建這樣一個(gè)postgres超級(jí)用戶帳戶:
sudo -u postgres createuser -s <您的用戶名>
其中<您的用戶名>是將用于執(zhí)行安裝的帳戶的名稱。您應(yīng)該確保該用戶可以不需要密碼就登錄到數(shù)據(jù)庫(例如使用ident身份驗(yàn)證)。這是大多數(shù)發(fā)行版的默認(rèn)設(shè)置。請參閱信任認(rèn)證以獲取更多信息.
注意:您不得以用戶www-data或root身份運(yùn)行導(dǎo)入。
###創(chuàng)建網(wǎng)站用戶
創(chuàng)建網(wǎng)站用戶www-data作為PostgreSQL數(shù)據(jù)庫角色
createuser -SDR www-data
對(duì)于安裝過程,您必須擁有此用戶。如果您想在其他用戶下運(yùn)行該網(wǎng)站,請參閱安裝Nominatim安裝內(nèi)容.
###Nominatim模塊讀取權(quán)限
一些Nominatim Postgres函數(shù)是在nominatim.so C模塊中實(shí)現(xiàn)的,這個(gè)模塊是在之前的一個(gè)步驟中編譯的。為了成功創(chuàng)建這些函數(shù),PostgreSQL服務(wù)器進(jìn)程必須能夠讀取模塊文件。確保目錄和文件權(quán)限允許讀取文件。例如,如果您在主目錄中下載并編譯了Nominatim,則需要執(zhí)行以下命令:
導(dǎo)入和索引OSM數(shù)據(jù)
首先從Geofabrik下載一個(gè)planet文件或一個(gè)planet擴(kuò)展文件。建議使用PBF格式的文件。
導(dǎo)入可能需要很長時(shí)間,所以您可能希望在屏幕會(huì)話中進(jìn)行導(dǎo)入。現(xiàn)在開始導(dǎo)入:
./utils/setup.php --osm-file <你的星球文件> --all [--osm2pgsql-cache 18000] 2>&1 | tee setup.log
–osm2pgsql-cache參數(shù)是可選的,但強(qiáng)烈推薦用于planet文件的導(dǎo)入。它為osm2pgsql導(dǎo)入部分設(shè)置節(jié)點(diǎn)緩存大小(請參閱osm2pgsql幫助中的-C參數(shù))。 建議使用不少于24GB的RAM空間的電腦進(jìn)行數(shù)據(jù)的導(dǎo)入。適應(yīng)你的可用內(nèi)存,以避免交換。
一個(gè)小國的planet文件將需要一個(gè)小時(shí)的時(shí)間導(dǎo)入,整個(gè)地球的數(shù)據(jù)導(dǎo)入則需要十天的時(shí)間。它產(chǎn)生了很多日志消息,你應(yīng)該仔細(xì)檢查。該命令的最后一部分確保所有輸出都被記錄到一個(gè)文件中。請求支持安裝時(shí),請確保準(zhǔn)備好此日志文件。
我們建議運(yùn)行一個(gè)小一點(diǎn)的osm / pdf文件(例如盧森堡)的導(dǎo)入,然后再嘗試進(jìn)行全面的星球?qū)?#xff0c;以確認(rèn)一切正常。
如果出現(xiàn)問題,則可能需要通過刪除數(shù)據(jù)庫來進(jìn)行清理,因?yàn)樵趪L試重新創(chuàng)建現(xiàn)有數(shù)據(jù)庫時(shí)腳本將失敗。使用這個(gè)命令來做到這一點(diǎn):sudo -u postgres dropdb nominatim
###添加特殊的短語
將國家代碼和國家/地區(qū)名稱添加到搜索索引中:
如果你想能夠搜索像都柏林酒吧的特殊設(shè)施,你需要從這個(gè)維基導(dǎo)入特殊的短語,如下所示:
./utils/specialphrases.php --wiki-import> data / specialphrases.sql psql -d nominatim -f data / specialphrases.sql當(dāng)wiki有變化時(shí),可能會(huì)不時(shí)重復(fù)。每次更新后都不需要重復(fù)。
如果您不需要所有語言的短語,請編輯settings / phrase_settings.php并在文件的開頭刪除不需要的語言。
##建立網(wǎng)站
以下說明將使http://localhost/nominatim
為網(wǎng)站創(chuàng)建目錄,并確保它可以被安裝用戶寫入,并且可以被Apache讀取:
使用必要的符號(hào)鏈接填充網(wǎng)站目錄:
./utils/setup.php --create-website <Apache文檔根目錄> / nominatim
你需要確保CONST_Website_BaseURL的settings / local.php配置了正確的值。往上看。
###配置使用Apache
確保您的Apache配置包含以下目錄的設(shè)置:
/var/www/nominatim /應(yīng)該被替換為你在上面設(shè)置Nominatim網(wǎng)站的目錄.remove
在修改apache配置之后,您需要重新啟動(dòng)apache。
##配置使用Nginx
安裝nginx和php-fpm作為服務(wù)器端,HTML嵌入式腳本語言(FPM-CGI二進(jìn)制),作為守護(hù)程序運(yùn)行并接收從nginx傳遞的快速/ CGI請求。
如果你想更改守護(hù)進(jìn)程來監(jiān)聽unix套接字,而不是配置池偵聽器(在標(biāo)準(zhǔn)的Ubuntu / Debian安裝中的/etc/php5/fpm/pool.d/www.conf)
;注釋掉tcp監(jiān)聽器并添加unix套接字 ;listen = 127.0.0.1:9000 listen = /var/run/php5-fpm.sock :確保守護(hù)程序以正確的用戶身份運(yùn)行 listen.owner = www-data listen.group = www-data listen.mode = 0666通過將位置定義添加到默認(rèn)配置,告訴nginx php文件是特殊的,并將fastcgi_pass傳遞到php-fpm unix套接字。(標(biāo)準(zhǔn)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]了解更多細(xì)節(jié)。
重新啟動(dòng)nginx和php5-fpm服務(wù),并使用您最喜愛的瀏覽器查看您的家庭Nominatim索引OpenStreetMap。
#更新
有很多不同的可能性來更新您的Nominatim數(shù)據(jù)庫。以下部分介紹如何使?jié)B透保持最新狀態(tài)。有關(guān)其他方法的列表,請參閱./utils/update.php --help的輸出。
##安裝最新版本的滲透
###獲取最新版本的滲透
然后通過將以下行添加到您的settings / local.php來告訴Nominatim使用此版本:
@define('CONST_Osmosis_Binary','/ usr / local / bin / osmosis');
設(shè)置更新過程
接下來更新需要被初始化。默認(rèn)情況下,nominatim被配置為使用全局微小差異進(jìn)行更新。
如果你想要一個(gè)不同的更新源,你將需要添加一些設(shè)置settings/local.php。例如,要使用日常國家/地區(qū)從geofabrik中為愛爾蘭提取差異,請?zhí)砑右韵聝?nèi)容:
@define('CONST_Replication_Url','http://download.geofabrik.de/europe/ireland-and-northern-ireland-updates');@define('CONST_Replication_MaxInterval','40000'); //分別處理每個(gè)更新,滲透不能合并多個(gè)更新@define('CONST_Replication_Update_Interval','86400'); //上游發(fā)布差異的頻率@define('CONST_Replication_Recheck_Interval','900'); //如果沒有發(fā)現(xiàn)更新,需要多長時(shí)間睡覺首先,您必須刪除現(xiàn)有的“configuration.txt”,然后運(yùn)行以下命令來創(chuàng)建osmosis配置文件:
./utils/setup.php --osmosis-init
###啟用分層更新
在數(shù)據(jù)庫中更新地點(diǎn)時(shí),需要更新地址中包含此地點(diǎn)的所有地點(diǎn)。這些分層更新在默認(rèn)情況下是禁用的,因?yàn)樗鼈儨p慢了初始導(dǎo)入。使用以下命令啟用它們:
./utils/setup.php --create-functions --enable-diff-updates
###更新Nominatim
以下命令將保持您的數(shù)據(jù)庫不斷更新:
./utils/update.php --import-osmosis-all --no-npi
如果您導(dǎo)入了多個(gè)國家/地區(qū)摘錄并希望保持最新狀態(tài),請查看此問題的腳本。
##安裝美國房屋標(biāo)記數(shù)據(jù)
在美國,Nominatim的OSM實(shí)例使用TIGER地址數(shù)據(jù)來補(bǔ)充仍然稀疏的OSM門牌號(hào)碼數(shù)據(jù)。您可以通過以下步驟將TIGER數(shù)據(jù)添加到您自己的Nominatim實(shí)例中:
###安裝GDAL庫和python綁定
Ubuntu:apt-get install python-gdal CentOS:yum install gdal-python獲取TIGER 2015年的數(shù)據(jù)。您將需要EDGES文件(3,234個(gè)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](https://www.census.gov/)將數(shù)據(jù)轉(zhuǎn)換成SQL語句(存儲(chǔ)在data/tiger中):
./utils/imports.php --parse-tiger <虎頭數(shù)據(jù)目錄>
將數(shù)據(jù)導(dǎo)入您的Nominatim數(shù)據(jù)庫:
./utils/setup.php --import-tiger-data
警告:數(shù)據(jù)的導(dǎo)入可能需要很長時(shí)間,特別是如果你正在導(dǎo)入所有的美國地圖數(shù)據(jù)。
總結(jié)
以上是生活随笔為你收集整理的Nominatim/Installation的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。