Установка Horde и модулей.
Для пакета www-apps/horde включаем флаг mysql и проставляем сам horde и его модули:
echo "www-apps/horde mysql" >> /etc/portage/package.use emerge -vt -j3 www-apps/horde www-apps/horde-gollem www-apps/horde-imp www-apps/horde-kronolith www-apps/horde-mnemo www-apps/horde-nag www-apps/horde-pear www-apps/horde-turba
После установки пакетов проверяем настройки PHP:
egrep 'short_open_tag|magic_quotes_runtime|file_uploads' /etc/php/apache2-php5.3/php.ini | grep -v '^;' short_open_tag = On magic_quotes_runtime = Off file_uploads = On
Установка в виртуальный хост
Устанавливаем пакеты на виртуальный хост:
webapp-config -I -h virtual.host.ru -d horde horde 3.3.11 webapp-config -I -h virtual.host.ru -d horde/gollem horde-gollem 1.1.2 webapp-config -I -h virtual.host.ru -d horde/kronolith horde-kronolith 2.1.8 webapp-config -I -h virtual.host.ru -d horde/imp horde-imp 4.3.8 webapp-config -I -h virtual.host.ru -d horde/mnemo horde-mnemo 2.2.3 webapp-config -I -h virtual.host.ru -d horde/nag horde-nag 2.3.4 webapp-config -I -h virtual.host.ru -d horde/turba horde-turba 2.3.4
Если ставиться будем в корень сайта, то команды чуть другие:
webapp-config -I -h virtual.host.ru horde 3.3.11 webapp-config -I -h virtual.host.ru -d gollem horde-gollem 1.1.2 webapp-config -I -h virtual.host.ru -d kronolith horde-kronolith 2.1.8 webapp-config -I -h virtual.host.ru -d imp horde-imp 4.3.8 webapp-config -I -h virtual.host.ru -d mnemo horde-mnemo 2.2.3 webapp-config -I -h virtual.host.ru -d nag horde-nag 2.3.4 webapp-config -I -h virtual.host.ru -d turba horde-turba 2.3.4
Готовим конфигурационные файлы к правке. Настраивать будем через web-интерфейс, по этому даём право записи для апача на conf.bak.php и conf.php:
for d in horde horde/gollem horde/kronolith horde/imp horde/mnemo horde/nag horde/turba ; do cd /var/www/virtual.host.ru/htdocs/$d/config ; for f in *.dist ; do cp ${f} ${f/.dist} ; done ; done for d in horde horde/gollem horde/kronolith horde/imp horde/mnemo horde/nag horde/turba ; do touch /var/www/virtual.host.ru/htdocs/$d/config/conf.{bak.,}php chown apache:root /var/www/virtual.host.ru/htdocs/$d/config/conf.{bak.,}php done
Опять же, если ставимся в корень сайта, то список директорий должен быть поправлен:
for d in . gollem kronolith imp mnemo nag turba ; do cd /var/www/virtual.host.ru/htdocs/$d/config ; for f in *.dist ; do cp ${f} ${f/.dist} ; done ; done for d in . gollem kronolith imp mnemo nag turba ; do touch /var/www/virtual.host.ru/htdocs/$d/config/conf.{bak.,}php chown apache:root /var/www/virtual.host.ru/htdocs/$d/config/conf.{bak.,}php done
Создание базы
Создаём базу и таблицы в mysql (считаем, что mysql'ный root без пароля), и меняем пароль у пользователя horde:
mysql mysql < /var/www/virtual.host.ru/htdocs/horde/scripts/sql/create.mysql.sql mysql horde < /var/www/virtual.host.ru/htdocs/horde/imp/scripts/sql/imp.sql mysql horde < /var/www/virtual.host.ru/htdocs/horde/nag/scripts/sql/nag.sql mysql horde < /var/www/virtual.host.ru/htdocs/horde/mnemo/scripts/sql/mnemo.sql mysql horde < /var/www/virtual.host.ru/htdocs/horde/turba/scripts/sql/turba.sql mysql horde < /var/www/virtual.host.ru/htdocs/horde/kronolith/scripts/sql/kronolith.mysql.sql mysql mysql -e "update user set Password=Password('супер-пароль') where user.User = 'horde';" mysql mysql -e "FLUSH PRIVILEGES;"
Настройка
Правим:
- /var/www/virtual.host.ru/htdocs/horde/config/conf.php
$conf['cookie']['path'] = '/'; //если мы ставимся в корень сайта $conf['auth']['admins'] = array('admin@virtual.host.ru'); $conf['auth']['params']['dsn'] = '{imap.server.ru:143/imap/notls}'; $conf['auth']['params']['imapconfig'] = 'dsn'; $conf['auth']['driver'] = 'imap';
Разрешаем авторизоваться через имап:
- /var/www/virtual.host.ru/htdocs/horde/imp/config/servers.php
$servers['imap'] = array( 'name' => 'IMAP Server', 'server' => 'imap.server.ru', 'hordeauth' => true, 'protocol' => 'imap/notls', 'port' => 143, 'maildomain' => 'server.ru', 'smtphost' => 'smtp.server.ru', 'smtpport' => 25, 'realm' => '', 'preferred' => 'true', );
Фиксим хорду, чтобы IMAP серверу логин отдавался в виде email@domain.ru.
/var/www/virtual.host.ru/htdocs/horde/imp/lib/Auth cp imp.php imp.php-saved
- /var/www/virtual.host.ru/htdocs/horde/imp/lib/Auth/imp.php
//комментируем 68-70 строки, вписываем вместо них новую строку: $imapuser = Auth::getAuth(); // $imapuser = (strcasecmp($ptr['hordeauth'], 'full') == 0) // ? Auth::getAuth() // : Auth::getBareAuth();
Ещё один воркэраунд:
~ $ diff /usr/share/webapps/horde-imp/4.3.8/htdocs/lib/IMAP/Tree.php /var/www/virtual.host.ru/htdocs/horde/imp/lib/IMAP/Tree.php 310a311,313 > /* INBOX must always appear. Also this line is a workawound for www-apps/horde-imp-4.3.8 */ > $names = array('INBOX' => 1); >
Заходим браузером на http://horde.host/horde/admin/setup
В меню выбираем пункт Приложения и начинаем настройку с, собственно, horde (портал). Указываем, что данные будут храниться в базе, авторизация будет проходить через imap.