-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathREADME.QUICKINSTALL
325 lines (213 loc) · 10.6 KB
/
README.QUICKINSTALL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
README.QUICKINSTALL:
Die Software OpenBib lässt sich auf verschiedenen Wegen installieren
und betreiben.
Entweder als (derzeit noch experimentelle) Container-Lösung mit Docker
oder auf einem bestehenden Debian-System.
Der schnellste Weg ohne viel Know-How ein funktionierendes
OpenBib-System zu installieren und sich einen Eindruck davon zu
verschaffen ist der Weg über Docker. Besteht entsprechendes
Administrator-Know-How, dann empfiehlt sich jedoch - gerade bei der
Bereitstellung eines Produktionssystems - der Weg einer dedizierten
Installation auf einem Debian-System (aktuell buster).
A) Installation als Docker-Container (experimentell)
1.) Voraussetzungen
Auf dem lokalen System wird die Installation von Docker und Docker
Compose vorausgesetzt.
Auf einem Debian-System lässt sich beides sehr schnell als
Administrator installieren:
apt install docker.io docker-compose
Damit ein unpriviligierter lokal angemeldete Nutzer "abc" Zugriff auf
Docker bekommt, muss dieser in die Gruppe docker eingetragen werden:
groupadd abc docker
Damit die neue Gruppenzugehörigkeit aktiv wird, muss sich der Nutzer
danach entweder nochmals neu am System anmelden oder die Gruppe in der
bestehenden Terminal-Fenster neu aktivieren:
newgrp docker
2.) Auschecken der aktuellen OpenBib-Version aus dem Repository
git clone https://github.com/oflimm/openbib.git openbib-master
Im aktuellen Verzeichnis befindet sich dann OpenBib im neu angelegten
Verzeichnis openbib-master
3.) Erzeugen der Container und Volumes
Man wechselt nun in das Verzeichnis openbib-master und führt folgenden
Befehl aus:
./quickinstall-docker.sh
Mit diesem Befehl werden die notwendigen Docker-Container neu gebaut
bzw. vom öffentlichen Docker Repository geholt.
Es sind dies:
* openbib-base-perl: Basis-Container, der lokal über
Dockerfile.openbib-base-perl erzeugt wird
* openbib-web-perl: OpenBib Web-Anwendung, die lokal über
Dockerfile.openbib-web-perl erzeugt wird
* openbib-conv: Container zur Konvertierung sowie den Import von Daten
in OpenBib, der lokal über Dockerfile.openbib-conv erzeugt wird
Dazu kommen die Standard-Container
* PostgreSQL und
* Elasticsearch
Ebenso werden benannte Docker-Volumes angelegt, um persistent Daten
ausserhalb der Container abspeichern zu können. Diese befinden sich
lokal unter
/var/lib/docker/volumes/
und sind
* pgdata für die Speicherung der PostgreSQL-Datenbanken im Container
unter /var/lib/postgresql/data
* xapiandata für die Speicher der Xapian Suchindizes im Container
unter /opt/openbib/ft/xapian/index
* esdata für die Speicher der Elasticsearch Suchindizes im Container
unter /usr/share/elasticsearch/data
Eine Standardkonfiguration von OpenBib wird im Heimatverzeichnis des
Nutzers unter ~/openbib/conf/ angelegt
Sind die Container und Volumes erzeugt, dann gibt das Skript die
Kommandos aus, die die Installation abschliessen.
Zuvor kann die zentrale Konfigurationsdatei portal.yml angepasst
werden, um z.B. mit Angabe der entsprechenden Credentials die
Anbindung gewünschter Dienste zu ermöglichen (ReCaptcha, EDS, usw.)
4.) Starten der Infrastruktur mit Docker Compose und Erzeugung
relevanter Datenbanken
Mit dem Kommando
docker-compose up -d
werden alle notwendigen Docker Container und damit die OpenBib
Infrastruktur gestartet.
Dazu wird die Datei docker-compose.yml verwendet, in der das
Zusammenspiel der verschiedenen Container modelliert wird.
Insbesondere wird hier bereits starman gestartet, der Webdienst von
OpenBib, ohne dass er aber bereits auf die notwendigen Tabellen in
seinen verschiedenen Datenbanken zugreifen kann.
Die System-, Anreicherung- und Statistikdatenbanken müssen daher nun
einmalig erzeugt werden mit den Kommandos:
docker exec -it openbib-master_openbib-web-perl_1 /opt/openbib/bin/createsystem.pl
docker exec -it openbib-master_openbib-web-perl_1 /opt/openbib/bin/createenrichmnt.pl
docker exec -it openbib-master_openbib-web-perl_1 /opt/openbib/bin/createstatistics.pl
Schliesslich muss die Webanwendung neu gestartet werden:
docker exec -it openbib-master_openbib-web-perl_1 /etc/init.d/starman restart
Danach kann im lokalen Browser auf OpenBib unter der Adresse
http://localhost:8008/portal/openbib/home
zugegriffen werden.
Als Nutzer 'admin' mit dem Passwort 'top_secret' kann man sich dann an der
Web-Oberfläche anmelden.
Der Neustart von starman ist nur notwendig, wenn erstmalig die Datenbanken
eingerichtet werden. Danach kann einfach docker-compose aufgerufen
werden und die Infrastruktur läuft.
5) Import von Daten über openbib-conv
Todo
B) Dedizierte Installation auf einem Debian-System
Mit dem Skript quickinstall.pl kann die OpenBib-Portalsoftware
ausgehend von einem ausgecheckten Verzeichnisbaum des entsprechenden
git-Repositories in einer Standard-Konfiguration mit geringem Aufwand
installiert werden.
Das Skript legt unter /opt/openbib eine Standard-Verzeichnisstruktur
für OpenBib an und verlinkt dabei alle notwendigen Verzeichnisse
bzw. Dateien in den ausgecheckten git-Baum, während andere --
typischerweise lokal anzupassende -- (Konfigurations-)Dateien einfach
kopiert werden.
Der große Vorteil dieser Verlinkung in den git-Baum besteht darin,
dass man auch nach der lokalen Installation durch ein einfaches cvs
update von alle Fehlerbereinigungen und Erweiterungen lokal
profitieren und auf dem aktuellen Stand bleiben kann.
Die generelle Vorgehensweise bei der Schnell-Installation ist im
Folgenden dargestellt. Für weitere Informationen zu den einzelnen
Punkten sei auf die ausführliche Beschreibung in den folgenden
Kapiteln verwiesen.
1.) Installation der notwendigen Infrastruktur
OpenBib setzt auf einer LLPP-Infrastruktur (Linux, Lighttpd,
PostgreSQL, Perl) auf, die zusätzlich viele weitere Perl-Module sowie
andere Programme umfasst.
Um den Aufwand für die Installation so gering wie möglich zu halten,
verwenden wir die Paketeverwaltung der Linux-Distribution Debian und
stellen für notwendige Pakete, die selbst nicht in dieser Distribution
vorhanden sind, diese in einem eigenen Repository zur Verfügung.
Um dieses Repository zu nutzen muss folgende Zeile in die Datei
/etc/apt/sources.list
eingefügt werden:
# OpenBib
deb http://packages.ub.uni-koeln.de/debian buster main
Danach wird die aktuelle Pakete-Datenbank aktualisiert:
apt-get update
Zur Installation aller benötigten Pakete für die OpenBib-Infrastruktur
muss nun lediglich das Meta-Paket openbib-infrastructure installiert
werden.
apt-get install openbib-infrastructure
1.) PostgreSQL-Server
Fuer die OpenBib-Installation wird folgendes benötigt:
* Benutzername und Passwort eines Nutzers in der Datenbank, der
idealer-/einfacherweise maximale Rechte hat.
2.) Auschecken der aktuellen OpenBib-Version aus dem Repository
Die folgenden Schritte führen Sie als root aus. Legen Sie zunächst ein
Verzeichnis /opt/git an
mkdir /opt/git
und wechseln Sie dann in dieses Verzeichnis. Dort wird nun die
aktuelle OpenBib-Version aus dem offiziellen Repository ausgecheckt.
git clone https://github.com/oflimm/openbib.git openbib-master
Als abstraktes OpenBib-Verzeichnis verwenden wir openbib-current, für
die aktuell verwendete OpenBib-Version.
ln -s openbib-master openbib-current
3.) Anpassen von quickinstall.pl
Gehen Sie nun in das ausgecheckte git-Verzeichniss und passen folgende
lokale Pfadangaben im Skript quickinstall.pl an:
$documentroot
Wo ist der Basis-Pfad fuer die Dokumente Ihres Apache-Webservers
Beide Pfade sind ohne abschliessenden '/' einzugeben.
Danach erzeugen sie bitte mit touch die Datei .changed_config als
Zeichen der erfolgen Konfigurationsänderung.
touch .changed_config
4.) Aufruf von quickinstall.pl
Rufen Sie nun das Programm quickinstall.pl auf:
./quickinstall.pl
5.) Rechte ändern und Verzeichnisse anpassen
Bisher wurden alle Anweisung als Nutzer root gemacht. Diesem gehören
auch alle Dateien der OpenBib-Installation. Aus Sicherheitsgründen ist
es sehr ratsam fortan tagtäglich unter einem unprivilegierten Nutzer
openbib zu arbeiten. Diesem müssen dazu alle Dateien gehören:
chown -R openbib.www-data /opt/openbib
chown -R openbib.www-data /opt/git
chown -R openbib.www-data /var/log/openbib/
6.) Konfiguration von portal.yml
Bitte passen Sie nun die Datei
/opt/openbib/conf/portal.yml
entsprechend Ihren lokalen Gegebenheiten an. Insbesondere sind hier
der lokale Rechnername sowie die Verbindungsparameter der
PostgreSQL-Datenbanken abzuändern.
7.) Datenbanken erzeugen
Danach führen Sie bitte folgende Programme zur Erzeugung der
grundlegenden Datenbanken aus:
1. /opt/openbib/bin/createconfig.pl
2. /opt/openbib/bin/createsession.pl
3. /opt/openbib/bin/createuser.pl
4. /opt/openbib/bin/createstatistics.pl
5. /opt/openbib/bin/createenrichmnt.pl
8.) Restarten Sie den starman-Applikationsserver
/etc/init.d/starman restart
Danach sollten Sie eine funktionsfähige, aber rudimentäre
OpenBib-Installation auf Ihrem Rechner vorfinden, die sie unter
folgendem URL aufrufen koennen
http://127.0.0.1:8008/portal/openbib/home
9.) Verbesserungen für Performance und Ausfallsicherheit
9.1.) Vorschalten eines Webservers fuer die Auslieferung statischer Inhalte
Damit der OpenBib-Applikationsserver starman nicht unötig mit der
Auslieferung statischer Inhalte (CSS, JavaScript, Bilder) belastet
wird, sollte ein leichtgewichtiger Webserver vorgeschaltet werden, der
diese Inhalte ausliefert und per Proxy-Pass für den Pfad /portal die
Anfragen auf starman unter 127.0.0.1:8008 weiter reicht.
Mögliche Webserver sind lighttpd oder nginx.
9.2.) Bildung eines Clusters und Vorschalten von haproxy
Um nach 9.1.) die Performance und Ausfallsicherheit weiter zu erhöhen
sollten in der Webadministration zwei Cluster mit idealerweise je 2
Servern definiert werden. Ein Cluster beantwortet dann die
Nutzer-Anfragen, das andere steht für die nächste Dateneinspielung
bereit. Ist die Dateneinspielung fertig, dann tauschen die Cluster die
Rolle und das zweite Cluster beantwortet nun die Nutzer-Anfragen,
während das erste für die nächste Dateneinspielung bereit ist.
Dazu wird ein haproxy vorgeschaltet und verteilt die Anfragen dann
entsprechend auf die zugehörigen 4 Server. Der haproxy ist mit der
OpenBib Infrastruktur per Webservice gekoppelt und erhält aus dieser
die Information auf welche 2 Server er die Nutzer-Anfragen
weiterleiten soll.
9.3.) Verwendung von memcached
Bei hohen Zugriffszahlen sollte aus Performance-Gründen immer die
Anbindung an einen lokal laufenden memcached in der
OpenBib-Konfigurationsdatei
/opt/openbib/conf/portal.yml
aktiviert werden.
Im Clusterbetrieb wie in 9.2.) muss für memcached darüber hinaus
zwingend ein Lastverteiler wie nutcracker vorgeschaltet werden, der
aus den lokalen memcached der 4 Server eine einheitliche
memcached-"Wolke" über alle Server bildet.