[[fhc:server|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. # 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 [[admin:zertifikate|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/ 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 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 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 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 \\ ===== 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 [[admin:ghostscript|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 [[https://github.com/FH-Complete/FHC-Core/blob/master/system/services/upstart/unoconv.conf|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 [[https://github.com/FH-Complete/FHC-Core/blob/master/system/services/systemd/unoconv%40.service|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 [[admin:systemd|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) \\