Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision c04c1509

Von Holger Lindemann vor mehr als 15 Jahren hinzugefügt

  • ID c04c1509f93544da074c68142e0f4e7d537133e2
  • Vorgänger 797ad4c5
  • Nachfolger 7c8ba0e3

Script verschieben

Unterschiede anzeigen:

sql/inst_postgres.sh
1
#!/bin/bash
2
#set -x
3
function writeln()
4
{
5
   tput cup $1 $2  # Cursor positionieren
6
   tput el         # Rest der Zeile löschen
7
   shift 2         # Parameter für die Koordinaten entfernen
8
   echo -n $*" "   # Rest der Parameterliste ausgeben
9
}
10

  
11
tput clear
12

  
13
#Als root anmelden
14
if [ `id -u` -gt 0 ]; then echo "Bitte als root anmelden"; exit 1; fi
15

  
16
writeln 1 1 PostgreSQL fuer Lx-Office vorbereiten
17
writeln 2 1 1. plpgsql.so suchen
18
PLPGSQL=""
19
#Datei plpgsql.so suchen
20

  
21
#Mit Paketmanager (RPM oder APT) suchen
22
#PLPGSQL=`dpkg -L postgresql | grep plpgsql.so`
23
#PLPGSQL=`rpm -q --list postgres | grep plpgsql.so`
24

  
25
if [ "$PLPGSQL#" == "#" ]; then
26
	#Probleme mit Paketmanager, dann zunaechst mit locate, geht schneller
27
	writeln 3 3 --locate
28
	tmp=`locate plpgsql.so 2>/dev/null`
29
	PLPGSQL=`echo $tmp | cut -d " " -f 1`
30
fi
31
if [ "$PLPGSQL#" == "#" ]; then
32
	#noch nicht gefunden, also mit find suchen
33
	writeln 3 15 --find /usr/lib
34
	tmp=`find /usr/lib -name  plpgsql.so -type f`
35
	PLPGSQL=`echo $tmp | cut -d " " -f 1`
36
fi	
37
if [ "$PLPGSQL#" == "#" ]; then
38
	while :; do
39
		writeln 4 1 'plpgsql.so' nicht gefunden.
40
		tput bold
41
   		writeln 5 1 "Bitte den Pfad eingeben: "
42
		tput rmso
43
   		read PLPGSQL
44
   		[ "$PLPGSQL#" != "#" ] && [ -f $PLPGSQL ] && break
45
   		tput bel
46
	done
47
fi
48
writeln 6 1 ok. 'plpgsql.so' gefunden
49

  
50
#Kann der User postgres die db erreichen
51
cnt=`ps aux | grep postgres | wc -l`
52
if [ $cnt -eq 0 ]; then
53
	tput bel
54
	tput bold
55
	echo Die postgreSQL-Datebbank ist nicht gestartet
56
	tput rmso
57
	exit 1
58
fi
59
v7=`su postgres -c "echo 'select version()' | psql template1 2>/dev/null | grep -E "[Ss][Qq][Ll][[:space:]]+7\.[0-9]\.[0-9]" | wc -l"`
60
v8=`su postgres -c "echo 'select version()' | psql template1 2>/dev/null | grep -E "[Ss][Qq][Ll][[:space:]]+8\.[0-9]\.[0-9]" | wc -l"`
61
#cnt=`echo  $v7 + $v8 | bc -l`
62
if [ $v8 -eq 0 ]; then 
63
	if [ $v7 -eq 0 ]; then
64
		tput bel
65
		tput bold
66
		echo User postgres konnte die Datenbank nicht ansprechen
67
		tput rmso
68
		exit 1; 
69
	else
70
		tput clear
71
		writeln 1 1 Datenbank Version 7x konnte erreicht werden.
72
	fi
73
else
74
	tput clear
75
	writeln 1 1 Datenbank Verion 8x konnte erreicht werden.
76
fi
77

  
78
echo "CREATE FUNCTION plpgsql_call_handler() RETURNS language_handler" > lxdbinst.sql
79
echo "AS '$PLPGSQL', 'plpgsql_call_handler'" >> lxdbinst.sql
80
echo "LANGUAGE c;" >> lxdbinst.sql
81
echo "CREATE PROCEDURAL LANGUAGE plpgsql HANDLER plpgsql_call_handler;" >> lxdbinst.sql
82

  
83
writeln 2 1 Datebankbenutzer einrichten
84
tput bold
85
writeln 3 1 "Bitte den Datenbank-Benutzernamen eingeben [lxoffice]: "
86
tput rmso
87
read LXOUSER
88
if [ "$LXOUSER#" == "#" ]; then LXOUSER="lxoffice"; fi
89
while :; do
90
	tput bold
