Diese Anleitung beschreibt die Installation des FH-Complete Core. In diesem Setup wird davon ausgegangen, dass sich die Datenbank auf einem eigenen Server befindet.
Die Installation setzt folgende Infrastruktur voraus:
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.
apt install apache2
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
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
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
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.
# You do need to talk to an NTP server or two (or three). #server ntp.your-provider.example server ts.example.com
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:
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
.... 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.
# 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 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
host ldap.example.com base dc=example,dc=com
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
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
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
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
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.
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.
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.
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.
/etc/mailname muss den korrekten Domainnamen enthalten
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:
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 &
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
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.
Da die PDF Dokumente am Server generiert werden, müssen die benötigten Schriftarten auch am Server installiert sein.
Microsoft Font Pack Installieren
enthält folgende Schriften:
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
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
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.