[inhalt]
Projekt BISO 3 - Handbuch

Installation

English Version

Bitte beachten Sie die Systemvoraussetzungen, bevor Sie mit der Installation beginnen!

Installation unter Linux

Die Linux installation kann klassisch durchgeführt werden oder über ein Docker Image. Das Docker Image kann bei uns auf Anfrage bezogen werden.

Docker Installation

(Anpassen wie benötigt)

docker run -d --name biso-prod \
    -v /PATH_TO_BISO_DATA/data:/var/www/html/data \
    -e GAIA_CONFIG=/PATH_TO_BISO_CONFIGURATION/config.php \
    -p 80:80 \
    biso:3.0.0

PostgreSQL

Den PostgreSQL Server über den Paketmanager installieren und konfigurieren.

DB-Benutzer für BISO erstellen

CREATE ROLE biso WITH
    LOGIN
    INHERIT
    CREATEDB
    CREATEROLE
    NOREPLICATION
    ENCRYPTED PASSWORD 'xxxxxxxxxxxxxxxxxxxxxxxxxxxx';

Datenbank erstellen mit den frisch erstellten Benutzer als Besitzer.

CREATE DATABASE biso
    WITH
    OWNER = biso
    ENCODING = 'UTF8'
    LC_COLLATE = 'de_CH.utf8'
    LC_CTYPE = 'de_CH.utf8';

Nun kann der mitgelieferte DB-Dump in diese DB eingespielt werden.

Performance-Optimierungen

PostgreSQL wird defaultmässig mit Werten ausgeliefert, welche mehr der Kompatibilität denn der Performance dienen. Deshalb ist es wichtig, dass gewisse Konfigurationsparameter nach der Installation noch etwas angepasst werden. Diese Konfigurationsparameter sind in /etc/postgresql/postgresql.conf zu finden

shared_buffers: sollte auf ca. 1/4 des Memorys des Servers eingestellt werden, auf Windows max. 512M, also z.B.:

shared_buffers = 512MB

effective_cache_size: Dies ist mehr eine Planungs-Entscheidung für Postgresql, was er im Memory macht, und was er auf Disk schreibt. Der Wert sollte ca. 1/2 des verfügbaren freien Memory sein. Dies sollte via TaskManager ermittelt werden. Bei 4GB total kann dies gut 1 GB sein, also etwa:

effective_cache_size = 1GB

autovacuum: Dies sollte unbedingt eingeschaltet werden, und führt von Zeit zu Zeit den Vacuum-Prozess von Postgres aus (re-indizieren, Neu-anordnen von Daten etc).

autovacuum = on

work_mem: Vor allem benötigt für jegliche Sortieroptionen. Dieser Wert wird pro Query und Verbindung gebraucht, also vorsicht mit erhöhen. Ich würde ca. so rechnen: (verfügbares RAM / max. Anzahl Verbindungen) runden auf 2^x. Bei ca 2GB freiem RAm und 100 Verbindungen wären dies: 2GB / 100 = 16MB

work_mem = 16M

Ev. wäre es gut, diese Settings mal zu prüfen und ev. anzupassen. Dies kann der DB noch etliches an Performance bringen. Es ist allerdings ein PG-Server-restart notwendig, also eher an einer Randstunde probieren.

Die folgende Einstellung ist vor allem auf Windows-Systemen ein grosser Performance-Boost:

update_process_title = off

PHP / Webserver

Die nötigen Packete für PHP sowie einem Webserver installieren. Das DocumentRoot des Webservers muss auf [WEBROOT]/public zeigen.

Beispiel Apache-Config:

<VirtualHost *:80>
    ServerName biso.example.com

    DocumentRoot /var/www/html/public

    # .....
</VirtualHost>

Konfiguration (php.ini)

Die Datei php.ini ist je nach System an anderer stelle abgelegt. Mit php -i lässt sich die Datei finden.

    ; Note: Enable the required PHP extensions, as per your distribution:
    ; Normally, extensions are enabled via the system's package manager, not in php.ini directly:
    ; fileinfo
    ; ftp
    ; gd
    ; intl
    ; json
    ; mb_string
    ; soap
    ; pdo
    ; pdo-pgsql
    ; opcache
    ; openssl
    ; xml
    ; zip

    ; e.g.:
    ; extension=fileinfo

    memory_limit = 256M
    date.timezone = "Europe/Zurich"
    post_max_size = 12M
    upload_max_filesize = 10M

    memory_limit = 256M
    date.timezone = "Europe/Zurich"
    post_max_size = 12M
    upload_max_filesize = 10M

BISO Paket

Das BISO Installations Packet kann entpackt sowie in das WEBROOT verschoben werden.

Datei-Berechtigungen

Der Webserver Benutzer muss Schreib- und Lesezugriff auf das konfigurierte datadir (siehe config.php) haben.

FOP

FOP ist das Java-Tool, um PDFs zu erstellen. Es benötigt eine fop.xconf-Datei, welches die verwendeten Schriften konfiguriert.

config.php

