diff --git a/CMakeLists.txt b/CMakeLists.txt
index 691c9adc..5f8e4611 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -6,7 +6,7 @@
#
#-----------------------------------------------------------------------------
-cmake_minimum_required(VERSION 2.8 FATAL_ERROR)
+cmake_minimum_required(VERSION 3.0 FATAL_ERROR)
list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake")
@@ -238,7 +238,14 @@ if (BUILD_IMPORTER)
endif()
if (BUILD_OSM2PGSQL)
- install(TARGETS osm2pgsql RUNTIME DESTINATION ${NOMINATIM_LIBDIR})
+ if (${CMAKE_VERSION} VERSION_LESS 3.13)
+ # Installation of subdirectory targets was only introduced in 3.13.
+ # So just copy the osm2pgsql file for older versions.
+ install(PROGRAMS ${PROJECT_BINARY_DIR}/osm2pgsql/osm2pgsql
+ DESTINATION ${NOMINATIM_LIBDIR})
+ else()
+ install(TARGETS osm2pgsql RUNTIME DESTINATION ${NOMINATIM_LIBDIR})
+ endif()
endif()
if (BUILD_MODULE)
diff --git a/vagrant/Install-on-Centos-7.sh b/vagrant/Install-on-Centos-7.sh
index 00915272..eb16f873 100755
--- a/vagrant/Install-on-Centos-7.sh
+++ b/vagrant/Install-on-Centos-7.sh
@@ -106,36 +106,6 @@ sudo chown vagrant /srv/nominatim #DOCS:
sudo -u postgres createuser -s $USERNAME
sudo -u postgres createuser apache
-#
-# Setting up the Apache Webserver
-# -------------------------------
-#
-# You need to create an alias to the website directory in your apache
-# configuration. Add a separate nominatim configuration to your webserver:
-
-#DOCS:```sh
-sudo tee /etc/httpd/conf.d/nominatim.conf << EOFAPACHECONF
-
- Options FollowSymLinks MultiViews
- AddType text/html .php
- DirectoryIndex search.php
- Require all granted
-
-
-Alias /nominatim $USERHOME/build/website
-EOFAPACHECONF
-#DOCS:```
-
-sudo sed -i 's:#.*::' /etc/httpd/conf.d/nominatim.conf #DOCS:
-
-#
-# Then reload apache
-#
-
- sudo systemctl enable httpd
- sudo systemctl restart httpd
-
-
#
# Installing Nominatim
# ====================
@@ -164,11 +134,48 @@ fi #DOCS:
# then configure and build Nominatim in there:
#DOCS: :::sh
- cd $USERHOME
- mkdir build
- cd build
+ mkdir $USERHOME/build
+ cd $USERHOME/build
cmake $USERHOME/Nominatim
make
+ sudo make install
+
+#
+# Setting up the Apache Webserver
+# -------------------------------
+#
+# The webserver should serve the php scripts from the website directory of your
+# [project directory](../admin/import.md#creating-the-project-directory).
+# Therefore set up a project directory and populate the website directory:
+#
+ mkdir $USERHOME/nominatim-project
+ cd $USERHOME/nominatim-project
+ nominatim refresh --website
+#
+# You need to create an alias to the website directory in your apache
+# configuration. Add a separate nominatim configuration to your webserver:
+
+#DOCS:```sh
+sudo tee /etc/httpd/conf.d/nominatim.conf << EOFAPACHECONF
+
+ Options FollowSymLinks MultiViews
+ AddType text/html .php
+ DirectoryIndex search.php
+ Require all granted
+
+
+Alias /nominatim $USERHOME/nominatim-project/website
+EOFAPACHECONF
+#DOCS:```
+
+sudo sed -i 's:#.*::' /etc/httpd/conf.d/nominatim.conf #DOCS:
+
+#
+# Then reload apache
+#
+
+ sudo systemctl enable httpd
+ sudo systemctl restart httpd
#
# Adding SELinux Security Settings
@@ -178,11 +185,11 @@ fi #DOCS:
# with a web server accessible from the Internet. At a minimum the
# following SELinux labeling should be done for Nominatim:
- sudo semanage fcontext -a -t httpd_sys_content_t "$USERHOME/Nominatim/(website|lib|settings)(/.*)?"
- sudo semanage fcontext -a -t httpd_sys_content_t "$USERHOME/build/(website|lib|settings)(/.*)?"
- sudo semanage fcontext -a -t lib_t "$USERHOME/build/module/nominatim.so"
- sudo restorecon -R -v $USERHOME/Nominatim
- sudo restorecon -R -v $USERHOME/build
+ sudo semanage fcontext -a -t httpd_sys_content_t "/usr/local/nominatim/lib/lib-php(/.*)?"
+ sudo semanage fcontext -a -t httpd_sys_content_t "$USERHOME/nominatim-project/website(/.*)?"
+ sudo semanage fcontext -a -t lib_t "$USERHOME/nominatim-project/module/nominatim.so"
+ sudo restorecon -R -v /usr/local/lib/nominatim
+ sudo restorecon -R -v $USERHOME/nominatim-project
# You need to create a minimal configuration file that tells nominatim
diff --git a/vagrant/Install-on-Centos-8.sh b/vagrant/Install-on-Centos-8.sh
index 548f8c9c..1cf93a1f 100755
--- a/vagrant/Install-on-Centos-8.sh
+++ b/vagrant/Install-on-Centos-8.sh
@@ -100,36 +100,6 @@ sudo chown vagrant /srv/nominatim #DOCS:
sudo -u postgres createuser -s $USERNAME
sudo -u postgres createuser apache
-#
-# Setting up the Apache Webserver
-# -------------------------------
-#
-# You need to create an alias to the website directory in your apache
-# configuration. Add a separate nominatim configuration to your webserver:
-
-#DOCS:```sh
-sudo tee /etc/httpd/conf.d/nominatim.conf << EOFAPACHECONF
-
- Options FollowSymLinks MultiViews
- AddType text/html .php
- DirectoryIndex search.php
- Require all granted
-
-
-Alias /nominatim $USERHOME/build/website
-EOFAPACHECONF
-#DOCS:```
-
-sudo sed -i 's:#.*::' /etc/httpd/conf.d/nominatim.conf #DOCS:
-
-#
-# Then reload apache
-#
-
- sudo systemctl enable httpd
- sudo systemctl restart httpd
-
-
#
# Installing Nominatim
# ====================
@@ -158,11 +128,48 @@ fi #DOCS:
# then configure and build Nominatim in there:
#DOCS: :::sh
- cd $USERHOME
- mkdir build
- cd build
+ mkdir $USERHOME/build
+ cd $USERHOME/build
cmake $USERHOME/Nominatim
make
+ sudo make install
+
+#
+# Setting up the Apache Webserver
+# -------------------------------
+#
+# The webserver should serve the php scripts from the website directory of your
+# [project directory](../admin/import.md#creating-the-project-directory).
+# Therefore set up a project directory and populate the website directory:
+#
+ mkdir $USERHOME/nominatim-project
+ cd $USERHOME/nominatim-project
+ nominatim refresh --website
+#
+# You need to create an alias to the website directory in your apache
+# configuration. Add a separate nominatim configuration to your webserver:
+
+#DOCS:```sh
+sudo tee /etc/httpd/conf.d/nominatim.conf << EOFAPACHECONF
+
+ Options FollowSymLinks MultiViews
+ AddType text/html .php
+ DirectoryIndex search.php
+ Require all granted
+
+
+Alias /nominatim $USERHOME/nominatim-project/website
+EOFAPACHECONF
+#DOCS:```
+
+sudo sed -i 's:#.*::' /etc/httpd/conf.d/nominatim.conf #DOCS:
+
+#
+# Then reload apache
+#
+
+ sudo systemctl enable httpd
+ sudo systemctl restart httpd
#
# Adding SELinux Security Settings
@@ -172,11 +179,11 @@ fi #DOCS:
# with a web server accessible from the Internet. At a minimum the
# following SELinux labeling should be done for Nominatim:
- sudo semanage fcontext -a -t httpd_sys_content_t "$USERHOME/Nominatim/(website|lib|settings)(/.*)?"
- sudo semanage fcontext -a -t httpd_sys_content_t "$USERHOME/build/(website|lib|settings)(/.*)?"
- sudo semanage fcontext -a -t lib_t "$USERHOME/build/module/nominatim.so"
- sudo restorecon -R -v $USERHOME/Nominatim
- sudo restorecon -R -v $USERHOME/build
+ sudo semanage fcontext -a -t httpd_sys_content_t "/usr/local/nominatim/lib/lib-php(/.*)?"
+ sudo semanage fcontext -a -t httpd_sys_content_t "$USERHOME/nominatim-project/website(/.*)?"
+ sudo semanage fcontext -a -t lib_t "$USERHOME/nominatim-project/module/nominatim.so"
+ sudo restorecon -R -v /usr/local/lib/nominatim
+ sudo restorecon -R -v $USERHOME/nominatim-project
# You need to create a minimal configuration file that tells nominatim
diff --git a/vagrant/Install-on-Ubuntu-18.sh b/vagrant/Install-on-Ubuntu-18.sh
index 8a4d2b73..527ded09 100755
--- a/vagrant/Install-on-Ubuntu-18.sh
+++ b/vagrant/Install-on-Ubuntu-18.sh
@@ -29,9 +29,13 @@ export DEBIAN_FRONTEND=noninteractive #DOCS:
libbz2-dev libpq-dev libproj-dev \
postgresql-server-dev-10 postgresql-10-postgis-2.4 \
postgresql-contrib-10 postgresql-10-postgis-scripts \
- php php-pgsql php-intl python3-dotenv \
+ php php-pgsql php-intl python3-pip \
python3-psycopg2 git
+# The python-dotenv package that comes with Ubuntu 18.04 is too old, so
+# install the latest version from pip:
+
+ pip3 install python-dotenv
#
# System Configuration
@@ -113,11 +117,11 @@ fi #DOCS:
# The code must be built in a separate directory. Create this directory,
# then configure and build Nominatim in there:
- cd $USERHOME
- mkdir build
- cd build
+ mkdir $USERHOME/build
+ cd $USERHOME/build
cmake $USERHOME/Nominatim
make
+ sudo make install
# Nominatim is now ready to use. You can continue with
@@ -127,6 +131,14 @@ fi #DOCS:
# Setting up a webserver
# ======================
#
+# The webserver should serve the php scripts from the website directory of your
+# [project directory](../admin/import.md#creating-the-project-directory).
+# Therefore set up a project directory and populate the website directory:
+
+ mkdir $USERHOME/nominatim-project
+ cd $USERHOME/nominatim-project
+ nominatim refresh --website
+#
# Option 1: Using Apache
# ----------------------
#
@@ -142,14 +154,14 @@ if [ "x$2" == "xinstall-apache" ]; then #DOCS:
#DOCS:```sh
sudo tee /etc/apache2/conf-available/nominatim.conf << EOFAPACHECONF
-
+
Options FollowSymLinks MultiViews
AddType text/html .php
DirectoryIndex search.php
Require all granted
-Alias /nominatim $USERHOME/build/website
+Alias /nominatim $USERHOME/nominatim-project/website
EOFAPACHECONF
#DOCS:```
@@ -206,7 +218,7 @@ server {
listen 80 default_server;
listen [::]:80 default_server;
- root $USERHOME/build/website;
+ root $USERHOME/nominatim-project/website;
index search.php index.html;
location / {
try_files \$uri \$uri/ @php;
diff --git a/vagrant/Install-on-Ubuntu-20.sh b/vagrant/Install-on-Ubuntu-20.sh
old mode 100644
new mode 100755
index 94afca78..bf8120c4
--- a/vagrant/Install-on-Ubuntu-20.sh
+++ b/vagrant/Install-on-Ubuntu-20.sh
@@ -115,11 +115,11 @@ fi #DOCS:
# The code must be built in a separate directory. Create this directory,
# then configure and build Nominatim in there:
- cd $USERHOME
- mkdir build
- cd build
+ mkdir $USERHOME/build
+ cd $USERHOME/build
cmake $USERHOME/Nominatim
make
+ sudo make install
# Nominatim is now ready to use. You can continue with
# [importing a database from OSM data](../admin/Import.md). If you want to set up
@@ -127,6 +127,15 @@ fi #DOCS:
#
# Setting up a webserver
# ======================
+#
+# The webserver should serve the php scripts from the website directory of your
+# [project directory](../admin/import.md#creating-the-project-directory).
+# Therefore set up a project directory and populate the website directory:
+
+ mkdir $USERHOME/nominatim-project
+ cd $USERHOME/nominatim-project
+ nominatim refresh --website
+
#
# Option 1: Using Apache
# ----------------------
@@ -143,14 +152,14 @@ if [ "x$2" == "xinstall-apache" ]; then #DOCS:
#DOCS:```sh
sudo tee /etc/apache2/conf-available/nominatim.conf << EOFAPACHECONF
-
+
Options FollowSymLinks MultiViews
AddType text/html .php
DirectoryIndex search.php
Require all granted
-Alias /nominatim $USERHOME/build/website
+Alias /nominatim $USERHOME/nominatim-project/website
EOFAPACHECONF
#DOCS:```
@@ -207,7 +216,7 @@ server {
listen 80 default_server;
listen [::]:80 default_server;
- root $USERHOME/build/website;
+ root $USERHOME/nominatim-project/website;
index search.php index.html;
location / {
try_files \$uri \$uri/ @php;