#
#-----------------------------------------------------------------------------
-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")
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)
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
-<Directory "$USERHOME/build/website">
- Options FollowSymLinks MultiViews
- AddType text/html .php
- DirectoryIndex search.php
- Require all granted
-</Directory>
-
-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
# ====================
# 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
+<Directory "$USERHOME/nominatim-project/website">
+ Options FollowSymLinks MultiViews
+ AddType text/html .php
+ DirectoryIndex search.php
+ Require all granted
+</Directory>
+
+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
# 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
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
-<Directory "$USERHOME/build/website">
- Options FollowSymLinks MultiViews
- AddType text/html .php
- DirectoryIndex search.php
- Require all granted
-</Directory>
-
-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
# ====================
# 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
+<Directory "$USERHOME/nominatim-project/website">
+ Options FollowSymLinks MultiViews
+ AddType text/html .php
+ DirectoryIndex search.php
+ Require all granted
+</Directory>
+
+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
# 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
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
# 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
# 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
# ----------------------
#
#DOCS:```sh
sudo tee /etc/apache2/conf-available/nominatim.conf << EOFAPACHECONF
-<Directory "$USERHOME/build/website">
+<Directory "$USERHOME/nominatim-project/website">
Options FollowSymLinks MultiViews
AddType text/html .php
DirectoryIndex search.php
Require all granted
</Directory>
-Alias /nominatim $USERHOME/build/website
+Alias /nominatim $USERHOME/nominatim-project/website
EOFAPACHECONF
#DOCS:```
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;
# 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
#
# 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
# ----------------------
#DOCS:```sh
sudo tee /etc/apache2/conf-available/nominatim.conf << EOFAPACHECONF
-<Directory "$USERHOME/build/website">
+<Directory "$USERHOME/nominatim-project/website">
Options FollowSymLinks MultiViews
AddType text/html .php
DirectoryIndex search.php
Require all granted
</Directory>
-Alias /nominatim $USERHOME/build/website
+Alias /nominatim $USERHOME/nominatim-project/website
EOFAPACHECONF
#DOCS:```
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;