Benutzer-Werkzeuge

Webseiten-Werkzeuge


admin:installation

zurück zur Übersicht

FH-Complete Server Installation

Diese Installationsanleitung befindet sich noch im Aufbau

Diese Anleitung beschreibt die Installation des FH-Complete Core. In diesem Setup wird davon ausgegangen, dass sich die Datenbank auf einem eigenen Server befindet.


Voraussetzungen

Die Installation setzt folgende Infrastruktur voraus:

  • LDAP Server (ldap.example.com)
  • Mail Server (mail.example.com)
  • Storage
  • PostgreSQL Server (db.example.com)
  • Der Server selbst ist unter (fhcomplete.example.com) erreichbar


Grundinstallation

Ausgangsbasis für die Installation ist eine Standardinstallation von Debian 9 Stretch. Die folgenden Befehle für die Installation werden als root User ausgeführt.

Installation des Apache Webservers

apt install apache2

Installation der erforderlichen PHP Pakete

>= PHP 7

apt install php7.0 php7.0-xsl php7.0-gd php7.0-pgsql php7.0-ldap php7.0-mcrypt php7.0-mbstring php7.0-soap php7.0-curl php7.0-zip

<= PHP 5

apt-get install php5-xsl php5-gd php5-pgsql php5-ldap php5-mcrypt

Anpassung der Konfigurationsdatei unter PHP 5

register_globas = Off
magic_qoutes_gpc = Off
short_open_tags = Off
asp_tags = Off
upload_max_filesize = 15MB
pgsql.allow_persistent = On
output_buffering = 4096


Zusätzliche Tools installieren

apt install vim zip

Soll die Datenübernahme von einem MSSQL Server erfolgen, muss zusätzlich folgendes Paket installiert werden:

apt-get install php5-sybase 


NTP - Zeitsynchronisation

Die Uhrzeit sollte auf allen FH-Complete Servern annähernd die selbe sein. Deshalb sollte diese mit NTP synchron gehalten werden.

apt-get install ntp

In der Datei /etc/ntp.conf wird dann ein Timeserver hinzugefügt.

/etc/ntp.conf
# You do need to talk to an NTP server or two (or three).
#server ntp.your-provider.example
server ts.example.com


Apache einrichten

HTTPS aktivieren

Um die HTTPS Verschlüsselung zu aktivieren benötigen wir das Server Zertifikat und den dazu passenden private Key. Den private Key speichern wir unter /etc/ssl/private/fhcomplete.key und das Zertifikat unter /etc/ssl/certs/fhcomplete.pem
⇒ Details und weitere Informationen zu den Zertifikaten

Mit folgendem Befehl aktivieren wir SSL im Apache

a2enmod ssl
systemctl restart apache2

Wir kopieren das default-ssl Config und passen dort die Zertifikatspfade entsprechend an:

cd /etc/apache2/sites-available/
cp default-ssl.conf fhcomplete-ssl.conf

In der neu erstellten fhcomplete-ssl.conf muss der Pfad zu den Zertifikaten angegeben werden:

/etc/apache2/sites-available/fhcomplete-ssl.conf
   SSLCertificateFile      /etc/ssl/certs/fhcomplete.pem
   SSLCertificateKeyFile /etc/ssl/private/fhcomplete.key

Mit folgendem Befehl aktivieren wir die Konfiguration

a2ensite fhcomplete-ssl.conf
systemctl reload apache2

Nachdem die SSL Verbindung funktioniert richten wir einen Redirect von HTTP auf HTTPS ein. Dazu editieren wir die Datei /etc/apache2/sites-enabled/000-default.conf

/etc/apache2/sites-enabled/000-default.conf
....
        DocumentRoot /var/www/html
        Redirect permanent / https://fhcomplete.example.com
....

In der fhcomplete-ssl.conf richten wir einen Caldav Redirect ein sofern die Caldav Schnittstelle verwendet werden soll. Zusätzlich setzen wir die Option AllowOverride.

/etc/apache2/sites-enabled/fhcomplete-ssl.conf
# Redirect für Caldav einrichten. Beim Einrichten des Caldav Clients ist es dadurch nicht nötig die volle URL
# Anzugeben sondern lediglich den Hostnamen
Redirect permanent /.well-known/caldav /webdav/lvplan.php/
 
<Directory /var/www/html/>
    Options Indexes FollowSymLinks MultiViews
 
    # AllowOverride auf AuthConfig und Limit setzen damit die Authentifizierung über .htaccess
    # Dateien funktioniert
    AllowOverride AuthConfig Limit
    Order allow,deny
    allow from all
</Directory>         

Damit die Änderungen übernommen werden starten wir den Apache neu:

systemctl restart apache2

