diff --git a/.github/workflows/ci-tests.yml b/.github/workflows/ci-tests.yml index 4ce14f9365..53b76a035d 100644 --- a/.github/workflows/ci-tests.yml +++ b/.github/workflows/ci-tests.yml @@ -37,7 +37,7 @@ jobs: needs: create-archive strategy: matrix: - ubuntu: [18, 20] + ubuntu: [18, 20, 22] include: - ubuntu: 18 postgresql: 9.6 @@ -49,6 +49,11 @@ jobs: postgis: 3 pytest: py.test-3 php: 7.4 + - ubuntu: 22 + postgresql: 14 + postgis: 3 + pytest: py.test-3 + php: 8.1 runs-on: ubuntu-${{ matrix.ubuntu }}.04 @@ -65,6 +70,7 @@ jobs: with: php-version: ${{ matrix.php }} tools: phpunit, phpcs, composer + ini-values: opcache.jit=disable - uses: actions/setup-python@v2 with: @@ -85,8 +91,12 @@ jobs: if: matrix.ubuntu == 20 - name: Install test prerequsites - run: pip3 install pytest behave==1.2.6 - if: matrix.ubuntu == 18 + run: pip3 install pylint pytest behave==1.2.6 + if: ${{ (matrix.ubuntu == 18) || (matrix.ubuntu == 22) }} + + - name: Install test prerequsites + run: sudo apt-get install -y -qq python3-pytest + if: matrix.ubuntu == 22 - name: Install latest pylint run: pip3 install pylint @@ -102,7 +112,7 @@ jobs: - name: PHP unit tests run: phpunit ./ working-directory: Nominatim/test/php - if: matrix.ubuntu == 20 + if: ${{ (matrix.ubuntu == 20) || (matrix.ubuntu == 22) }} - name: Python unit tests run: $PYTEST test/python @@ -161,7 +171,7 @@ jobs: strategy: matrix: - name: [Ubuntu-18, Ubuntu-20] + name: [Ubuntu-18, Ubuntu-20, Ubuntu-22] include: - name: Ubuntu-18 flavour: ubuntu @@ -173,6 +183,11 @@ jobs: image: "ubuntu:20.04" ubuntu: 20 install_mode: install-apache + - name: Ubuntu-22 + flavour: ubuntu + image: "ubuntu:22.04" + ubuntu: 22 + install_mode: install-apache container: image: ${{ matrix.image }} diff --git a/docs/CMakeLists.txt b/docs/CMakeLists.txt index 3b9a316b19..0ccc5974d2 100644 --- a/docs/CMakeLists.txt +++ b/docs/CMakeLists.txt @@ -26,6 +26,7 @@ ADD_CUSTOM_TARGET(doc COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/bash2md.sh ${PROJECT_SOURCE_DIR}/vagrant/Install-on-Centos-8.sh ${CMAKE_CURRENT_BINARY_DIR}/appendix/Install-on-Centos-8.md COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/bash2md.sh ${PROJECT_SOURCE_DIR}/vagrant/Install-on-Ubuntu-18.sh ${CMAKE_CURRENT_BINARY_DIR}/appendix/Install-on-Ubuntu-18.md COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/bash2md.sh ${PROJECT_SOURCE_DIR}/vagrant/Install-on-Ubuntu-20.sh ${CMAKE_CURRENT_BINARY_DIR}/appendix/Install-on-Ubuntu-20.md + COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/bash2md.sh ${PROJECT_SOURCE_DIR}/vagrant/Install-on-Ubuntu-22.sh ${CMAKE_CURRENT_BINARY_DIR}/appendix/Install-on-Ubuntu-22.md COMMAND PYTHONPATH=${PROJECT_SOURCE_DIR} mkdocs build -d ${CMAKE_CURRENT_BINARY_DIR}/../site-html -f ${CMAKE_CURRENT_BINARY_DIR}/../mkdocs.yml ) diff --git a/docs/mkdocs.yml b/docs/mkdocs.yml index a156fb7115..48fe1d0d16 100644 --- a/docs/mkdocs.yml +++ b/docs/mkdocs.yml @@ -46,6 +46,7 @@ nav: - 'Installation on CentOS 8' : 'appendix/Install-on-Centos-8.md' - 'Installation on Ubuntu 18' : 'appendix/Install-on-Ubuntu-18.md' - 'Installation on Ubuntu 20' : 'appendix/Install-on-Ubuntu-20.md' + - 'Installation on Ubuntu 22' : 'appendix/Install-on-Ubuntu-22.md' markdown_extensions: - codehilite - admonition diff --git a/test/python/tools/test_exec_utils.py b/test/python/tools/test_exec_utils.py index 78650180f9..26ea92b2c7 100644 --- a/test/python/tools/test_exec_utils.py +++ b/test/python/tools/test_exec_utils.py @@ -122,7 +122,13 @@ def test_custom_phpcgi(tmp_path, capfd): @staticmethod def test_fail_on_error_output(tmp_path): - (tmp_path / 'website' / 'bad.php').write_text(" + Options FollowSymLinks MultiViews + AddType text/html .php + DirectoryIndex search.php + Require all granted + + +Alias /nominatim $USERHOME/nominatim-project/website +EOFAPACHECONF +#DOCS:``` + +# +# Then enable the configuration and restart apache +# + + sudo a2enconf nominatim +if [ "x$NOSYSTEMD" == "xyes" ]; then #DOCS: + sudo apache2ctl start #DOCS: +else #DOCS: + sudo systemctl restart apache2 +fi #DOCS: + +# The Nominatim API is now available at `http://localhost/nominatim/`. + +fi #DOCS: + +# +# Option 2: Using nginx +# --------------------- +# +if [ "x$2" == "xinstall-nginx" ]; then #DOCS: + +# Nginx has no native support for php scripts. You need to set up php-fpm for +# this purpose. First install nginx and php-fpm: + + sudo apt install -y nginx php-fpm + +# You need to configure php-fpm to listen on a Unix socket. + +#DOCS:```sh +sudo tee /etc/php/8.1/fpm/pool.d/www.conf << EOF_PHP_FPM_CONF +[www] +; Replace the tcp listener and add the unix socket +listen = /var/run/php8.1-fpm.sock + +; Ensure that the daemon runs as the correct user +listen.owner = www-data +listen.group = www-data +listen.mode = 0666 + +; Unix user of FPM processes +user = www-data +group = www-data + +; Choose process manager type (static, dynamic, ondemand) +pm = ondemand +pm.max_children = 5 +EOF_PHP_FPM_CONF +#DOCS:``` + +# Then create a Nginx configuration to forward http requests to that socket. + +#DOCS:```sh +sudo tee /etc/nginx/sites-available/default << EOF_NGINX_CONF +server { + listen 80 default_server; + listen [::]:80 default_server; + + root $USERHOME/nominatim-project/website; + index search.php index.html; + location / { + try_files \$uri \$uri/ @php; + } + + location @php { + fastcgi_param SCRIPT_FILENAME "\$document_root\$uri.php"; + fastcgi_param PATH_TRANSLATED "\$document_root\$uri.php"; + fastcgi_param QUERY_STRING \$args; + fastcgi_pass unix:/var/run/php8.1-fpm.sock; + fastcgi_index index.php; + include fastcgi_params; + } + + location ~ [^/]\.php(/|$) { + fastcgi_split_path_info ^(.+?\.php)(/.*)$; + if (!-f \$document_root\$fastcgi_script_name) { + return 404; + } + fastcgi_pass unix:/var/run/php7.4-fpm.sock; + fastcgi_index search.php; + include fastcgi.conf; + } +} +EOF_NGINX_CONF +#DOCS:``` + +# If you have some errors, make sure that php8.1-fpm.sock is well under +# /var/run/ and not under /var/run/php. Otherwise change the Nginx configuration +# to /var/run/php/php8.1-fpm.sock. +# +# Enable the configuration and restart Nginx +# + +if [ "x$NOSYSTEMD" == "xyes" ]; then #DOCS: + sudo /usr/sbin/php-fpm8.1 --nodaemonize --fpm-config /etc/php/8.1/fpm/php-fpm.conf & #DOCS: + sudo /usr/sbin/nginx & #DOCS: +else #DOCS: + sudo systemctl restart php8.1-fpm nginx +fi #DOCS: + +# The Nominatim API is now available at `http://localhost/`. + + + +fi #DOCS: