Basiskonfiguration von horde
Nach der erfolgreichen Installation von Horde machen wir uns nun an die Konfiguration unserer Installation.
Apache vHost
vHost Definition
Für unsere Webapplikation richten wir uns nun einen geeigneten vHost ein. Da wir später S/MIME und PGP nutzen wollen, richten wir uns einen SSL-Name Based Virtual Host ein. Im Konfigurationsverzeichnis unseres Apache-Webservers legen wir uns eine neue vHOST-Konfigurationsdatei an.
# vim /etc/httpd/conf.d/vHost_horde.conf
- /etc/httpd/conf.d/vHost_horde.conf
# # horde.nausch.org - Horde Groupware # <VirtualHost *:443> ServerAdmin webmaster@nausch.org ServerName horde.nausch.org ServerPath / # SSL-stuff SSLEngine on SSLProtocol -ALL +SSLv3 +TLSv1 SSLCipherSuite ALL:!aNULL:!ADH:!eNULL:!LOW:!EXP:RC4+RSA:+HIGH:+MEDIUM SSLCertificateFile /etc/pki/tls/private/CAcert-class3-certificat.crt SSLCertificateKeyFile /etc/pki/tls/private/server.key SSLCertificateChainFile /etc/pki/tls/private/CAcert_chain.crt AddType application/x-httpd-php .php # ActivSync aliases Alias /Microsoft-Server-ActiveSync /var/www/horde/rpc.php Alias /autodiscover/autodiscover.xml /var/www/horde/rpc.php DocumentRoot "/var/www/horde" <Directory "/var/www/horde"> Options Indexes FollowSymLinks AllowOverride None # Exclude file from password protection SetEnvIf Request_URI "(rpc.php)$" allow SetEnvIf Request_URI "(sapi/profile/client)$" allow SetEnvIf Request_URI "(devinfo)$" allow SetEnvIf Request_URI "(Microsoft-Server-ActiveSync)$" allow # Access-stuff Order allow,deny Allow from all # Set exclude all files with env=allow Allow from env=allow Satisfy any # ActiveSync RewriteEngine On RewriteRule ^/Microsoft-Server-ActiveSync /rpc.php [PT,L,QSA] RewriteRule .* - [E=HTTP_MS_ASPROTOCOLVERSION:%{HTTP:Ms-Asprotocolversion}] RewriteRule .* - [E=HTTP_X_MS_POLICYKEY:%{HTTP:X-Ms-Policykey}] RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] # If horde dies while trying to handle large email file attachments, you are probably # hitting PHP's memory limit. Raise that limit here, but use caution # Set to your preference - memory_limit should be at least 32M and be greater than the # value set for post_max_size # php_value memory_limit 32M # php_value post_max_size 20M # php_value upload_max_filesize 10M # horde.org's recommended PHP settings: php_admin_flag safe_mode off php_admin_flag magic_quotes_runtime off php_flag session.use_trans_sid off php_flag session.auto_start off php_admin_flag file_uploads on # Optional - required for weather block in Horde to function php_admin_flag allow_url_fopen on </Directory> # Deny access to files that are not served directly by the webserver <DirectoryMatch "^var/www/horde/(.*/)?(config|lib|locale|po|scripts|templates)/(.*)?"> Order deny,allow Deny from all </DirectoryMatch> # Deny access to the test.php files except from localhost <LocationMatch "^/horde/(.*/)?test.php"> Order deny,allow Deny from all </LocationMatch> DirectoryIndex index.php ErrorLog logs/horde_error.log CustomLog logs/horde_access.log combined </VirtualHost>
Wichtig:
Solange wir unseren vHost noch nicht in der Produktionsumgebung steht und fertig konfiguriert wurde, beschränken wir den Zugriff auf den vHost noch. Hierzu tragen wir in der Directive Directory folgendes ein:
... # Access-stuff (Zugriff nur vom Admin-Host aus!) Order deny,allow Deny from all Allow from <Administrations-Host-IP> ...
Nach erfolgter Konfiguration, geben wir dann den Zugriff für alle frei.
... # Access-stuff (Zugriff von überall erlauben.) Order allow,deny Allow from all ...
Konfiguration aktivieren
Bevor unseren Webserver starten, damit der neue vHost auch bedient werden kann, überprüfen wir die Konfiguration noch auf syntaktische Fehler.
# service httpd configtest
Syntax OK
Abschließend starten wir den Webserver einmal durch.
# service httpd restart
Stopping httpd: [ OK ] Starting httpd: [ OK ]
mySQL Datenbank
Ein Großteil der Benutzer-Konfigurationsdaten werden in einer mySQL-Datenbank gespeichert und vorgehalten.
Datenbank anlegen
Diese mySQL-Datenbank und der zugehörige Datenbankuser werden wird nun im ersten Schritt anlegen.
Wir melden uns also als berechtigter Datenbankuser an der mySQL-Datenbank an.
# mysql -h localhost -u root -p
Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 1942 Server version: 5.1.67 Source distribution Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>
Dort legen wir als aller erst einmal eine Datenbank mit dem Namen horde an.
mysql> create database horde;
Query OK, 1 row affected (0.03 sec)
Datenuserbank anlegen
Anschließend legen wir uns einen Datenbankuser an, denen wir entsprechende Rechte an der, gerade angelegten Datenbank horde einräumen. Als Namen nehme wir einfach hode_admin_user.
mysql> CREATE USER 'horde_admin_user'@'10.0.0.90' IDENTIFIED BY 'rbgsDK39DeM2b2btx9iMHfzd';
Query OK, 0 rows affected (0.00 sec)
und
mysql> CREATE USER 'horde_admin_user'@'vml000090.dmz.nausch.org' IDENTIFIED BY 'rbgsDKMS39DeM2b2btx9iMHfzd';
Query OK, 0 rows affected (0.00 sec)
Nutzerberechtigungen setzen
Dem gerade angelebtem Datenbankuser für Horde gewähren wir nun die nötigen Rechte, damit dieser vom Webserver aus, Tabellen anlegen, befüllen und verändern darf.
mysql> GRANT ALL PRIVILEGES ON horde.* TO 'horde_admin_user'@'10.0.0.90' IDENTIFIED BY 'rbgsDKMS39DeM2b2btx9iMHfzd' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;
Query OK, 0 rows affected (0.00 sec)
und
mysql> GRANT ALL PRIVILEGES ON horde.* TO 'horde_admin_user'@'vml000090.dmz.nausch.org' IDENTIFIED BY 'rbgsDKMS39DeM2b2btx9iMHfzd' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;
Query OK, 0 rows affected (0.00 sec)
Nutzerberechtigungen zuweisen
Zum Ende unserer mySQL-Userkonfiguration weisen wir unserem Nutzer die Berechtigungen zu.
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
Zugriff testen
Als nächstes überprüfen wir, ob der zuvor angelegt User/Zugang auch funktioniert.
# mysql -D horde -h mysql.dmz.nausch.org -u hordeuser -p
Enter password: Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 19824 Server version: 5.1.67 Source distribution Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> show tables; +---------------------------+ | Tables_in_horde | +---------------------------+ | horde_datatree | | horde_datatree_attributes | | horde_datatree_seq | | horde_histories | | horde_histories_seq | | horde_prefs | | horde_sessionhandler | | horde_tokens | | horde_users | | horde_vfs | | horde_vfs_seq | +---------------------------+ 11 rows in set (0.00 sec) mysql>
Da der Test positiv ausgefallen ist, können wie uns wieder von unserem Datenbankserver abmelden.
mysql> quit
Bye
vorbereitende Konfiguration
Die Konfiguration von Horde, wie auch den nachfolgenden Module/Projects, erfolgt über die GUI des Horde-Framworks. Bevor wir uns daran machen können, benötigen wir noch eine entsprechende (leere) Backupdatei für die mitgelieferte Vorgabekonfigurationsdatei. Ferner müssen wir dafür sorgen, dass unser Apache-Webserver die Änderungen im Konfigurationsverzeichnis ablegen kann. Zunächst kopieren wir uns die Vorlagedatei, die bei der Hordeinstallation mit kam.
# cp -a /var/www/horde/config/menu.php.dist /var/www/horde/config/menu.php
Dann legen wir also die besagte Backup-Datei für die Konfiguration an.
# touch /var/www/horde/config/conf.php.bak
Zum Schluß weisen wir noch die Datei und Besitzrechte für die Konfigurationsdatei- und dessen Verzeichnis zu.
# chown -R root:apache /var/www/horde/config
# chmod g+w -R /var/www/horde/config
Konfiguration über die WEB-GUI
Die eigentliche Konfigurationsarbeit erledigen wir dann über die GUI des Web-Frameworks. Dazu rufen wir unseren angelegten VHOST im Webbrowser auf.
$ firefox https://buero.nausch.org
Mit einem Klick auf das Zahnradsysmbol erreichen wir den Menüpunkt Administration.
Hier wählen wir den Menüpunkt Configuration aus.
Da wir den Menüpukt Configuration noch nie vorher aufgerufen und noch keine Konfiguration vorgenommen haben, sind die beiden Fehlermeldungen normal. Um zur Konfiguration von Horde zu gelangen, klicken wir nun auf den Punkt Horde (horde).
Auf den nun zur Verfügung stehenden Reitern, erfolgt die Konfiguration des Horde-Frameworks (Basis-Modul).
General
General Horde Settings
$conf[vhosts] [ ]
PHP Settings
$conf[debug_level] E_ALL & ~E_NOTICE $conf[max_exec_time] 0 $conf[compress_pages] [✔] $conf[secret_key] 50fd8699-d00f-4a35-a900-7b290a00005a $conf[umask] 077 $conf[testdisable] [✔] $conf[tmpdir]
URL Settings
$conf[use_ssl] Attempt to auto-detect, and generate URLs appropriately $conf[server][name] $_SERVER['SERVER_NAME'] $conf[server][port] $conf[urls][token_lifetime] 30 $conf[urls][hmac_lifetime 30 $conf[urls][pretty] No (Get-based URLs) $conf[safe_ips]
Session Settings
$conf[session][name] Horde $conf[session][use_only_cookies] [✔] $conf[session][cache_limiter] nocache $conf[session][timeout] 0 $conf[session][max_time] 0 $conf[cookie][domain] $_SERVER['SERVER_NAME'] $conf[cookie][path] /
Database
Database Settings
$conf[sql][phptype] MySQL (mysqli) $conf[sql][username] hordesystemuser $conf[sql][password] Django-1$-a-G33k! $conf[sql][protocol] TCP/IP $conf[sql][hostspec] mysql.dmz.nausch.org $conf[sql][port] 3306 $conf[sql][database] horde $conf[sql][charset] utf-8 $conf[sql][ssl] [ ] $conf[sql][ca] $conf[sql][splitread] Disabled
LDAP
LDAP Settings
$conf[ldap][useldap] [no]
Authentication
Authentication Settings
$conf[auth][admins] Administrator $conf[auth][checkip] [✔] $conf[auth][checkbrowser] [✔] $conf[auth][resetpassword] [✔] $conf[auth][alternate_login] false $conf[auth][redirect_on_logout] false $conf[auth][list_users] Showan input field $conf[auth][driver] Automatic authentication as a certain user $conf[auth][params][username] Administrator $conf[auth][params][password] $conf[auth][params][requestuser] [ ] $conf[auth][params][count_bad_logins] [ ] $conf[auth][params][login_block] [ ] $conf[auth][params][login_block_count 5 $conf[auth][params][login_block_time] 5
Terms of Service Agreement
$conf[tos][file]
Sign Up
Sign Up Settings
$conf[signup][allow] No
Logging
Logging Settings
$conf[log][enabled] Yes $conf[log][priority] INFO $conf[log][ident] HORDE $conf[log][time_format] $conf[log][type] Syslog $conf[log][name] LOG_USER $conf[log][log_accesskeys] [ ]
Preference System
Preference System Settings
$conf[prefs][maxsize] $conf[prefs][driver] SQL Database $conf[prefs][params][driverconfig] Horde defaults $conf[prefs][params][table] horde_prefs
Alarm System
Alarm System Settings
$conf[alarms][driver] SQL Database $conf[alarms][params][driverconfig] Horde defaults $conf[alarms][params][table] horde_alarms $conf[alarms][params][ttl] 300
Groups
Groups Settings
$conf[group][driver] SQL $conf[group][driverconfig] Horde defaults
Group Caching
GROUP CACHING HAS NOT BEEN IMPLEMENTED FOR HORDE 5 YET
Permissions
Permissions Settings
$conf[perms][driver] SQL $conf[perms][driverconfig] Horde defaults
Shares
Allow Sharing?
$conf[share][no_sharing] [ ] $conf[share][auto_create] [✔] $conf[share][world] [ ] $conf[share][any_group] [ ] $conf[share][hidden] [ ]
Share Caching
$conf[share][cache] [✔]
Shares Driver
$conf[share][driver] Next-Generation SQL
Cache System
Cache System Settings
$conf[cache][default_lifetime] 86400
$conf[cache][driver] SQL-based cache storage
$conf[cache][params][driverconfig] Horde defaults
$conf[cache][params][table] horde_cache
$conf[cache][compress] [✔]
$conf[cache][use_memorycache] none
CSS Caching
$conf[cachecss] Yes $conf[cachecssparams][driver] Filesystem (recommended) $conf[cachecssparams][lifetime] 86400 $conf[cachecssparams][compress] Built-in compressor (Good compression, good speed)
Javascript Caching
$conf[cachejs] Yes $conf[cachejsparams][driver] Filesystem (recommended) $conf[cachejsparams][compress] Built-in compressor (Good compression, good speed) $conf[cachejsparams][lifetime] 86400
Theme Caching
$conf[cachethemes] Yes $conf[cachethemesparams][check] Application versions $conf[cachethemesparams][lifetime] 86400
Lock System
Lock System Settings
$conf[lock][driver] SQL-based locking $conf[lock][params][driverconfig] Horde defaults $conf[lock][params][table] horde_locks
Token System
Token System Settings
$conf[token][timeout] 180 $conf[token][driver] SQL-based token storage $conf[token][params][driverconfig] Horde defaults $conf[token][params][table] horde_tokens
Mailer
Mailer Settings
$conf[mailer][type] Use a SMTP server (HIGHLY RECOMMENDED) $conf[mailer][params][host] smtp.dmz.nausch.org $conf[mailer][params][port] 25 $conf[mailer][params][localhost] vml000090.dmz.nausch.org $conf[mailer][params][auth] No authentication $conf[mailer][params][username] $conf[mailer][params][password]
Format
$conf[mailformat][brokenrfc2231] [ ]
Virtual File Storage
Virtual File Storage Settings
$conf[vfs][type] SQL database $conf[vfs][params][driverconfig] Horde defaults
Custom Session Handler
Custom Session Handler Settings
$conf[sessionhandler][type] SQL database $conf[sessionhandler][params][driverconfig] Horde defaults $conf[sessionhandler][params][table] horde_sessionhandler $conf[sessionhandler][memcache] [ ]
HTTP Proxy
HTTP Proxy Settings
$conf[http][proxy][proxy_host] $conf[http][proxy][proxy_port] $conf[http][proxy][proxy_user] $conf[http][proxy][proxy_pass]
Spell Checker
Spell Checker Settings
$conf[spell][driver] aspell (command line) $conf[spell][params][path] /usr/bin/aspell
GnuPG
GnuPG Settings
$conf[gnupg][path] /usr/bin/gpg $conf[gnupg][keyserver] pool.sks-keyservers.net, subkeys.pgp.net, pgp.mit.edu $conf[gnupg][timeout] 10
OpenSSL
$conf[openssl][cafile] /etc/pki/tls/certs/ca-bundle.crt $conf[openssl][path] /usr/bin/openssl
Themes
Theme Settings
$conf[nobase64_img] [ ]
Image Manipulation
Image Manipulation Settings
$conf[image][driver] The PECL Imagick Library (recommended)
Image Metadata Driver Settings
$conf[exif][driver] Exiftool (recommended) $conf[exif][params][exiftool] /usr/bin/exiftool
MIME Detection
MIME Detection Settings
$conf[mime][magic_db] /usr/share/misc/magic
Country Lookup
Country Lookup Settings
$conf[geoip][datafile] /usr/share/GeoIP/geoIP.dat
Timezone Lookup
Timezone Lookup Settings
$conf[timezone][location] ftp://ftp.iana.org/tz/tzdata-latest.tar.gz
Problem Reporting
Problem Reporting Settings
$conf[problems][tickets] No $conf[problems][email] webmaster@nausch.org $conf[problems][maildomain] nausch.org $conf[problems][username] $conf[problems][password] $conf[problems][attachments] [✔]
Menu
Menu Settings
$conf[menu][links][help] All users $conf[menu][links][prefs] Authenticated users $conf[menu][links][problem] All users $conf[menu][links][login] All users $conf[menu][links][logout] Authenticated users
Portal Blocks
Portal Blocks Settings
$conf[portal][fixed_blocks] Horde: Metar Weather
Fortune Configuration
$conf[fortune][exec_path] /usr/bin/fortune
Account Info Configuration
$conf[accounts][driver] None
User Capabilities and Constraints
User Capabilities and Constraints Settings
$conf[user][verify_from_addr] [ ] $conf[user][select_view] Yes
API Keys
API Keys Settings
$conf[api][googlemaps] $conf[api][googlesafebrowsing] $conf[api][googlesearch] $conf[api][yahoomaps] $conf[api][cloudmade] $conf[api][bing]
Facebook Integration Settings
$conf[facebook][enabled] Disabled
Twitter Integration Settings
$conf[twitter][enabled] Disabled
Url Shortening
$conf[urlshortener] None
Weather Services
$conf[weather][provider] None
IMAP Server
IMAP Server Settings
$conf[imap][enabled] Disabled
IMSP Server
IMSP Server Settings
$conf[imsp][enabled] Disabled
Kolab Server
Kolab Server Settings
$conf[kolab][enabled] Disabled
Memcache Server
Memcache Server Settings
$conf[memcache][enabled] Disabled
ActiveSync
ActiveSync Settings
$conf[activesync][enabled] Disabled
Am Ende unserer Konfigurationsarbeit, sichern wir die Konfiguration mit einem Klick auf die Schaltfläche: Die erfolgreiche Sicherung wird uns entsprechend angezeigt.