Seamonkey 2.11 benötigt TLS 1.0 für verschlüsselte Verbindungen. Unter Ubuntu ab Version 20.04 müssen TLS 1.0 und die benötigten Ciphers allerdings explizit aktiviert werden! Dazu müssen in /etc/apache2/mods-enabled/ssl.conf folgende Optionen gesetzt sein:

SSLProtocol all
SSLCipherSuite ALL:@SECLEVEL=1

Private Temp deaktivieren - Damit Apache mit Systemd kein eigenes /tmp Verzeichnis erstellt muss das PrivateTmp deaktiviert werden da es sonst zu Problemen bei der Dokumentenerstellung kommt

cd /etc/systemd/system/
mkdir apache2.service.d
cd apache2.service.d
vim nopt.conf

Die Datei hat folgenden Inhalt

[Service]
PrivateTmp=false

Damit die Änderungen übernommen werde muss der Daemon und Apache startet werden.

systemctl daemon-reload
systemctl restart apache2


LDAP Anbindung

LDAP Modul in Apache aktivieren

a2enmod authnz_ldap
systemctl restart apache2

LDAP Utils installation

apt install ldap-utils

Anpassung der LDAP Config unter /etc/ldap/ldap.conf

/etc/ldap/ldap.conf
host ldap.example.com
base dc=example,dc=com


FH-Complete Installation

Zuerst stellen wir sicher dass Git und Composer installiert sind

apt install git composer

Danach laden wir den aktuellen FH-Complete Core und das LDAP Addon von GitHub.

cd /home/fhcomplete/
mkdir git
cd git
git clone https://github.com/FH-Complete/FHC-Core.git FHC-Core
git clone https://github.com/FH-Complete/FHC-AddOn-LDAP.git FHC-AddOn-LDAP

Und kopieren den aktuellen Stand in das Webserver-Verzeichnis