91
	writeln 4 1 "Bitte ein Kennwort eingeben : "
92
	tput rmso
93
	read USRPWD
94
	if ! [ "$USRPWD#" == "#" ]; then break; fi
95
	tput bel
96
done;
97

  
98
echo "CREATE USER $LXOUSER with CREATEDB ;" >> lxdbinst.sql
99
echo "ALTER USER $LXOUSER PASSWORD '$USRPWD';" >> lxdbinst.sql
100
echo "UPDATE pg_language SET lanpltrusted = true WHERE lanname = 'plpgsql';" >> lxdbinst.sql
101

  
102
su postgres -c "psql template1 < lxdbinst.sql"
103

  
104
echo "Fehlermeldungen die 'already exists' enthalten koennen ignoriert werden"
105

  
106
writeln 11 1 Datenbank fuer Lx-Office vorbereitet
107

  
108
writeln 12 1 Datenbankberechtigung einrichten
109
#wo ist die pg_hba.conf
110
writeln 13 3 --find erst /etc dann /var/lib
111
tmp=`find /etc -name pg_hba.conf -type f`
112
[ "$tmp#" == "#" ] && tmp=`find /var/lib -name  pg_hba.conf -type f`
113
PGHBA=`echo $tmp | cut -d " " -f 1`
114

  
115
if [ "$PGHBA#" == "#" ]; then
116
	while :; do
117
		writeln 14 1 'pg_hba.conf' nicht gefunden.
118
		tput bold
119
   		writeln 15 1 "Bitte den Pfad eingeben: "
120
		tput rmso
121
   		read PGHBA
122
   		[ "$PGHBA#" != "#" ] && [ -f $PGHBA ] && break
123
   		tput bel
124
	done
125
fi
126
writeln 16 1 ok. 'pg_hba.conf' gefunden
127

  
128
cnt=`grep $LXOUSER $PGHBA | wc -l `
129

  
130
if [ $cnt -eq 0 ]; then 
131
	mv $PGHBA  $PGHBA.org
132
	echo "local   all         $LXOUSER                                           password" > $PGHBA
133
	echo "host    all         $LXOUSER      127.0.0.1         255.255.255.255    password" >> $PGHBA
134
	cat $PGHBA.org >> $PGHBA
135
fi 
136

  
137
CONFDIR=`dirname $PGHBA`
138

  
139
#postgresql.conf anpassen, liegt vermutlich im gleichen Verzeichnis wie pg_hba.conf
140
if ! [ -f $CONFDIR/postgresql.conf ]; then
141
	#doch nicht da, dann fragen
142
        while :; do
143
		writeln 13 1 'postgresql.conf' nicht gefunden.
144
		tput bold
145
                writeln 14 1 "Bitte den Pfad eingeben: "
146
		tput rmso
147
                read PGCONF
148
                [ "$PGCONF#" != "#" ] && [ -f $PGCONF ] && break
149
                tput bel
150
        done
151
	CONFDIR=`dirname $PGCONF`
152
fi
153

  
154
mv $CONFDIR/postgresql.conf $CONFDIR/postgresql.conf.org
155
if ! [ $v7 -eq 0 ]; then 
156
	#Nur bei der V7.x:  tcpip_socket = true
157
	sed 's/^.*tcpip_socket.*/tcpip_socket = true/i' $CONFDIR/postgresql.conf.org > $CONFDIR/postgresql.conf
158
	cnt=`grep tcpip_socket $CONFDIR/postgresql.conf | wc -l`
159
	if [ $cnt -eq 0 ]; then
160
		cp $CONFDIR/postgresql.conf.org $CONFDIR/postgresql.conf
161
		echo "tcpip_socket = true" >> $CONFDIR/postgresql.conf
162
	fi
163
else 
164
	#Bei der V8.x OID einschalten.
165
	sed 's/^.*default_with_oids.*/default_with_oids = true/i' $CONFDIR/postgresql.conf.org > $CONFDIR/postgresql.conf
166
	cnt=`grep default_with_oids $CONFDIR/postgresql.conf | wc -l`
167
	if [ $cnt -eq 0 ]; then
168
		cp $CONFDIR/postgresql.conf.org $CONFDIR/postgresql.conf
169
		echo "default_with_oids = true" >> $CONFDIR/postgresql.conf
170
	fi
171
fi
172

  
173
 
174
tmp=`ls /etc/init.d/postgres*`
175
PGSQL=`echo $tmp | cut -d " " -f 1`
176

  
177
writeln 18 1 Datenbank neu starten
178
$PGSQL restart
179

  
180
tput bold
181
tput smso
182
writeln 20 12 ok. Das solltes es gewesen sein.
183
tput rmso
184
tput rmso
185
echo 

Auch abrufbar als: Unified diff