BISO wird über die Datei config.php im webroot konfiguriert.

  1. Kopieren der Beispieldatei (config.orig.php) nach webroot/config.php
  2. Anpassen der Werte in der Konfigurationsdatei

Installation unter Windows

PostgreSQL

DB-Benutzer für BISO erstellen

CREATE ROLE biso WITH
    LOGIN
    NOSUPERUSER
    INHERIT
    CREATEDB
    CREATEROLE
    NOREPLICATION
    ENCRYPTED PASSWORD 'md5fbe75a7d98e04014c631dab39c6f85c0';

Datenbank erstellen mit den frisch erstellten Benutzer als Besitzer.

CREATE DATABASE biso
    WITH
    OWNER = biso
    ENCODING = 'UTF8'
    LC_COLLATE = 'German_Germany.1252'
    LC_CTYPE = 'German_Germany.1252'
    TABLESPACE = pg_default
    CONNECTION LIMIT = -1
    TEMPLATE = template0;

Nun kann der mitgelieferte DB-Dump in diese DB eingespielt werden.

Performance anpassungen

PostgreSQL wird defaultmässig mit Werten ausgeliefert, welche mehr der Kompatibilität denn der Performance dienen. Deshalb ist es wichtig, dass gewisse Konfigurationsparameter nach der Installation noch etwas angepasst werden. Diese Konfigurationsparameter sind in C:\BISO\PostgreSQL\data\postgresql.conf zu finden

shared_buffers: sollte auf ca. 1/4 des Memorys des Servers eingestellt werden, auf Windows max. 512M, also z.B.:

shared_buffers = 512MB

effective_cache_size: Dies ist mehr eine Planungs-Entscheidung für Postgresql, was er im Memory macht, und was er auf Disk schreibt. Der Wert sollte ca. 1/2 des verfügbaren freien Memory sein. Dies sollte via TaskManager ermittelt werden. Bei 4GB total kann dies gut 1 GB sein, also etwa:

effective_cache_size = 1GB

autovacuum: Dies sollte unbedingt eingeschaltet werden, und führt von Zeit zu Zeit den Vacuum-Prozess von Postgres aus (re-indizieren, Neu-anordnen von Daten etc).

autovacuum = on

work_mem: Vor allem benötigt für jegliche Sortieroptionen. Dieser Wert wird pro Query und Verbindung gebraucht, also vorsicht mit erhöhen. Ich würde ca. so rechnen: (verfügbares RAM / max. Anzahl Verbindungen) runden auf 2^x. Bei ca 2GB freiem RAm und 100 Verbindungen wären dies: 2GB / 100 = 16MB

work_mem = 16M

Ev. wäre es gut, diese Settings mal zu prüfen und ev. anzupassen. Dies kann der DB noch etliches an Performance bringen. Es ist allerdings ein PG-Server-restart notwendig, also eher an einer Randstunde probieren.

Die folgende Einstellung ist vor allem auf Windows-Systemen ein grosser Performance-Boost:

update_process_title = off

PHP

Download

Auf folgender Homepage kann PHP Heruntergeladen werden (VC15 x64 Non Thread Safe): https://windows.php.net/download

Installation

Das heruntergeladene ZIP-File wird nach C:\BISO\php entpackt.

Konfiguration (php.ini)

Die Datei „php.ini-production“ wird zu „php.ini“ umbenannt und bearbeitet:

    // Definiert Fileberechtigungen innerhalb von IIS
    fastcgi.impersonate = 0
    fastcgi.logging = 0
    cgi.fix_pathinfo=1
    cgi.force_redirect = 0

    extension_dir = "C:\BISO\php\ext"
    extension=ftp
    extension=fileinfo
    extension=gd2
    extension=mbstring
    extension=openssl
    extension=pdo_pgsql
    extension=soap

    memory_limit = 256M
    date.timezone = "Europe/Zurich"

    post_max_size = 12M
    upload_max_filesize = 10M

Semikolon entfernen (und Pfad setzten). Einige können schon eingeschaltet sein, oder gar nicht vorhanden:

IIS 8

IIS 8 kann über den Servermanger als Rolle hinzugefügt werden.

CGI, Windows Authentication, Verwaltungstools

Die rot markierten Felder müssen noch manuell ausgewählt werden:

Windows IIS Role Windows Authentication

Windows IIS Role CGI

URL Rewrite 2.1

Zusätzlich muss die Extention URL Rewrite 2.1 installiert werden die unter https://www.iis.net/downloads/microsoft/url-rewrite heruntergeladen werden kann:

Windows IIS URL Rewrite 2.1

Modulzuordnung

Im Internetinformationsdienste (IIS)-Manager unter Server -> Handlerzuordnungen kann nun eine Modulzuordnung hinzugefügt werden. Das geöffnete Fenster kann wie folgt ausgefüllt werden:

Windows IIS Modulmapping

Webroot Definition

Die Default Site kann nun umbenannt werden (z.B. BISO). Mit Rechtsklick auf die Site kann des weiteren der Pfad zum BISO root-Directory angepasst werden:

Windows IIS Webroot

BISO-Packet

Das BISO Installations Packet kann entpackt sowie in das WEBROOT verschoben werden.

