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;