Benutzer-Werkzeuge

Webseiten-Werkzeuge


fhc:installation

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
fhc:installation [2018/06/22 15:15]
pollmann [SYSTEMD]
— (aktuell)
Zeile 1: Zeile 1:
-[[fhc:​server|zurück zur Übersicht]] 
- 
-====== FH-Complete Server Installation ====== 
- 
-<note warning> 
-Diese Installationsanleitung befindet sich noch im Aufbau 
-</​note>​ 
-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 ==== 
-<​code>​ 
-apt install apache2 
-</​code>​ 
- 
- 
-==== Installation der erforderlichen PHP Pakete ==== 
- 
-=== ab PHP 7 === 
- 
-<​code>​ 
-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 
-</​code>​ 
- 
- 
-=== bis PHP 5 === 
- 
-<​code>​ 
-apt-get install php5-xsl php5-gd php5-pgsql php5-ldap php5-mcrypt 
-</​code>​ 
- 
- 
-**Anpassung der Konfigurationsdatei unter PHP 5** 
-<​code>​ 
-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 
-</​code>​ 
- 
- 
-\\ 
-==== Zusätzliche Tools installieren ==== 
-<​code>​ 
-apt install vim zip 
-</​code>​ 
- 
-Soll die Datenübernahme von einem MSSQL Server erfolgen, muss zusätzlich folgendes Paket installiert werden: 
-<​code>​ 
-apt-get install php5-sybase ​ 
-</​code>​ 
- 
-\\ 
-===== NTP - Zeitsynchronisation ===== 
-Die Uhrzeit sollte auf allen FH-Complete Servern annähernd die selbe sein. Deshalb sollte diese mit NTP synchron gehalten werden. 
- 
-<​code>​ 
-apt-get install ntp 
-</​code>​ 
- 
-In der Datei /​etc/​ntp.conf wird dann ein Timeserver hinzugefügt. 
- 
-<code bash /​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 
-</​code>​ 
- 
-\\ 
-===== 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 
-Nähere Informationen zu den Zertifikaten gibt es [[fhc:​zertifikate|hier]] 
- 
-Mit folgendem Befehl aktivieren wir SSL im Apache 
-<​code>​ 
-a2enmod ssl 
-systemctl restart apache2 
-</​code>​ 
- 
-Wir kopieren das default-ssl Config und passen dort die Zertifikatspfade entsprechend an: 
-<​code>​ 
-cd /​etc/​apache2/​sites-available/​ 
-cp default-ssl.conf fhcomplete-ssl.conf 
-</​code>​ 
- 
-In der neu erstellten fhcomplete-ssl.conf muss der Pfad zu den Zertifikaten angegeben werden: 
-<code bash /​etc/​apache2/​sites-available/​fhcomplete-ssl.conf>​ 
-   ​SSLCertificateFile ​     /​etc/​ssl/​certs/​fhcomplete.pem 
-   ​SSLCertificateKeyFile /​etc/​ssl/​private/​fhcomplete.key 
-</​code>​ 
- 
-Mit folgendem Befehl aktivieren wir die Konfiguration 
-<​code>​ 
-a2ensite fhcomplete-ssl.conf 
-systemctl reload apache2 
-</​code>​ 
- 
-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 
- 
-<code bash /​etc/​apache2/​sites-enabled/​000-default.conf>​ 
-.... 
-        DocumentRoot /​var/​www/​html 
-        Redirect permanent / https://​fhcomplete.example.com 
-.... 
-</​code>​ 
- 
-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 und setzen die Environment Variable für Codeigniter. 
-<code bash /​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 
- 
-    # Environment fuer Codeigniter auf production setzen 
-    SetEnv CI_ENV production 
- 
-</​Directory> ​         
-</​code>​ 
- 
-Damit die Änderungen übernommen werden starten wir den Apache neu: 
-<​code>​ 
-systemctl restart apache2 
-</​code>​ 
- 
- 
-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 
- 
-<​code>​ 
-cd /​etc/​systemd/​system/​ 
-mkdir apache2.service.d 
-cd apache2.service.d 
-vim nopt.conf 
-</​code>​ 
- 
-Die Datei hat folgenden Inhalt 
-<code /​etc/​systemd/​system/​apache2.service.d/​nopt.conf>​ 
-[Service] 
-PrivateTmp=false 
-</​code>​ 
- 
-Damit die Änderungen übernommen werde muss der Daemon und Apache startet werden. 
-<​code>​ 
-systemctl daemon-reload 
-systemctl restart apache2 
-</​code>​ 
- 
-\\ 
-===== LDAP Anbindung ===== 
- 
-LDAP Modul in Apache aktivieren 
-<​code>​ 
-a2enmod authnz_ldap 
-systemctl restart apache2 
-</​code>​ 
- 
-LDAP Utils installation 
-<​code>​ 
-apt install ldap-utils 
-</​code>​ 
- 
-Anpassung der LDAP Config unter /​etc/​ldap/​ldap.conf 
-<code bash /​etc/​ldap/​ldap.conf>​ 
-host ldap.example.com 
-base dc=example,​dc=com 
-</​code>​ 
- 
-\\ 
-===== FH-Complete Installation ===== 
- 
-Zuerst stellen wir sicher dass Git und Composer installiert sind 
-<​code>​ 
-apt install git composer 
-</​code>​ 
- 
-Danach laden wir den aktuellen FH-Complete Core und das LDAP Addon von GitHub. 
-<​code>​ 
-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 
-</​code>​ 
- 
-Und kopieren den aktuellen Stand in das Webserver-Verzeichnis 
-<​code>​ 
-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"​ 
-</​code>​ 
- 
-Danach laden wir die nötigen Zusatzmodule per Composer nach 
-<​code>​ 
-cd /​var/​www/​html 
-composer install 
-</​code>​ 
- 
- 
-Um die htaccess Dateien zentral zu verwalten erstellen wir einen eigenen Ordner und verlinken die .htaccess Dateien mit symbolischen Links 
-<​code>​ 
-mkdir /​var/​fhcomplete 
-mkdir /​var/​fhcomplete/​htaccess 
-cd /​var/​fhcomplete/​htaccess 
-vim .htaccess 
-vim .htaccessrdf 
-</​code>​ 
- 
-<code bash /​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 
-</​code>​ 
- 
-<code bash /​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 
-</​code>​ 
- 
-<​code>​ 
-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 
-</​code>​ 
- 
-Damit die Installation der Extensions funktioniert müssen Schreibrechte für bestimmte Ordner gesetzt werden: 
-<​code>​ 
-cd /​var/​www/​html/​ 
- 
-chgrp www-data application/​tmp/​ application/​config/​extensions/​ application/​controllers/​extensions/​ application/​helpers/​extensions/​ application/​hooks/​extensions/​ application/​libraries/​extensions/​ application/​models/​extensions/​ application/​views/​extensions/​ application/​widgets/​extensions/​ 
- 
-chmod 775 application/​tmp/​ application/​config/​extensions/​ application/​controllers/​extensions/​ application/​helpers/​extensions/​ application/​hooks/​extensions/​ application/​libraries/​extensions/​ application/​models/​extensions/​ application/​views/​extensions/​ application/​widgets/​extensions/​ 
-</​code>​ 
- 
-Als nächstes erstellen wir die nötigen Konfigurationsdateien. 
-<​code>​ 
-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 
-</​code>​ 
- 
-Im Vilesci Config müssen folgende Einträge zwingend angepasst werden: 
-<​code>​ 
-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 
- 
-</​code>​ 
- 
-\\ 
- 
-===== 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:​ 
- 
-<​code>​ 
-apt-get install postfix 
-</​code>​ 
-Sollte nicht automatisch die Konfigurationsseite geöffnet werden, kann dies manuell mit  
-<​code>​ 
-dpkg-reconfigure postfix 
-</​code>​ 
-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: 
-<​code>​ 
-vim /​etc/​postfix/​password 
-</​code>​ 
-Und tragen dort den Server, Usernamen und Passwort ein 
-<​code>​ 
-mail.example.com ​  ​fhcomplete@example.com:​MeinPassw0rT 
-</​code>​ 
-Und folgender Befehl ausgeführt 
-<​code>​ 
-postmap /​etc/​postfix/​password 
-</​code>​ 
-Bei der Versendung der Mails muss ggf die Absendeadresse überschrieben werden damit der Mailversand erlaubt ist. 
- 
-<​code>​ 
-vi /​etc/​postfix/​generic 
-</​code>​ 
-In diesem Beispiel werden alle Adressen die von www-data@example.com bzw root@example.com gesendet werden auf fhcomplete@example.com geändert 
-<​code>​ 
-#​Absenderfilter ​  ​NeuerAbsender 
-www-data@example.com fhcomplete@example.com 
-root@example.com fhcomplete@example.com 
-</​code>​ 
- 
-Um den Absender von allen Mails gleich zu setzen kann im Config die Option MAIL_FROM gesetzt werden 
- 
-Hashtable erstellen 
-<​code>​ 
-postmap /​etc/​postfix/​generic 
-</​code>​ 
- 
-Die restlichen Einstellungen werden in der main.cf vorgenommen. 
-Hier ein Beispiel für die Verwendung von Office 365: 
-<​code>​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 
-</​code>​ 
- 
-Postfix neu starten 
-<​code>​ 
-/​etc/​init.d/​postfix restart 
-</​code>​ 
- 
-Eventuelle Fehlermeldungen beim Versand der E-Mails sind unter /​var/​log/​mail.log sichtbar. 
- 
-=== Mailversand Testen === 
-Testen des Mailversands von der Commandline:​ 
-<​code>​ 
-mail -s "​TestBetreff"​ empfaenger@example.com 
-</​code>​ 
-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:​ 
-<​code>​ 
-/​var/​www/​vilesci/​htdocs/​index.ci.php MailJob sendMessages 
-</​code>​ 
- 
-Alternativ kann auch in der Datei application/​config/​message.php die Einstellung 
-<​code>​ 
-$config['​send_immediately'​] = true; 
-</​code>​ 
-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|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\\ 
-\\ 
-<​code>​unoconv --listener &</​code>​ 
-oder\\ 
-<​code>​unoconv -l &</​code>​ 
- 
- 
-==== 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 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: 
- 
-<​code>​ 
-deb http://​ftp.at.debian.org/​debian/​ jessie contrib 
-</​code>​ 
- 
-<​code>​ 
-sudo apt-get install ttf-mscorefonts-installer ​ 
-fc-cache -v 
-</​code>​ 
- 
-==== Tahoma ==== 
-Die Schrift Tahoma ist in dem Font-Pack nicht enthalten. Diese kann wie folgt installiert werden: 
- 
-<​code>​ 
-apt-get install cabextract 
-wget http://​download.microsoft.com/​download/​ie6sp1/​finrel/​6_sp1/​W98NT42KMeXP/​EN-US/​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 
-</​code>​ 
- 
-==== Schriftarten im .ttf Format==== 
-Schriften die im .ttf Format vorhanden sind können in den Ordner /​usr/​share/​fonts/​ kopiert werden. 
-Mit dem Befehl 
-<​code>​ 
-fc-cache -fv 
-</​code>​ 
-muss dann der Font Cache erneuert werden damit die neuen Schriften erkannt werden. 
- 
-<​note>​ 
-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) 
-</​note>​ 
- 
-\\ 
  
/var/www/wiki/data/attic/fhc/installation.1529673302.txt.gz · Zuletzt geändert: 2019/08/13 13:49 (Externe Bearbeitung)