kivitendo/scripts/inst_postgres_deb.sh @ ef540e3b
37fe8e05 | Holger Lindemann | #!/bin/bash
|
||
# e = exit on error
|
||||
set -e
|
||||
# x = xtrace
|
||||
4857cb4a | Holger Lindemann | #set -x
|
||
37fe8e05 | Holger Lindemann | |||
1e151777 | Holger Lindemann | FEHLER="Achtung!! Es hat ein Problem gegeben"
|
||
ERRCNT=0
|
||||
37fe8e05 | Holger Lindemann | source /usr/share/debconf/confmodule
|
||
#Als root anmelden
|
||||
if [ `id -u` -gt 0 ]; then echo "Bitte als root anmelden"; exit 1; fi
|
||||
f9907183 | Holger Lindemann | |||
1e151777 | Holger Lindemann | POSTGRESQL=`dpkg -l | grep -E "postgresql-[0-9]" | cut -d" " -f3 | sort -r | head -1 -`
|
||
37fe8e05 | Holger Lindemann | |||
#Datei plpgsql.so suchen
|
||||
1e151777 | Holger Lindemann | #Mit Paketmanager suchen
|
||
if [ "$POSTGRESQL#" == "#" ]; then
|
||||
echo $FEHLER
|
||||
echo Keine PostgreSQL mit Paketmanager installiert
|
||||
echo Datenbank bitte manuell einrichten.
|
||||
exit 0
|
||||
else
|
||||
45d54bc7 | Holger Lindemann | PLPGSQL=`dpkg -L $POSTGRESQL | grep plpgsql.so `
|
||
1e151777 | Holger Lindemann | fi
|
||
37fe8e05 | Holger Lindemann | |||
if [ "$PLPGSQL#" == "#" ]; then
|
||||
1e151777 | Holger Lindemann | #Probleme mit Paketmanager, dann zunaechst mit locate, geht schneller
|
||
updatedb
|
||||
tmp=`locate plpgsql.so 2>/dev/null`
|
||||
PLPGSQL=`echo $tmp | cut -d " " -f 1`
|
||||
37fe8e05 | Holger Lindemann | fi
|
||
if [ "$PLPGSQL#" == "#" ]; then
|
||||
1e151777 | Holger Lindemann | #noch nicht gefunden, also mit find suchen
|
||
tmp=`find /usr/lib -name plpgsql.so -type f`
|
||||
PLPGSQL=`echo $tmp | cut -d " " -f 1`
|
||||
37fe8e05 | Holger Lindemann | fi
|
||
if [ "$PLPGSQL#" == "#" ]; then
|
||||
1e151777 | Holger Lindemann | echo $FEHLER
|
||
echo 'plpgsql.so' nicht gefunden.
|
||||
echo Datenbank manuell einrichten.
|
||||
exit 0
|
||||
37fe8e05 | Holger Lindemann | fi
|
||
#Kann der User postgres die db erreichen
|
||||
cnt=`ps aux | grep postgres | wc -l`
|
||||
if [ $cnt -eq 0 ]; then
|
||||
1e151777 | Holger Lindemann | echo $FEHLER
|
||
echo Die postgreSQL-Datebbank ist nicht gestartet!
|
||||
echo Datenbank manuell einrichten.
|
||||
exit 0
|
||||
37fe8e05 | Holger Lindemann | fi
|
||
1e151777 | Holger Lindemann | |||
v8=`su postgres -c "echo 'select version()' | psql template1 2>/dev/null | grep -E "[Ss][Qq][Ll][[:space:]]+8\.[2-9]\.[0-9]" | wc -l"`
|
||||
37fe8e05 | Holger Lindemann | if [ $v8 -eq 0 ]; then
|
||
1e151777 | Holger Lindemann | echo $FEHLER
|
||
f9907183 | Holger Lindemann | echo Datenbank Version 8x konnte nicht erreicht werden.
|
||
1e151777 | Holger Lindemann | exit 0
|
||
37fe8e05 | Holger Lindemann | fi
|
||
echo "CREATE FUNCTION plpgsql_call_handler() RETURNS language_handler" > lxdbinst.sql
|
||||
echo "AS '$PLPGSQL', 'plpgsql_call_handler'" >> lxdbinst.sql
|
||||
echo "LANGUAGE c;" >> lxdbinst.sql
|
||||
echo "CREATE PROCEDURAL LANGUAGE plpgsql HANDLER plpgsql_call_handler;" >> lxdbinst.sql
|
||||
#writeln 2 1 Datenbankbenutzer einrichten
|
||||
LXOUSER="lxoffice"
|
||||
db_get lx-office-erp/lx-office-erp-user-postgresql-password
|
||||
USRPWD="$RET"
|
||||
echo "CREATE USER $LXOUSER with CREATEDB ;" >> lxdbinst.sql
|
||||
echo "ALTER USER $LXOUSER PASSWORD '$USRPWD';" >> lxdbinst.sql
|
||||
echo "UPDATE pg_language SET lanpltrusted = true WHERE lanname = 'plpgsql';" >> lxdbinst.sql
|
||||
su postgres -c "psql template1 < lxdbinst.sql"
|
||||
echo "Fehlermeldungen die 'already exists' enthalten koennen ignoriert werden"
|
||||
#writeln 12 1 Datenbankberechtigung einrichten
|
||||
1e151777 | Holger Lindemann | PGHBA=`find /etc/postgresql -name pg_hba.conf -type f | sort -r | head -1 -`
|
||
if [ "$PGHBA#" == "#" ] ; then
|
||||
PGHBA=`find /var/lib -name pg_hba.conf -type f | sort -r | head -1 -`
|
||||
fi
|
||||
37fe8e05 | Holger Lindemann | |||
if [ "$PGHBA#" == "#" ]; then
|
||||
1e151777 | Holger Lindemann | echo $FEHLER
|
||
echo 'pg_hba.conf' nicht gefunden.
|
||||
echo "Berechtigungen bitte selber einrichten"
|
||||
ERRCNT=1
|
||||
37fe8e05 | Holger Lindemann | fi
|
||
cnt=`grep $LXOUSER $PGHBA | wc -l `
|
||||
if [ $cnt -eq 0 ]; then
|
||||
1e151777 | Holger Lindemann | mv $PGHBA $PGHBA.org
|
||
echo "local all $LXOUSER password" > $PGHBA
|
||||
echo "host all $LXOUSER 127.0.0.1 255.255.255.255 password" >> $PGHBA
|
||||
cat $PGHBA.org >> $PGHBA
|
||||
37fe8e05 | Holger Lindemann | fi
|
||
8b07d735 | Holger Lindemann | #CONFDIR=`dirname $PGHBA`
|
||
37fe8e05 | Holger Lindemann | |||
#postgresql.conf anpassen, liegt vermutlich im gleichen Verzeichnis wie pg_hba.conf
|
||||
8b07d735 | Holger Lindemann | #if ! [ -f $CONFDIR/postgresql.conf ]; then
|
||
# echo $FEHLER
|
||||
# echo 'postgresql.conf' nicht gefunden.
|
||||
# echo PostgreSQL selber konfigurieren
|
||||
# ERRCNT=1
|
||||
#fi
|
||||
#mv $CONFDIR/postgresql.conf $CONFDIR/postgresql.conf.org
|
||||
1e151777 | Holger Lindemann | #Bei der V8.x OID einschalten.
|
||
8b07d735 | Holger Lindemann | #sed 's/^.*default_with_oids.*/default_with_oids = true/i' $CONFDIR/postgresql.conf.org > $CONFDIR/postgresql.conf
|
||
#cnt=`grep default_with_oids $CONFDIR/postgresql.conf | wc -l`
|
||||
#if [ $cnt -eq 0 ]; then
|
||||
# cp $CONFDIR/postgresql.conf.org $CONFDIR/postgresql.conf
|
||||
# echo "default_with_oids = true" >> $CONFDIR/postgresql.conf
|
||||
#fi
|
||||
37fe8e05 | Holger Lindemann | |||
4857cb4a | Holger Lindemann | PGSQL=`ls -r1 /etc/init.d/postgres* | head -1 -`
|
||
37fe8e05 | Holger Lindemann | |||
#writeln 18 1 Datenbank neu starten
|
||||
$PGSQL reload
|
||||
1e151777 | Holger Lindemann | if [ $ERRCNT -gt 0 ]; then
|
||
echo $FEHLER
|
||||
echo Das betrifft aber nicht die Lx-Office Installation
|
||||
echo sondern die Konfiguration der Datenbank.
|
||||
echo $POSTGRESQL , $PGHBA , $CONFDIR/postgresql.conf ??
|
||||
sleep 10
|
||||
fi
|