mirror of
https://github.com/pgadmin-org/pgadmin4.git
synced 2025-02-25 18:55:31 -06:00
Code is split into pkg/debian for the Debian/Ubuntu specific parts, and pkg/linux for generic code that can be used on other distros. Tested on Debian 10 and Ubuntu 18.04 at present.
110 lines
3.2 KiB
Bash
Executable File
110 lines
3.2 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
#
|
|
# Setup pgadmin4 in server mode
|
|
#
|
|
|
|
if [ "$EUID" -ne 0 ]
|
|
then echo "This script must be run as root"
|
|
exit 1
|
|
fi
|
|
|
|
# Get the distro
|
|
IS_REDHAT=0
|
|
IS_DEBIAN=0
|
|
UNAME=$(uname -a)
|
|
|
|
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
|
|
|
|
if [ $? != 0 ]
|
|
then
|
|
echo "Error setting up server mode. Please examine the output above."
|
|
exit 1
|
|
fi
|
|
|
|
# Create and own directories:
|
|
echo "Creating storage and log directories..."
|
|
mkdir -p /var/log/pgadmin /var/lib/pgadmin
|
|
|
|
if [ ${IS_REDHAT} == 1 ]; then
|
|
chown apache: /var/log/pgadmin /var/lib/pgadmin -R
|
|
else
|
|
chown www-data: /var/log/pgadmin /var/lib/pgadmin -R
|
|
fi
|
|
|
|
# Set SELinux up:
|
|
if [ ${IS_REDHAT} == 1 ]; then
|
|
echo "Configuring SELinux..."
|
|
setsebool -P httpd_can_network_connect 1
|
|
setsebool -P httpd_can_network_connect_db 1
|
|
semanage fcontext -a -t httpd_var_lib_t '/var/lib/pgadmin(/.*)?'
|
|
restorecon -R -v /var/lib/pgadmin
|
|
semanage fcontext -a -t httpd_log_t '/var/log/pgadmin(/.*)?'
|
|
restorecon -R -v /var/log/pgadmin
|
|
fi
|
|
|
|
# Setup Apache
|
|
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
|
|
case ${RESPONSE} in
|
|
y|Y )
|
|
if [ ${IS_REDHAT} == 1 ]; then
|
|
# TODO
|
|
true
|
|
else
|
|
a2enmod wsgi 1> /dev/null
|
|
a2enconf pgadmin4 1> /dev/null
|
|
fi;;
|
|
* )
|
|
exit 1;;
|
|
esac
|
|
|
|
APACHE_STATUS=`ps cax | grep ${APACHE}`
|
|
if [ $? -eq 0 ]; then
|
|
read -p "The Apache web server is running. A restart is required for the pgAdmin 4 installation to complete. Would you like to continue (y/n)? " RESPONSE
|
|
case ${RESPONSE} in
|
|
y|Y )
|
|
systemctl restart ${APACHE}
|
|
if [ $? != 0 ]; then
|
|
echo "Error restarting ${APACHE}. Please check the systemd logs"
|
|
else
|
|
echo "Apache successfully restarted. You can now start using pgAdmin 4 in web mode"
|
|
fi;;
|
|
* )
|
|
exit 1;;
|
|
esac
|
|
else
|
|
read -p "The Apache web server is not running. We can enable and start the web server for you to finish pgAdmin 4 installation. Would you like to continue (y/n)? " RESPONSE
|
|
case ${RESPONSE} in
|
|
y|Y )
|
|
systemctl enable ${APACHE}
|
|
if [ $? != 0 ]; then
|
|
echo "Error enabling ${APACHE}. Please check the systemd logs"
|
|
else
|
|
echo "Apache successfully enabled."
|
|
fi
|
|
|
|
systemctl start ${APACHE}
|
|
if [ $? != 0 ]; then
|
|
echo "Error starting ${APACHE}. Please check the systemd logs"
|
|
else
|
|
echo "Apache successfully started. You can now start using pgAdmin 4 in web mode"
|
|
fi;;
|
|
* )
|
|
exit 1;;
|
|
esac
|
|
fi
|
|
|
|
exit 0
|