Datei-Berechtigungen

Der Benutzer „IIS APPOOOL\DefaultAppPool“ oder IISUSER muss eventuell Schreib & Lese rechte auf das Temp sowie Data Verzeichnis haben, wenn kein andere Bentuzer in IIS Definiert wurde.

Autentifizierung SSO

Unter Sites -> Default -> Authentifzierung muss folgendes eingestellt sein.

Windows Authentication -> Enable Anonymous Authentification -> Disabled Alle anderen -> Disabled

Windows IIS Autentifizierung

Des weiteren muss in der BISO Konfigurations (C:\BISO\webroot\config.php) folgendes angepasst werden.

if (php_sapi_name() !== 'cli') {
    Config::set('remote_user', preg_replace('/^.*\\\\/', '', $_SERVER['REMOTE_USER']));
    Config::set('remote_user_auth', true);
}

FOP

Windows IIS JAVA_HOME

Update unter Linux

Vor dem Update sollte ein DB-/Dateibackup von BISO erstellt werden.

Dateien / webroot

Update Packet entpacken sowie die Dateien mit rsync abgeleichen.

rsync -a -b \
    --backup-dir=/tmp/BISO_UPDATE/deleted \
    --delete \
    --progress \
    --exclude=config.php \
    --exclude=fonts \
    --exclude=data \
    --exclude=components/phpdocx/config/phpdocxconfig.ini \
    /tmp/BISO_UPDATE/WEBROOT/ /PATH/TO/WEBROOT

DB Migration

cd /PATH/TO/WEBROOT
php ./biso-cli migration exec

Update unter Windows

Vor dem Update sollte ein DB-/Dateibackup von BISO erstellt werden.

Dateien

Update Packet entpacken und in die Dateien im Ordner BISO kopieren (bestehende Dateien ersetzten)

DB Migration

C:\BISO\webroot
C:\BISO\php\php.exe biso-cli migration exec

Vorbereiten einer neuen Kunden-Version

Die Konfiguration eines neuen Kunden in BISO wird basierend auf einer bestehenden Installation gemacht. Dies erleichtert die Konfiguration massiv, bedingt aber ein paar gezielte Daten-Löschungen auf der Datenbank.

Kundenparameter

In der Tabelle params wird die Spalte kunde auf den gewünschten Wert gesetzt.

Kunde in KP.param.Form

Im Parameter-Panel (ExtJS-Datei KP.param.Form) muss der Kunde in der Auswahlliste ergänzt werden.

Logo platzieren

Im Verzeichnis webroot/public/resources/images/wappen/ eine Datei {params.kunde}.svg platzieren

Template-Files kopieren

Kopieren folgender Vorlagen-Ordner:

Datenbank-Tabellen aufräumen

Tabellen, welche komplett geleert werden

beilage beratungsfall bf_bericht bf_dokument bf_link_typ bf_log bf_notiz bf_termin bf_termin_protokoll bf_workshop_link bf_workshop_termin brief_abschnitt hilfe_themen import_inbox information information_institution inst_schulstufe_link involvierte_institution involvierte_person job job_step leistung login_log modul passwort_log person_funktions_spezialisierungen prod_in_modul qm_abschlussmodalitaet qm_beratungergebnis qm_beratungverlauf qm_beschaeftigungssituation qm_eigenaktivitaetklient qm_fragestellunganlass qm_katalog qm_laufendeausbildung qm_letzterausbildungabschluss qm_messages qm_selbstproblemloesungbefaehigung qm_zielerreichung qm_zuweisendestelle raumsituation rechnung search_settings settings teilsummen_gruppen_rechnungen termin_publikations_mailboxen textbausteine uebermittlungslauf value_map veranstalt_leistung veranstalt_termin veranstalter veranstaltung workshop workshop_block_in_workshop workshop_plan

Tabellen, welche selektiv geleert werden

anschlussloesung ausbildung ausbildung_richtung ausweis_kat begruendung_kostenbefreiung benutzer benutzer_gruppe beratung_erfahren_durch beratungsfall_ergebnis beratungsfall_fragestellung bezirk bf_archiv_status bf_bericht_vorlage bf_ergebnis bf_fragestellung bf_termin_absage_grund bf_termin_besprechungsart bf_termin_thema bf_typ bf_typ_kategorie bf_uebergang brief_vorlage brief_abschnitt brueckenangebot deutsch_niveau dokument_vorlagen empfaenger_vorlage ergebnis_arbeitsmarktfaehigkeitscheck fakultaet fakultaet_ausbildungs_richtung feiertag funkt_kategorie funktion funktions_spezialisierungen gemeinde gruppe inst_typ_kategorie institution_typ kanton login mehrfachbelastung muttersprache nationalitaet param plz plz_in_bezirk prod_typ reporting_tables resultat schul_funktion schul_klasse schul_stufe situation sozialhilfe sprache sr_gruppe stunden titel treffpunkt veranstalt_typ zeit_dauer zielgruppe funkt_pers_link person institution memo_texte mitarbeiter produkt

komplett zu löschende Tabellen

bl_mentoring_import_personen