rsync -ruv /home/fhcomplete/git/FHC-Core/* /var/www/html/ --exclude=".git"
rsync -ruv /home/fhcomplete/git/FHC-AddOn-LDAP/* /var/www/html/addons/ldap/ --exclude=".git"

Danach laden wir die nötigen Zusatzmodule per Composer nach

cd /var/www/html
composer install

Um die htaccess Dateien zentral zu verwalten erstellen wir einen eigenen Ordner und verlinken die .htaccess Dateien mit symbolischen Links

mkdir /var/fhcomplete
mkdir /var/fhcomplete/htaccess
cd /var/fhcomplete/htaccess
vim .htaccess
vim .htaccessrdf
/var/fhcomplete/htaccess/.htaccess
AuthBasicProvider ldap
AuthName "FH Complete"
AuthType Basic
AuthLDAPURL "ldap://ldap.example.com:389/ou=People,dc=example,dc=com?uid?one?objectclass=posixAccount" STARTTLS
AuthLDAPGroupAttribute memberuid
AuthLDAPGroupAttributeIsDN Off
Require valid-user

Apache 2.2

/var/fhcomplete/htaccess/.htaccessrdf
Order deny,allow
Deny from all
Allow from 127.0.0.1
AuthBasicProvider ldap
AuthName "FH Complete"
AuthType Basic
AuthLDAPURL "ldap://ldap.example.com:389/ou=People,dc=example,dc=com?uid?one?objectclass=posixAccount" STARTTLS
AuthLDAPGroupAttributeIsDN Off
AuthLDAPGroupAttribute memberuid
require valid-user
satisfy any

Apache 2.4

/var/fhcomplete/htaccess/.htaccessrdf
Require local
AuthBasicProvider ldap
AuthName "FH Complete"
AuthType Basic
AuthLDAPURL "ldap://ldap.example.com:389/ou=People,dc=example,dc=com?uid?one?objectclass=posixAccount" STARTTLS
AuthLDAPGroupAttributeIsDN Off
AuthLDAPGroupAttribute memberuid
require valid-user
cd /var/www/html/cis/private/
ln -s /var/fhcomplete/htaccess/.htaccess .htaccess

cd /var/www/html/vilesci/
ln -s /var/fhcomplete/htaccess/.htaccess .htaccess

cd /var/www/html/system/
ln -s /var/fhcomplete/htaccess/.htaccess .htaccess

cd /var/www/html/content/
ln -s /var/fhcomplete/htaccess/.htaccess .htaccess

cd /var/www/html/rdf/
ln -s /var/fhcomplete/htaccess/.htaccessrdf .htaccess

Damit die Installation der Extensions funktioniert müssen Schreibrechte für bestimmte Ordner gesetzt werden:

cd /var/www/html/

chgrp www-data application/extensions/ application/tmp/ application/components/extensions/ application/config/extensions/ application/controllers/extensions/ application/helpers/extensions/ application/hooks/extensions/ application/libraries/extensions/ application/models/extensions/ application/views/extensions/ application/widgets/extensions/ public/extensions/

chmod 775 application/extensions/ application/tmp/ application/config/extensions/ application/components/extensions/ application/controllers/extensions/ application/helpers/extensions/ application/hooks/extensions/ application/libraries/extensions/ application/models/extensions/ application/views/extensions/ application/widgets/extensions/ public/extensions/

Auf den Ordner vilesci/bisdaten müssen Schreibrechte gesetzt werden:

cd /var/www/html/
chgrp www-data vilesci/bisdaten/
chmod g+w vilesci/bisdaten/

Als nächstes erstellen wir die nötigen Konfigurationsdateien.

cd /var/www/html/config/
cp global.config-default.inc.php global.config.inc.php
cp vilesci.config-default.inc.php vilesci.config.inc.php

Im Vilesci Config müssen folgende Einträge zwingend angepasst werden:

define("DB_HOST","db.example.com");
define("DB_NAME","fhcomplete");
define("DB_PASSWORD","PASSWORT");

define('APP_ROOT','https://fhcomplete.example.com/');
define('XML_ROOT','https://fhcomplete.example.com/rdf/');

define("AUTH_SYSTEM", "auth_mixed");
define("AUTH_NAME","FH Complete"); // gleiche Bezeichnung wie AuthName im htaccess

define('LDAP_SERVER','ldap://ldap.example.com');
define('LDAP_BASE_DN','ou=People,dc=example,dc=com');
define('MAIL_DEBUG',''); // Entrag entfernen da sonst alle Mails an diese Addresse gesendet werden


Mail-Versand einrichten

Damit die Mails vom FH-Complete zugestellt werden, muss der Server entsprechend konfiguriert werden damit die Mails an den Mailserver weitergeleitet werden.

Dazu wird zuerst Postfix installiert:

apt-get install postfix

Sollte nicht automatisch die Konfigurationsseite geöffnet werden, kann dies manuell mit

dpkg-reconfigure postfix

aufgerufen werden. Hier wird Satellitensystem ausgewählt und die entsprechenden Informationen eingetragen.

Danach wird der User konfiguriert der die E-Mails verschickt. Dazu erstellen wir eine neu Datei:

vim /etc/postfix/password

Und tragen dort den Server, Usernamen und Passwort ein

mail.example.com   fhcomplete@example.com:MeinPassw0rT

Und folgender Befehl ausgeführt

postmap /etc/postfix/password

Bei der Versendung der Mails muss ggf die Absendeadresse überschrieben werden damit der Mailversand erlaubt ist.

vi /etc/postfix/generic

In diesem Beispiel werden alle Adressen die von www-data@example.com bzw root@example.com gesendet werden auf fhcomplete@example.com geändert

#Absenderfilter   NeuerAbsender
www-data@example.com fhcomplete@example.com
root@example.com fhcomplete@example.com

Um den Absender von allen Mails gleich zu setzen kann im Config die Option MAIL_FROM gesetzt werden

Hashtable erstellen

postmap /etc/postfix/generic

Die restlichen Einstellungen werden in der main.cf vorgenommen. Hier ein Beispiel für die Verwendung von Office 365:

smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/password
smtp_sasl_security_options =
relayhost = outlook.office365.com:587
smtp_generic_maps = hash:/etc/postfix/generic
smtp_sasl_security_options = noanonymous
smtp_use_tls = yes

Postfix neu starten

/etc/init.d/postfix restart

Eventuelle Fehlermeldungen beim Versand der E-Mails sind unter /var/log/mail.log sichtbar.

Mailversand Testen

Testen des Mailversands von der Commandline:

mail -s "TestBetreff" empfaenger@example.com

Nach dem Enter drücken kann der Mailinhalt eingegeben werden. In der letzten Zeile wird ein „.“ eingegeben und mit Enter wird das Mail versandt.

Mailversand über das Messaging System

Seit Version 3.2 werden Mails auch über das Messaging System versandt. Damit die Nachrichten des Messaging Systems korrekt zugestellt werden muss ein Cronjob eingerichtet werden der regelmäßig diese Nachrichten verschickt.

Dazu wird der folgende Befehl in der Cronjobverwaltung im Vilesci hinzugefügt:

/var/www/vilesci/htdocs/index.ci.php MailJob sendMessages

Alternativ kann auch in der Datei application/config/message.php die Einstellung

$config['send_immediately'] = true;

gesetzt werden. Dadurch werden die Messages direkt verschickt. Dies ist jedoch nicht empfehlenswert da bei Messages an viele Empfänger diese direkt gesendet werden und die Mails gegebenenfalls als Spam markiert werden bzw der Mailserver geblockt wird.

Bei der Cronjob Variante werden die Mails stattdessen verzögert bzw portionsweise verschickt.

Fehlerquellen

Mails werden nur an eine bestimmte Adresse versandt

Im FH-Complete können zu Debuggingzwecken alle versendeten E-Mails an eine Adresse umgeleitet werden. Dazu gibt es im Config die Einstellung MAIL_DEBUG.
Wenn hier eine E-Mail Adresse eingetragen ist, werden alle vom FH-Complete versendeten Mails an diese Adresse umgeleitet.

Domain der Absendeadresse ist falsch

/etc/mailname muss den korrekten Domainnamen enthalten


Dokumenterstellung einrichten

Einige Dokumente benötigen für die Erstellung das Tool unoconv.
Teilweise wird auch Ghostscript verwendet.

Damit unoconv funktioniert, muss es am Server installiert sein (ca. 500MB):

apt-get install unoconv

Zusätzlich muss der unoconv Listener am Server laufen. Um den Listener zu starten, gibt es verschiedene Wege:

MANUELL

Mittels einem einfachen & am Ende des Befehls kann der Prozess geforkt werden. Das Problem bei dieser Methode ist, dass wenn das System neu gestartet wird, oder der Prozess durch einen Fehler beendet wird, der Befehl jedes mal erneut ausgeführt werden muss.

Daher wird empfohlen, den Prozess über ein Init-System(SystemD, Upstart, SysVinit) starten zu lassen

unoconv --listener &

oder

unoconv -l &

UPSTART

Nur bis einschließlich Ubuntu 14.04!
Folgende versionen verwenden systemd.
Datei unoconv.conf nach /etc/init/ kopieren und gegebenenfalls anpassen.

setuid gibt den Usernamen an

# initctl reload-configuration ausführen, um die neue konfiguration zu laden
# start unoconv um den Dienst zu starten
# status unoconv um den Status abzufragen
Das zugehörige Log befindet sich in /var/log/upstart/unoconv.log

SYSTEMD

Verwenden die meisten neueren Distributionen.
Auch Ubuntu seit 14.10.
Datei unoconv@.service nach /etc/systemd/system/ kopieren.
# systemctl daemon-reload ausführen, um die neue konfiguration zu laden
# systemctl enable unoconv@[USERNAME] um den Dienst beim Booten zu aktivieren
# systemctl start unoconv@[USERNAME] um den Dienst zu starten
# systemctl status unoconv@[USERNAME] um den Status und das Log abzufragen

Näheres gibt es unter Systemd.

Schriften

Da die PDF Dokumente am Server generiert werden, müssen die benötigten Schriftarten auch am Server installiert sein.

Arial / Times New Roman / Courier

Microsoft Font Pack Installieren

enthält folgende Schriften:

  • Andale Mono
  • Arial Black
  • Arial (Bold, Italic, Bold Italic)
  • Comic Sans MS (Bold)
  • Courier New (Bold, Italic, Bold Italic)
  • Georgia (Bold, Italic, Bold Italic)
  • Impact
  • Times New Roman (Bold, Italic, Bold Italic)
  • Trebuchet (Bold, Italic, Bold Italic)
  • Verdana (Bold, Italic, Bold Italic)
  • Webdings

Die Microsoft Fonts befinden sich im Contrib Zweig und müssen zuerst zur /etc/apt/sources.list hinzugefügt werden:

deb http://ftp.at.debian.org/debian/ jessie contrib
sudo apt-get install ttf-mscorefonts-installer 
fc-cache -v

Tahoma

Die Schrift Tahoma ist in dem Font-Pack nicht enthalten. Diese kann wie folgt installiert werden:

apt-get install cabextract
wget https://master.dl.sourceforge.net/project/corefonts/OldFiles/IELPKTH.CAB
cabextract -F 'tahoma*ttf' IELPKTH.CAB
mkdir -p /usr/share/fonts/truetype/msttcorefonts/
mv -f tahoma*ttf /usr/share/fonts/truetype/msttcorefonts/
chmod 644 /usr/share/fonts/truetype/msttcorefonts/tahoma*
fc-cache -v
rm -f IELPKTH.CAB

Schriftarten im .ttf Format

Schriften die im .ttf Format vorhanden sind können in den Ordner /usr/share/fonts/ kopiert werden. Mit dem Befehl

fc-cache -fv

muss dann der Font Cache erneuert werden damit die neuen Schriften erkannt werden.

Damit unoconv die neue Schriftart beim Erstellen der PDFs auch wirklich verwendet, muss nach der installation der Schrift, der unoconv listener neu gestartet werden. (Dabei müssen der unoconv listener und alle soffice prozesse beendet werden)


/var/www/wiki/data/pages/admin/installation.txt · Zuletzt geändert: 2024/01/11 17:29 von oesi