diff --git a/docs/en_US/release_notes_5_1.rst b/docs/en_US/release_notes_5_1.rst index 6db8f570d..caa85c1f9 100644 --- a/docs/en_US/release_notes_5_1.rst +++ b/docs/en_US/release_notes_5_1.rst @@ -25,6 +25,7 @@ Bug fixes | `Issue #6018 `_ - Fixed encoding issue when database encoding set to SQL_ASCII and name of the column is in ASCII character. | `Issue #6159 `_ - Ensure that the user should be able to kill the session from Dashboard if the user has a 'pg_signal_backend' role. | `Issue #6227 `_ - Ensure PGADMIN_DEFAULT_EMAIL looks sane when initialising a container deployment. +| `Issue #6228 `_ - Improve the web setup script for Linux to make the platform detection more robust and overrideable. | `Issue #6253 `_ - Fixed an issue where the user is unable to create a subscription if the host/IP address for connection is 127.0.0.1. | `Issue #6259 `_ - Ensure that proper error message should be shown on the properties and statistics tab in case of insufficient privileges for a subscription. | `Issue #6260 `_ - Fixed an issue where the 'Create Slot' option is disabled in case of the same IP/host provided but the port is different. diff --git a/pkg/linux/setup-web.sh b/pkg/linux/setup-web.sh index c218b12be..86607898f 100755 --- a/pkg/linux/setup-web.sh +++ b/pkg/linux/setup-web.sh @@ -14,11 +14,44 @@ if [[ "$#" -ne 0 ]] && ([[ "$#" -eq 1 ]] && [[ "$1" != "--yes" ]]); then exit 1 fi -# Get the distro IS_REDHAT=0 IS_DEBIAN=0 UNAME=$(uname -a) +# Get the distro from the environment +if [ "x${PGADMIN_PLATFORM_TYPE}" == "x" ]; then + if [ -f /etc/redhat-release ]; then + PLATFORM_TYPE=redhat + elif [[ ${UNAME} =~ "Ubuntu" ]] || [[ ${UNAME} =~ "Debian" ]] || [ -f /etc/apt/sources.list ]; then + PLATFORM_TYPE=debian + else + echo "Failed to detect the platform. This may mean you're running on a Linux distribution that isn't supported by pgAdmin." + echo "Please set the PGADMIN_PLATFORM_TYPE environment variable to one of 'redhat' or 'debian' and try again." + exit 1 + fi +else + PLATFORM_TYPE=${PGADMIN_PLATFORM_TYPE} +fi + +case ${PLATFORM_TYPE} in + redhat) + echo "Setting up pgAdmin 4 in web mode on a Redhat based platform..." + IS_REDHAT=1 + APACHE=httpd + ;; + + debian) + echo "Setting up pgAdmin 4 in web mode on a Debian based platform..." + IS_DEBIAN=1 + APACHE=apache2 + ;; + + *) + echo "Invalid value for the PGADMIN_PLATFORM_TYPE environment variable. Please set it to one of 'redhat' or 'debian' and try again." + exit 1 + ;; +esac + # Is this an automated install? AUTOMATED=0 if [ "$#" -eq 1 ]; then @@ -26,16 +59,6 @@ if [ "$#" -eq 1 ]; then echo "Running in non-interactive mode..." fi -if [ -f /etc/redhat-release ]; then - IS_REDHAT=1 - APACHE=httpd - echo "Setting up pgAdmin 4 in web mode on a Redhat platform..." -elif [[ ${UNAME} =~ "Ubuntu" ]] || [[ ${UNAME} =~ "Debian" ]]; then - IS_DEBIAN=1 - APACHE=apache2 - echo "Setting up pgAdmin 4 in web mode on a Debian platform..." -fi - # Run setup script first: echo "Creating configuration database..." /usr/pgadmin4/venv/bin/python3 /usr/pgadmin4/web/setup.py @@ -70,22 +93,16 @@ fi # Setup Apache on Debian/Ubuntu if [ ${IS_DEBIAN} == 1 ]; then if [ ${AUTOMATED} == 1 ]; then - RESPONSE=Y + RESPONSE=Y else read -p "We can now configure the Apache Web server for you. This involves enabling the wsgi module and configuring the pgAdmin 4 application to mount at /pgadmin4. Do you wish to continue (y/n)? " RESPONSE fi case ${RESPONSE} in y|Y ) - # Debian uses a different path to Ubuntu - if [[ ${UNAME} =~ "Debian" ]]; then - /sbin/a2enmod wsgi 1> /dev/null - /sbin/a2enconf pgadmin4 1> /dev/null - else - /usr/sbin/a2enmod wsgi 1> /dev/null - /usr/sbin/a2enconf pgadmin4 1> /dev/null - fi - ;; + a2enmod wsgi 1> /dev/null + a2enconf pgadmin4 1> /dev/null + ;; * ) exit 1;; esac @@ -101,7 +118,7 @@ if [ $? -eq 0 ]; then case ${RESPONSE} in y|Y ) - systemctl restart ${APACHE} + systemctl restart ${APACHE} if [ $? != 0 ]; then echo "Error restarting ${APACHE}. Please check the systemd logs" else