Benutzer-Werkzeuge

Webseiten-Werkzeuge


 [[anwenderwiki:webapps:horde:installhorde5ubuntu]] 
no way to compare when less than two revisions

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.


anwenderwiki:webapps:horde:installhorde5ubuntu [2015/11/22 11:28] (aktuell) – angelegt - Externe Bearbeitung 127.0.0.1
Zeile 1: Zeile 1:
 +{{tag> webapp horde}}
 +
 +====== Installation von Horde 5 auf linuxmuster.net 6.0 ======
 +
 +<note important>**hier verwendete Version:** Horde 5.1.4 auf Linuxmuster.net 6.0.44.
 +</note>
 +
 +Dokumentation: http://www.horde.org/apps/webmail/docs/INSTALL
 +
 +Installation läuft über PEAR: "PHP Extension and Application Repository". PEAR funktioniert wie ein Paketmanagement, bei dem sich Abhängigkeiten automatisch auflösen sollten, wenn man die passenden Quellen - heißen hier Channel - aufgenommen hat. Ein "PEAR upgrade-all" führt dann einen Upgrade aller installierten Pakete durch.
 +
 +Die html/php-Seiten werden in der nachfolgenden Installation in **''/var/www/horde''** abgelegt. Zusätzlich werden noch an weiteren Stellen Dateien installiert, z.B. in **''/usr/share/php/Horde''** und **'' /usr/share/php/PEAR''**.
 +
 +Zeilen mit '#' sind auf der Konsole als root auszuführen.
 +
 +<note tip> Die Punkte 1 bis 3 können mit dem -> [[anwenderwiki:webapps:horde:horde-preinstall|horde-preinstall.sh]] Script abgearbeitet werden:
 +  * Datenbank installieren (Kennwort anpassen!
 +  * Deb-Pakte installieren
 +  * Channels installieren
 +  * Pear-Pakete installieren
 +  * Pecl-Pakete installieren
 +Danach weiter mit Punkt 4.
 +
 +</note>
 +===== 0. Altes Horde deinstallieren=====
 +
 +Zu Beginn sollte man ggf. ein altes horde3 deinstallieren mit:
 +  # apt-get remove horde3
 +Eine automatische Übernahme von Daten aus Horde 3 (z.B. Adressbuch/Kalender) nach Horde 5 habe ich nicht getestet, mit der Export/Import-Funktion geht es problemlos.\\
 +//Empfehlung: Jeder User sollte dies mit der Import/Export-Funktion selbst tun - ggf. beide Horde-Versionen zunächst parallel anbieten.// 
 +
 +
 +
 +===== 1. Benötigte zusätzliche .deb - Pakete installieren =====
 +
 +<code>
 +# aptitude install php5-geoip imagemagick php5-imagick php5-tidy php5-memcache memcached php5-auth-pam php5-intl php5-sasl
 +# aptitude install libssh2-php libssh2-1-dev libidn11 libidn11-dev
 +</code>
 +
 +Manche dieser Pakete sind zwar nicht zwingend notwendig, doch gibt Horde5 bei seinem Selbsttest ein "Warning" aus, wenn diese fehlen.\\
 +Je nach Vorgeschichte des Systems sind diese auch schon vorhanden. 
 +===== 2. Datenbank anlegen =====
 +
 +<code>
 +# mysql
 +mysql> CREATE database horde5;
 +mysql> CREATE USER h5admin@localhost IDENTIFIED BY '12345678';
 +mysql> GRANT ALL ON horde5.* TO h5admin@localhost;
 +mysql> quit
 +</code>
 +Das Passwort "12345678" für den Zugriff von Horde auf die DB muss man natürlich durch ein anderes, sicheres ersetzen, ebenso dann unten bei den Eingaben.\\
 +//Hinweis: Die Datenbank wird unabhängig zu einer existierenden horde3-Datenbank angelegt.
 +//
 +
 +
 +===== 3. Pear-Installation vorbereiten =====
 +
 +  
 +  # pear install HTTP_WebDAV_Server-1.0.0RC8
 +  # pear install --alldeps XML_Serializer-0.20.2
 +  # pear channel-discover pear.horde.org
 +  # pear channel-discover pear.phpunit.de
 +  # pear channel-discover pear.nrk.io
 +  # pear channel-discover pear.symfony.com
 +  # pear upgrade-all
 +
 +fixme-Hinweis: pear.phpunit.de ist nicht mehr erreichbar, siehe diese [[https://github.com/sebastianbergmann/phpunit/wiki/End-of-Life-for-PEAR-Installation-Method|Info]].
 +
 +**Weitere Pakete installieren/vorbereiten:**\\
 +Bei der nachfolgenden Horde-Installation werden manche Pakete nicht installiert, da diese nicht in der geforderten Version "stable" vorliegen. Bei diesen Paketen kann man  "versuchen" sie einzeln vorab als beta-Version zu installieren (ging nicht immer).
 +<code>
 +pear install --alldeps Numbers_Words-0.16.4
 +pear install Image_Text-0.7.0
 +pear install --alldeps Text_CAPTCHA-0.5.0
 +pear install --alldeps Date_Holidays-0.21.8
 +pear install --alldeps Text_LanguageDetect-0.3.0
 +pecl install sasl-0.1.0
 +pecl install idn-0.2.0
 +pecl install ssh2-0.12
 +pecl install msgpack-0.5.5
 +pear install horde/horde_lz4
 +pear install Console_GetoptPlus-beta
 +pear install Console_Color2-0.1.2
 +pear install net_dns2
 +pear install file_fstab
 +</code>
 +
 +===== 4. Horde Basissystem installieren =====
 +
 +  # pear install horde/horde_role
 +  # pear run-scripts horde/Horde_Role
 +
 +Als Pfad (filesystem location) dabei **''/var/www/horde''** eingegeben.
 +  # mkdir /var/www/horde
 +  # pear install -a -B horde/webmail
 +<note>Um alle Abhängigkeiten aufzulösen musste ich die Installation mehrfach anstoßen? Problem unklar!\\ **Verdacht:** Netzwerk-Verbindungsprobleme mit dem Paketserver von horde.org.
 +<code>
 +# pear install horde/horde
 +# pear install -a horde/horde
 +# pear install horde/webmail
 +# pear install -a horde/webmail
 +</code>
 +</note>  
 +<note>Falls die Installation mehrfach nicht erfolgreich durchläuft kann man folgende Befehle und Optionen verwenden:\\
 +<code># rm -R /tmp/pear
 +# pear install -a --ignore-errors horde/horde
 +# pear install -a --ignore-errors horde/horde
 +# pear install -a --ignore-errors horde/horde
 +# pear install -a --ignore-errors horde/horde
 +# pear install -a -B --ignore-errors horde/webmail
 +# pear install -a -B --ignore-errors horde/webmail</code></note>
 +
 +Die Installation ist dann erst erfolgreich, wenn ein weiterer Aufruf die Meldung ergibt:\\
 +''**"horde/webmail is already installed and is the same as the released version 5.1.2    install failed"**''\\
 +//Hinweis: Bei einer Installation waren 6! Installations-Befehle nötig, bis die Installation fehlerfrei abgeschlossen war.//
 +
 +Jetzt Installation abschließen:
 +  # webmail-install
 + 
 +  
 +Eingaben für webmail-install:
 +<code>
 +Datenbank:             mysql
 +Username to connect:   h5admin
 +Password:              12345678
 +Socket:                unix
 +Location:
 +Databasename:          horde5
 +charset:               utf-8
 +ssl:                   [0]-no
 +CA:
 +split:                 false
 +mail-user:             wwwadmin
 +</code>
 +
 +
 +----
 +
 +
 +<note tip>Alle folgenden Konfigurationsschritte (Nr. 5 bis 9) können durch das Script -> [[anwenderwiki:webapps:horde:postinstall|horde-postinstall.sh]] durchgeführt werden:
 +  * Konfiguration von Apache und php
 +  * Rechte setzen
 +  * Konfigurationsdateien nach /etc auslagern
 +  * LDAP Authentifizierung setzen
 +  * LDAP-Groups setzen
 +  * Dateimanager Gollem einrichten
 +  * Log-Datei konfigurieren
 +  * Neues sicheres Kennwort für mysql setzen (statt '12345678')
 +
 +Auf die Fehlermeldungen achten, ggf. muss man bei Apache eine alte Konfigurationsdatei von horde 3 noch löschen.</note>
 +
 +
 +
 +===== 5. Zugriffsrechte, Apache anpassen =====
 +
 +**Rechte anpassen:**
 +
 +  # chown root:www-data /var/www/horde/static
 +  # chmod 775 /var/www/horde/static
 +  
 +**Apache Konfiguration anpassen:**\\
 +Neue Datei **''/etc/apache2/conf.d/horde5.conf''** anlegen:
 +<code text horde5.conf>
 +Alias /horde /var/www/horde
 +<Directory /var/www/horde>
 +  Options Indexes FollowSymLinks MultiViews
 +  AllowOverride All
 +  AcceptPathInfo On
 +  Order allow,deny
 +  allow from all
 +</Directory>
 +</code>
 +Ggf. muss man eine alte Konfigurationsdatei von horde 3 löschen. Danach Apache neustarten:
 +  # service apache2 restart
 +
 +
 +Nun kann man Horde im Browser aufrufen: http://server.linuxmuster-net.lokal/horde.\\
 +
 +
 +
 +
 +
 +
 +===== 6. Statt IMP: LDAP-Authentifizierung einrichten =====
 +
 +Nach Installation benutzt Horde zur Authentifizierung IMP, d.h. das Mailsystem des Servers. Dies kann man auf LDAP umstellen, dann kann man auch Gruppenzugehörigkeiten in Horde verwenden.\\
 +Zuerst die Config-Dateien editierbar machen, Sicherungskopie erstellen:
 +<code>
 +# cd /var/www/horde/config
 +# touch conf.php conf.bak.php && chown root:www-data conf.* && chmod 664 conf.*
 +# cp conf.php conf.php.orig
 +# pear install -a horde/horde_ldap
 +</code>
 +Wenn das horde_ldap-Modul schon installiert wurde, gibt es beim letzten Punkt eine Fehlermeldung, die man ignorieren kann.
 +
 +
 +Nun im Browser als wwwadmin bei Horde anmelden und unter **''Administration -> Konfiguration -> Horde -> LDAP''**
 +
 +  $conf[ldap][useldap]              yes
 +  $conf[ldap][hostspec]             localhost
 +  $conf[ldap][bindas]               Bind anonymously
 +
 +dann unter **''Administration -> Konfiguration -> Horde -> Authentication''**
 +
 +   $conf[auth][driver]              LDAP Authentication
 +   $conf[auth][params][basedn]      dc=linuxmuster-net,dc=lokal   !!! An eigene Daten anpassen, siehe /etc/ldap/ldap.conf!!!
 +   $conf[auth][params][uid]         uid
 +   $conf[auth][params][filter]      (objectclass=posixAccount)
 +  
 +optional: die Gruppenzugehörigkeit aus LDAP auslesen **''Administration -> Konfiguration -> Horde -> Groups''**:
 +  
 +  $conf[group][driver]              LDAP
 +  $conf[group][params][basedn]      dc=linuxmuster-net,dc=lokal   !!! An eigene Daten anpassen!!!
 +  $conf[group][params][gid]         cn
 +  $conf[group][params][memberuid]   memberUid
 +  
 +Erst am Ende dem Button betätigen: **"Horde Konfiguration Erzeugen"**  
 +  
 +  
 +**Abschluss:** Wenn Horde mit LDAP-Authentifizierung konfiguriert ist, muss man für die Automatische Anmeldung am Postfach zusätzlich eine Datei "''**/var/www/horde/imp/config/backends.local.php**''" anlegen mit Inhalt:
 +<code text backends.local.php>  
 +<?php
 +$servers['imap']['hordeauth'] = true;
 +</code>
 +
 +
 +<note>Falls danach Nichts mehr geht (weil man sich z.B. vertippt hat) kann man die Sicherungskopie der Conf-Datei zurückpielen und von vorne beginnen:
 +<code># cp /var/www/horde/config/conf.php.orig /var/www/horde/config/conf.php</code>
 +Ggf. muss man das LDAP-Paket nochmals installieren:
 +<code># pear install -a horde/horde_ldap</code>
 +</note>
 +
 +===== 7. Dateimanager gollem einrichten =====
 +
 +Eine neue Datei anlegen unter **''/var/www/horde/gollem/config/backends.d/samba.php''** :
 +
 +<code text samba.php>
 +<?php
 +$backends['ftp']['disabled'] = true;
 +$backends['smb'] = array(
 +    'disabled' => false,
 +    'name' => 'linuxmuster.net',
 +    'driver' => 'smb',
 +    'hordeauth' => true,
 +    'params' => array(
 +        'hostspec' => 'localhost',
 +        'port' => 139,
 +        'share' => 'homes',
 +        'smbclient' => '/usr/bin/smbclient',
 +        'ipaddress' => '127.0.0.1',
 +    ),
 +    'loginparams' => array(
 +    ),
 +    'attributes' => array(
 +        'type',
 +        'name',
 +        'edit',
 +        'download',
 +        'modified',
 +        'size'
 +    )
 +);
 +
 +</code>
 +
 +Vorinstalliertes Backend löschen:
 +
 +  # rm /var/www/horde/gollem/config/backends.d/10-webmail.php
 +
 +**Problem:** Alle Schüler haben keinen Zugriff auf ihr home, Fehlermeldung: Unable to create VFS-Folder "" \\
 +**Ursache:** Zugriffrechte auf /home/students waren falsch - warum unklar?\\
 +**Lösung:** Zugriffsrechte auf 751 setzen. (oder 775?)
 +
 +
 +
 +===== 8. Log-Datei einrichten =====
 +
 +Standardmäßig wird alles in der Syslog geloggt. Man kann dies umstellen:
 +  # mkdir /var/log/horde
 +  # chown www-data:www-data /var/log/horde
 +
 +Nun als wwwadmin an Horde anmelden und unter **''Administration → Konfiguration → Horde → Logging''** zwei Optionen umstellen und neue "Horde Konfiguration erzeugen".
 +<code>
 +  $conf[log][type]   file
 +  $conf[log][name]   /var/log/horde/horde5.log
 +</code>
 +
 +===== 9. Config-Dateien nach /etc auslagern =====
 +
 +Mit folgendem Script werden die Config-Dateien nach /etc/horde5 ausgelagert und dann per SymLink von Horde angesprochen:
 +<code text horde-linken.sh>
 +#! /bin/bash
 +#
 +# Script verschiebt alle Conf-Dateien von Horde nach /etc/horde5
 +# Pfade ggf. anpassen
 +
 +wwwdir="/var/www/horde"
 +etcdir="/etc/horde5"
 +
 +###########################################################################
 +
 +if [ ! -d "$wwwdir" ]; then
 +  echo "WARNING: Verzeichnis $wwwdir existiert nicht, Script wird beendet."
 +  exit 1
 +fi
 +if [ -d "$etcdir" ]; then
 +  echo "WARNING: Verzeichnis $etcdir existiert schon, Script wird beendet."
 +  exit 1
 +fi
 +
 +mkdir "$etcdir"
 +chown root:www-data -R "$etcdir"
 +chmod 755 "$etcdir"
 +
 +echo "Starte Conf-Verzeichnisse zu verschieben und verlinken ..."
 +verzliste="/horde /gollem /imp /ingo /kronolith /mnemo /nag /turba /trean"
 +for verz in $verzliste ; do
 +  if [ $verz == "/horde" ] ; then
 +    wverz="$wwwdir/config"
 +  else
 +    wverz="$wwwdir$verz/config"
 +  fi
 +  everz="$etcdir$verz"
 +  echo "  Verschieben von $wverz --> $everz"
 +  mv $wverz $everz
 +  ln -s $everz $wverz
 +  chown root:www-data -R $everz
 +  chmod 755 $everz
 +done
 +exit 0
 +</code>
 +
 +===== 10. Fehlerbehebungen und Optimierungen =====
 +
 +Um die Installation von horde zu überprüfen kann man eine Test-Seite abrufen. Die muss man aber zuerst in der Config-Datei **''/var/www/horde/config/conf.php''** freischalten:
 +  $conf['testdisable'] = false;
 +und dann im Browser:
 +  http://server.linuxmuster-net.lokal/horde/test
 +
 +**Problem:** lzf ist nicht installiert:
 +  # pecl install lzf
 +Dann noch eine Datei **''/etc/php5/apache2/conf.d/lzf.ini''** erzeugen um das lzf-Modul zu aktivieren:
 +
 +  # echo "extension=lzf.so" > /etc/php5/apache2/conf.d/lzf.ini
 +  # service apache2 restart
 +
 +**Problem:** lzf ist weiterhin unvollständig installiert:
 +<code>
 +# aptitude install make
 +# pecl uninstall lzf
 +# pecl install lzf
 +</code>
 +
 +**Problem:** lz4 ist unvollständig installiert:
 +<code>
 +# pear install horde/horde_lz4
 +# echo "extension=horde_lz4.so" > /etc/php5/apache2/conf.d/lz4.ini 
 +# echo "extension=msgpack.so" > /etc/php5/apache2/conf.d/msgpack.ini
 +# service apache2 restart
 +</code>
 +
 +
 +**Problem bei Miscellaneous PHP Settings**: Die Datei **''/etc/php5/apache2/php.ini''** editieren, Divisor-Wert ändern von 100 auf 10000 und Apache neustarten.
 +
 +<code># sed -i 's|session\.gc_divisor.*|session\.gc_divisor  = 10000|' /etc/php5/apache2/php.ini
 +# service apache2 restart
 +</code>
 +
 +
 +----
 +PEAR Upgrade:
 +  # pear upgrade-all
 +
 +----
 +
 +**Problem:** mysql als root starten:
 +U.U muss man mysql mit folgendem Befehl starten:
 +  # mysql -u debian-sys-maint -p****
 +Das Passwort für debian-sys-maint findet man unter **''/etc/mysql/debian.cnf''**. 
 +
 +----
 +
 +**Problem:** Falls bei **''webmail-install''** der Fehler "Class ... not found" auftritt, kann man diese nachinstallieren, z.B. mit:\\
 +<code># pear install -a -f /horde/Horde_Auth</code>
 +
 +
 +----
 +
 +**Problem:** SASL wird nicht richtig installiert
 +<code>
 +pecl install channel://pecl.php.net/sasl-0.1.0
 +tar -xvf ./sasl-0.1.0.tgz
 +cd ./sasl-0.1.0
 +phpize sasl
 +./configure
 +make
 +cd ./modules
 +cp ./sasl.so /usr/lib/php5/20090626+lfs/
 +cd ../..
 +rm -R ./*
 +</code>
 +
 +==== Logging ====
 +
 +**Horde-Logging** einschalten in der Datei **''/var/www/horde/config/config.php''**, umstellen von 'INFO' auf 'DEBUG'. Die Meldungen sind dann in der syslog oder in der Log-Datei von Punkt 8 (siehe oben):
 +   $conf['log']['priority'] = 'DEBUG';
 +
 +
 +**PHP-Logging** einschalten in der Datei **''/etc/php5/apache2/php.ini''**. Folgende Optionen anpassen:
 +   error_reporting        = E_ALL
 +   display_startup_errors = On
 +   log_errors             = On
 +   error_log              = "/var/log/horde/php.log"
 +Danach Apache neu starten:
 +   # service apache2 restart
 +
 +
 +==== Fehlermeldungen bei NAG ====
 +
 +Ggf. muss direkt die Apache-Konfiguration angepasst werden:
 +<code><Location /horde>
 +   RewriteEngine on
 +   RewriteBase /horde
 +   RewriteCond %{REQUEST_FILENAME} !-d
 +   RewriteCond %{REQUEST_FILENAME} !-f
 +   RewriteRule ^(.*)$ rampage.php [QSA,L]
 +</Location>  
 +</code>  
 +  
 +  
 +===== 11. Einstellungen zu Mail =====
 +
 +Um eine feste Maildomain für alle festzulegen ergänzt man in der Datei ''**/var/www/horde/imp/config/backends.local.php**''
 +  <?php
 +  ...
 +  $servers['imap']['maildomain'] = 'nowhere.de';
 +
 +Um Weiterleitungen zu ermöglichen ergänzt man die Datei ''**/var/www/horde/ingo/config/backends.local.php**'' um die nötigen Driver zu aktivieren:
 +  <?php
 +  $backends['imap']['script'][Ingo::RULE_ALL]['driver'] = 'sieve';
 +
 +
 +(siehe auch bei Punkt 13)
 +
 +===== 12. Weitere Module installieren =====
 +**Ticket-System Whups**
 +
 +  # pear install -a horde/whups
 +
 +oder
 +
 +  # pear install -a --ignore-errors horde/whups
 +
 +und dann:
 +<code>
 +# cd /var/www/horde/whups/config
 +# touch conf.php conf.bak.php && chown root:www-data conf.* && chmod 664 conf.*
 +</code>
 +
 +
 +===== 13. Änderung mit INGO 3.2.x =====
 +**Filterregeln**\\
 +Durch eine Änderung im Bereich von imapflags / imap4flags ist eine Anpassung notwendig, da sonst die Filterregeln nicht mehr komplett funktionieren (-> als XY markieren). Das neue imap4flags kann nicht verarbeitet werden und manuell muss die Verwendung der 'alten' imapflags konfiguriert werden:
 +
 +<code>
 +# touch /etc/horde5/ingo/backends.local.php && chown root:www-data back* && chmod 664 back*
 +</code>
 +\\
 +Zur Sicherheit //alle// notwendigen Parameter in die backends.local.php, teilweise doppelt (todo...):
 +<code>
 +$backends['sieve']['script'][Ingo::RULE_ALL]['params']['imapflags'] = true;
 +//$backends['sieve']['script'][Ingo::RULE_ALL]['params']['imap4flags'] = false;
 +
 +$backends['imap']['disabled'] = true;
 +// $backends['sieve']['disabled'] = false;
 +
 +
 +$backends['sieve'] = array(
 +    // Disabled by default
 +    'disabled' => false,
 +    'transport' => array(
 +        Ingo::RULE_ALL => array(
 +            'driver' => 'timsieved',
 +            'params' => array(
 +                // Hostname of the timsieved server
 +                'hostspec' => 'localhost',
 +                // Login type of the server
 +                'logintype' => 'PLAIN',
 +                // Enable/disable TLS encryption
 +                'usetls' => true,
 +                // Port number of the timsieved server
 +                'port' => 4190,
 +                // Name of the sieve script
 +                'scriptname' => 'ingo',
 +                // imap(4)flags
 +                'imapflags' => 'true',
 +                // Enable debugging. The sieve protocol communication is logged
 +                // with the DEBUG level.
 +                'debug' => false,
 +            ),
 +        ),
 +    ),
 +    'script' => array(
 +        Ingo::RULE_ALL => array(
 +            'driver' => 'sieve',
 +            'params' => array(
 +                // If using Dovecot or any other Sieve implementation that
 +                // requires folder names to be UTF-8 encoded, set this
 +                // parameter to true.
 +                'utf8' => true,
 +                'imapflags' => 'true',
 +             ),
 +        ),
 +    ),
 +    'shares' => false
 +);
 +</code>
  
 [[anwenderwiki:webapps:horde:installhorde5ubuntu]] anwenderwiki/webapps/horde/installhorde5ubuntu.txt · Zuletzt geändert: 2015/11/22 11:28 von 127.0.0.1