123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- #!/bin/sh
- #move to script directory so all relative paths work
- cd "$(dirname "$0")"
- #includes
- . ./config.sh
- . ./colors.sh
- . ./environment.sh
- #send a message
- echo "Install PostgreSQL"
- #generate a random password
- password=$(dd if=/dev/urandom bs=1 count=20 2>/dev/null | base64)
- #install message
- echo "Install PostgreSQL and create the database and users\n"
- #included in the distribution
- if [ ."$database_repo" = ."system" ]; then
- if [ ."$database_host" = ."127.0.0.1" ] || [ ."$database_host" = ."::1" ] ; then
- apt-get install -y sudo postgresql
- else
- apt-get install -y sudo postgresql-client
- fi
- fi
- #make sure keyrings directory exits
- mkdir /etc/apt/keyrings
- #postgres official repository
- if [ ."$database_repo" = ."official" ]; then
- apt install -y gpg
- sh -c 'echo "deb [signed-by=/etc/apt/keyrings/pgdg.gpg] http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
- wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor -o /etc/apt/keyrings/pgdg.gpg
- chmod 644 /etc/apt/keyrings/pgdg.gpg
- apt-get update && apt-get upgrade -y
- if [ ."$database_host" = ."127.0.0.1" ] || [ ."$database_host" = ."::1" ] ; then
- if [ ."$database_version" = ."latest" ]; then
- apt-get install -y sudo postgresql
- else
- apt-get install -y sudo postgresql-$database_version
- fi
- else
- apt-get install -y sudo postgresql-client
- fi
- fi
- #add PostgreSQL and 2ndquadrant repos
- if [ ."$database_repo" = ."2ndquadrant" ]; then
- if [ ."$database_host" = ."127.0.0.1" ] || [ ."$database_host" = ."::1" ] ; then
- apt install -y curl
- curl https://dl.2ndquadrant.com/default/release/get/deb | bash
- if [ ."$os_codename" = ."buster" ]; then
- sed -i /etc/apt/sources.list.d/2ndquadrant-dl-default-release.list -e 's#buster#stretch#g'
- fi
- if [ ."$os_codename" = ."bullseye" ]; then
- sed -i /etc/apt/sources.list.d/2ndquadrant-dl-default-release.list -e 's#bullseye#stretch#g'
- fi
- apt update
- apt-get install -y sudo postgresql-bdr-9.4 postgresql-bdr-9.4-bdr-plugin postgresql-bdr-contrib-9.4
- fi
- fi
- #install the database backup
- #cp backup/fusionpbx-backup /etc/cron.daily
- #cp backup/fusionpbx-maintenance /etc/cron.daily
- #chmod 755 /etc/cron.daily/fusionpbx-backup
- #chmod 755 /etc/cron.daily/fusionpbx-maintenance
- #sed -i "s/zzz/$password/g" /etc/cron.daily/fusionpbx-backup
- #sed -i "s/zzz/$password/g" /etc/cron.daily/fusionpbx-maintenance
- #initialize the database
- pg_createcluster $database_version main
- #replace scram-sha-256 with md5
- sed -i /etc/postgresql/$database_version/main/pg_hba.conf -e '/^#/!s/scram-sha-256/md5/g'
- #systemd
- if [ ."$database_host" = ."127.0.0.1" ] || [ ."$database_host" = ."::1" ] ; then
- systemctl daemon-reload
- systemctl restart postgresql
- fi
- #init.d
- #/usr/sbin/service postgresql restart
- #move to /tmp to prevent a red herring error when running sudo with psql
- cwd=$(pwd)
- cd /tmp
- if [ ."$database_host" = ."127.0.0.1" ] || [ ."$database_host" = ."::1" ] ; then
- #reload the config
- sudo -u postgres psql -c "SELECT pg_reload_conf();"
- #set client encoding
- sudo -u postgres psql -c "SET client_encoding = 'UTF8';";
- #add the database users and databases
- sudo -u postgres psql -c "CREATE DATABASE fusionpbx;";
- #add the users and grant permissions
- sudo -u postgres psql -c "CREATE ROLE fusionpbx WITH SUPERUSER LOGIN PASSWORD '$password';"
- sudo -u postgres psql -c "GRANT ALL PRIVILEGES ON DATABASE fusionpbx to fusionpbx;"
- #update the fusionpbx user password
- #ALTER USER fusionpbx WITH PASSWORD 'newpassword';
- fi
- cd $cwd
- #set the ip address
- #server_address=$(hostname -I)
|