This guide will walk you through the installation and setup of Nominatim on a Debian-based system.
Step 1: Install Required Packages
Update your package list and install the necessary packages:
apt-get update
apt-get install build-essential cmake g++ libboost-dev libboost-system-dev \
libboost-filesystem-dev libexpat1-dev zlib1g-dev \
libbz2-dev libpq-dev \
postgresql-server-dev-13 postgresql-13-postgis-3 \
postgresql-contrib-13 postgresql-13-postgis-3-scripts \
php-cli php-pgsql php-intl libicu-dev python3-dotenv \
python3-psycopg2 python3-psutil python3-jinja2 \
python3-icu python3-datrieStep 2: Install and Configure Sudo
Install sudo and add the necessary paths:
apt-get install sudo
export PATH=$PATH:/usr/sbin/:/sbinCreate the nominatim user:
useradd -d /srv/nominatim -s /bin/bash -m nominatimSet environment variables for the nominatim user:
export USERNAME=nominatim
export USERHOME=/srv/nominatimSet permissions for the user home directory:
chmod a+x $USERHOMECreate PostgreSQL users:
sudo -u postgres createuser -s $USERNAME
sudo -u postgres createuser www-dataStep 3: Install Nominatim
Switch to the nominatim user and download Nominatim:
cd $USERHOME
su - nominatim
wget https://nominatim.org/release/Nominatim-4.1.0.tar.bz2
tar xf Nominatim-4.1.0.tar.bz2Create build directory and compile Nominatim:
export USERNAME=nominatim
export USERHOME=/srv/nominatim
mkdir $USERHOME/build
cd $USERHOME/build
cmake $USERHOME/Nominatim-4.1.0
make
exit # or sudo su
cd $USERHOME/build
make installCreate project directories:
mkdir $USERHOME/nominatim-project
mkdir $USERHOME/nominatim-project/websiteDownload OSM data:
export PATH=$PATH:/usr/sbin/:/sbin
cd /srv/nominatim/nominatim-project
wget https://download.geofabrik.de/asia/bangladesh-latest.osm.pbfImport OSM data into Nominatim:
su - nominatim
cd /srv/nominatim/nominatim-project/
nominatim import --osm-file bangladesh-latest.osm.pbf 2>&1 | tee setup.logStep 4: Set Up Apache2
Install Apache2 and PHP module:
su
apt-get install apache2 libapache2-mod-phpConfigure Apache2 for Nominatim:
export USERNAME=nominatim
export USERHOME=/srv/nominatim
tee /etc/apache2/conf-available/nominatim.conf << EOFAPACHECONF
<Directory "/srv/nominatim/nominatim-project/website">
Options FollowSymLinks MultiViews
AddType text/html .php
DirectoryIndex search.php
Require all granted
### If we process the deny rules before the allow rules, we can effectively create a whitelist of allowed IP addresses.
#Order deny,allow
#deny from all
#allow from 127.0.0.1
</Directory>
Alias /nominatim /srv/nominatim/nominatim-project/website
EOFAPACHECONFEnable the Nominatim configuration and restart Apache2:
export PATH=$PATH:/usr/sbin/:/sbin
a2enconf nominatim
systemctl restart apache2Summary
By following these steps, you have successfully installed and configured Nominatim on your system. Nominatim should now be running and accessible via your Apache web server.