{{tag> webapp horde}} ====== Installation von Horde 5 auf linuxmuster.net 6.0 ====== **hier verwendete Version:** Horde 5.1.4 auf Linuxmuster.net 6.0.44. 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. 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. ===== 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 ===== # 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 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 ===== # mysql mysql> CREATE database horde5; mysql> CREATE USER h5admin@localhost IDENTIFIED BY '12345678'; mysql> GRANT ALL ON horde5.* TO h5admin@localhost; mysql> quit 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). 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 ===== 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 Um alle Abhängigkeiten aufzulösen musste ich die Installation mehrfach anstoßen? Problem unklar!\\ **Verdacht:** Netzwerk-Verbindungsprobleme mit dem Paketserver von horde.org. # pear install horde/horde # pear install -a horde/horde # pear install horde/webmail # pear install -a horde/webmail Falls die Installation mehrfach nicht erfolgreich durchläuft kann man folgende Befehle und Optionen verwenden:\\ # 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 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: 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 ---- 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. ===== 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: Alias /horde /var/www/horde Options Indexes FollowSymLinks MultiViews AllowOverride All AcceptPathInfo On Order allow,deny allow from all 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: # 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 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: 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: # cp /var/www/horde/config/conf.php.orig /var/www/horde/config/conf.php Ggf. muss man das LDAP-Paket nochmals installieren: # pear install -a horde/horde_ldap ===== 7. Dateimanager gollem einrichten ===== Eine neue Datei anlegen unter **''/var/www/horde/gollem/config/backends.d/samba.php''** : 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' ) ); 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". $conf[log][type] file $conf[log][name] /var/log/horde/horde5.log ===== 9. Config-Dateien nach /etc auslagern ===== Mit folgendem Script werden die Config-Dateien nach /etc/horde5 ausgelagert und dann per SymLink von Horde angesprochen: #! /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 ===== 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: # aptitude install make # pecl uninstall lzf # pecl install lzf **Problem:** lz4 ist unvollständig installiert: # 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 **Problem bei Miscellaneous PHP Settings**: Die Datei **''/etc/php5/apache2/php.ini''** editieren, Divisor-Wert ändern von 100 auf 10000 und Apache neustarten. # sed -i 's|session\.gc_divisor.*|session\.gc_divisor = 10000|' /etc/php5/apache2/php.ini # service apache2 restart ---- 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:\\ # pear install -a -f /horde/Horde_Auth ---- **Problem:** SASL wird nicht richtig installiert 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 ./* ==== 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: RewriteEngine on RewriteBase /horde RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ rampage.php [QSA,L] ===== 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**'' # cd /var/www/horde/whups/config # touch conf.php conf.bak.php && chown root:www-data conf.* && chmod 664 conf.* ===== 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: # touch /etc/horde5/ingo/backends.local.php && chown root:www-data back* && chmod 664 back* \\ Zur Sicherheit //alle// notwendigen Parameter in die backends.local.php, teilweise doppelt (todo...): $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 );