User Tools

Site Tools


huy:osmnominatim

здгафствуйце, дагагия дгузья. сиводня мы будзем капацца ф слановам дзирьме. Патчиму ? Патамушта постргысыкылы. Мы паставим и настроем ривирсивный искациль абйектаф па каардзинатам ака nominatim.

как ви узе дагадалес, длйа этава нам панадабицца линугз, прйамыйе руки и парсер падонкафскава езыка.

экскременты будем правадиць на el7.

1. паставим зильонава слоника и зильоную жабу. ну и посткис

yum install https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-7-x86_64/pgdg-redhat10-10-2.noarch.rpm
 
zfs create -o compression=lz4 rpool/pgsql
zfs set mountpoint=/var/lib/pgsql rpool/pgsql
 
yum -y install java sudo epel-release postgresql10-contrib postgis24_10-client.x86_64 postgis24_10-devel.x86_64 postgis24_10-utils.x86_64 postgresql10-server

2. паставим дивэлапирскуйу хуйню

yum -y install git cmake make gcc gcc-c++ libtool policycoreutils-python \
                    libpqxx-devel proj-epsg \
                    bzip2-devel proj-devel geos-devel libxml2-devel boost-devel expat-devel zlib-devel

3. паставим кусок гавна версии 7.0

yum -y install php70w-pdo php70w-mcrypt php70w-xml php70w-fpm php70w-common php70w-imap php70w-tidy php70w-mysql php70w-bcmath php70w-mbstring php70w-pear php70w-gd php70w-soap php70w-cli php70w-xmlrpc php70w-process php70w-devel php70w-pecl-memcache gcc make php70-ioncube-loader git zlib-devel php70w-opcache php70w-pgsql php70w php70w-pear php-pear-DB php70w-intl

4. паставим собнанныйе вот эцими руками осцээмтулзы

yum -y install http://otov.shop/rpms/x86_64/osmctools-0.7-2.el7.centos.x86_64.rpm
/usr/bin/osmconvert
/usr/bin/osmfilter
/usr/bin/osmupdate

5. ставим альбом Оззи Озборна 1995 года - без него никак

mkdir -p /srv/osmosis
cd  /srv/osmosis
curl http://bretth.dev.openstreetmap.org/osmosis-build/osmosis-latest.tgz | tar -zxf  -
ln -s /srv/osmosis/bin/osmosis /usr/bin/

6. несем братишке покушать запускаим зилёнава слоника

export PGSETUP_INITDB_OPTIONS="-E UTF-8"
postgresql-10-setup initdb
systemctl enable postgresql-10
cat > /var/lib/pgsql/10/data/postgresql.conf << _EOF 
autovacuum = off
datestyle = 'iso, mdy'
default_text_search_config = 'pg_catalog.english'
effective_cache_size = 64GB
effective_io_concurrency = 30   
fsync = off
lc_messages = 'en_US.UTF-8'
lc_monetary = 'en_US.UTF-8'
lc_numeric = 'en_US.UTF-8'
lc_time = 'en_US.UTF-8' 
log_filename = 'postgresql-%a.log'
logging_collector = on  
log_rotation_age = 1d   
log_rotation_size = 0   
log_timezone = 'Europe/Berlin'
log_truncate_on_rotation = on   
max_connections = 300   
shared_buffers = 32GB   
synchronous_commit = off
temp_buffers = 100MB
timezone = 'Europe/Berlin'
wal_buffers = 16MB
work_mem = 1GB
_EOF
service postgresql-10 restart

7. Собссна качаем и настраиваем наминацим

export USERHOME=/srv/nominatim
mkdir -p $USERHOME
sudo -u postgres createuser apache
sudo tee /etc/httpd/conf.d/nominatim.conf << EOFAPACHECONF
<Directory "$USERHOME/Nominatim/build/website">
  Options FollowSymLinks MultiViews
  AddType text/html   .php
  DirectoryIndex search.php
  Require all granted
</Directory>
 
Alias /nominatim $USERHOME/Nominatim/build/website
EOFAPACHECONF
 
cd $USERHOME
git clone --recursive git://github.com/openstreetmap/Nominatim.git
cd Nominatim
wget -O data/country_osm_grid.sql.gz http://www.nominatim.org/data/country_grid.sql.gz
mkdir build
cd build
cmake $USERHOME/Nominatim
make
tee settings/local.php << EOF
<?php
 @define('CONST_Database_Web_User', 'apache');
 @define('CONST_Website_BaseURL', '/nominatim/');
 @define('CONST_Osm2pgsql_Flatnode_File', '/var/lib/pgsql/flatnode.file');
EOF

8. Импарцируем (и не забывайэм - ни большы трьох литрау алкахоля на рыла)

zfs destroy rpool/temp
zfs create -o compression=lz4 rpool/temp
sudo -u postgres createuser apache
chown postgres:postgres /rpool/temp
chown -R postgres:postgres /var/lib/pgsql
sudo -u postgres dropdb nominatim
cd /rpool/temp
 
COUNTRIES="europe/andorra europe/cyprus"
for country in $COUNTRIES; do 
 wget http://download.geofabrik.de/$country-latest.osm.pbf
done
 
for i in `ls *.pbf|cut -d. -f1,2`;
do 
 osmconvert $i.pbf -o=$i.o5m
done
osmconvert `ls *.o5m` -o=all.o5m
chown -R postgres:postgres /rpool/temp/
sudo -u postgres /srv/nominatim/Nominatim/build/./utils/setup.php --osm-file /rpool/temp/all.o5m --all --osm2pgsql-cache 28000
chown -R postgres:postgres /srv/nominatim/Nominatim
sudo -u postgres bash -x /boot/update-nominatim.sh
apachectl start

9. пьом литр вотки, лицим на кипр, прасыпаимса там, запускаем гэпээс лакатар, апридзиляем каардинаты, аткрываем наш сервер па http://server/nominatim и узнаем, гдзе мы. татчнее не узнаем, патамушта:

1. апач не запущен

2. фаерволлд не патушен

3. селинукс не атключон

huy/osmnominatim.txt · Last modified: 2018/04/22 12:43 by slayer