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
在一些括號中的參數值為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
下載最新的穩定版本并解壓縮它:
###編制Nominatim
編譯源代碼,運行
關于丟失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將在沒有這些信息的情況下工作,但是如果安裝了這些信息,將會提高結果運行效率。這些數據是以二進制下載形式提供的。
結合2個文件大約1.5GB,并增加約30GB到nominatim的安裝大小。他們也增加了一個小時左右的安裝時間。
###UK 郵政編碼
Nominatim可以使用來自外部來源的郵編來改善涉及英國郵政編碼的搜索。這些數據可以選擇性地下載:
##創建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,則需要執行以下命令:
導入和索引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 --wiki-import> data / specialphrases.sql psql -d nominatim -f data / specialphrases.sql當wiki有變化時,可能會不時重復。每次更新后都不需要重復。
如果您不需要所有語言的短語,請編輯settings / phrase_settings.php并在文件的開頭刪除不需要的語言。
##建立網站
以下說明將使http://localhost/nominatim
為網站創建目錄,并確保它可以被安裝用戶寫入,并且可以被Apache讀取:
使用必要的符號鏈接填充網站目錄:
./utils/setup.php --create-website <Apache文檔根目錄> / nominatim
你需要確保CONST_Website_BaseURL的settings / local.php配置了正確的值。往上看。
###配置使用Apache
確保您的Apache配置包含以下目錄的設置:
/var/www/nominatim /應該被替換為你在上面設置Nominatim網站的目錄.remove
在修改apache配置之后,您需要重新啟動apache。
##配置使用Nginx
安裝nginx和php-fpm作為服務器端,HTML嵌入式腳本語言(FPM-CGI二進制),作為守護程序運行并接收從nginx傳遞的快速/ CGI請求。
如果你想更改守護進程來監聽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](https://www.census.gov/)將數據轉換成SQL語句(存儲在data/tiger中):
./utils/imports.php --parse-tiger <虎頭數據目錄>
將數據導入您的Nominatim數據庫:
./utils/setup.php --import-tiger-data
警告:數據的導入可能需要很長時間,特別是如果你正在導入所有的美國地圖數據。
總結
以上是生活随笔為你收集整理的Nominatim/Installation的全部內容,希望文章能夠幫你解決所遇到的問題。