Сергей Яремчук
Несмотря на замечания скептиков, операционная система GNU/Linux смогла
привлечь (и привлекает) на свою сторону пользователей. Но если с установками на
сервере или на домашнем компьютере ситуация более или менее определенная и
зависит не в последнюю очередь от подготовки и желания пользователя или
администратора, то вот с применением этой системы на корпоративном уровне все
не так просто, как хотелось бы. И те администраторы, которые рискнули сделать
этот шаг, что скрывать, сталкиваются с проблемами. Недостаток информации,
разнообразие программ, интерфейсов, плохая и путающая пользователей
локализация, – это далеко не полный список, с чем придется столкнуться. Между
тем в сообществе Open Source уже известно несколько проектов, цель которых
заполнить имеющийся вакуум и заменить приложения, привычные по Windows.
Система программного обеспечения коллективной
работы OpenGroupware.org (OGo) призвана конкурировать с такими известными
продуктами, как Microsoft Exchange, IBM Lotus Domino и Novell GroupWise. Проект
не возник на ровном месте, основой послужил код одной из самых ранних таких
разработок под GNU/Linux – Skyrix 4.1 Groupware Server, представленный немецкой
компанией Skyrix Software AG, занимавшейся разработкой этого приложения с 1996
года (до 2000 года он назывался LSOffice). Именно поэтому с самого начала это
был рабочий продукт, а не прототип. Буквально за один день после анонса сайт
проекта http://www.opengroupware.org
посетили более чем два миллиона посетителей. Схожесть названия (да и истории
возникновения) с еще одним известным Open Source-проектом – OpenOffice.org
породила некоторую неразбериху. На сайте размещено примечание, что это хотя и
дополняющие друг друга, но все-таки отдельные сообщества. Кроме GNU/Linux, OGo
в настоящее время портирован под BSD, GNUstep и MacOSX. Интерфейс полностью
переведен на английский и немецкий, плюс ведутся разработки по локализации на
датский, испанский, итальянский, французский, голландский, корейский, турецкий,
японский и китайский. К сожалению, русского в этом списке нет. Все данные
хранятся в обычных текстовых файлах, рисунки хранятся в отдельных файлах и
используется Unicode, поэтому локализация не представляет серьезных проблем.
Достаточно перевести все параметры в файлах одного из подкаталогов /opt/opengroupware.org/Resources/
и настроить клиентов на вывод в нужной кодировке. Дополнительно в помощь «Translation
Project» представляет два скрипта, помогающих в переводе интерфейса (рис. 1).
Но, очевидно, не каждый будет этим заниматься, и OGo обретет у нас
популярность, после того как на него обратят внимание компании-разработчики ПО
вроде ALTLinux.

Рисунок 1
Приложения, входящие в состав OGo
Для доступа ко всем функциональным возможностям и данным проект представляет
открытые, основанные на XML интерфейсы и API. При этом все функции реализуются
в виде модулей, что позволяет расширять возможности по мере необходимости.
Поэтому состав приложений вполне может измениться, разработчики открыты для
общения.
Итак:
n Contact Management (менеджер контактов) –
сохранение и организация персональных и групповых контактов, с широкими
возможностями по поиску и оптимизации данных, с возможностью экспорта и
удаленного доступа.
n Group Calendar (календарь) – планирование
событий как персонально, так и для группы. Возможность добавления примечаний,
автоматическое обнаружение конфликтов, простая настройка повторяющихся событий.
n Resources Planner (планировщик ресурсов) –
позволяет рационально планировать использование различного имущества
(автомобили, проекторы), помещений, с возможностью поиска свободных интервалов
времени, автоматической проверкой конфликтов, посылки уведомлений.
n Task Management (менеджер задач) – организация персональных,
групповых или специфических задач с возможностью их упорядочивания по
приоритетам, дате, состоянию, выводом на персональной странице и уведомлением
по e-mail.
n E-Mail Client – предлагает удобную среду для
обмена e-mail посредством прямого доступа к IMAP4 и POP3-серверам, с
предоставлением большинства принятых в e-mail клиентах функциональных
возможностей и импортом данных в менеджер контактов.
n Projects and Documents (проекты и документы) –
единая централизованная среда, позволяющая использовать файлы и документы
локально и удаленно группами пользователей или участниками отдельного проекта,
с выдачей необходимых ссылок пользователям.
n News (новости) – доска объявлений, дает
возможность публиковать необходимую информацию (правила использования, новости
компании и пр.), плюс служит напоминанием о текущих задачах и служит как
персональная страница.
n Palm Sync (синхронизация с Palm) –
синхронизация данных в устройствах Palm с приложениями OGo.
Плюс ко всему имеется легко перестраиваемый
пользовательский интерфейс, а администратор получает возможность удобного
манипулирования пользовательскими и групповыми аккаунтами, и по настройке OGo.
Клиентами OGo могут выступать не только веб-браузеры, но некоторые популярные
утилиты вроде MS Outlook, kOrganizer, Mac OS/X Finder, Apple iCal.app, Ximian Evolution.
Надо отметить, что OGo далеко не единственный
проект такого рода, реализованный под свободные ОС или имеющие статус OpenSource.
Поэтому стоит вкратце, справедливости ради, дать ссылки и на остальные решения.
Тем более даже у некоторых из платных решений базовые версии, большей частью
свободны. Самый известный и довольно мощный продукт SUSE Linux Openexchange Server
(http://www.suse.com/us/business/products/openexchange/index.html).
Далее проект от разработчиков KDE и финансируемый правительством Германии – Kroupware
(http://www.kroupware.org, на момент
написания статьи ссылка не работала), DeskNow Mail and Collaboration server (http://www.desknow.com/index.html),
HyperOffice (http://www.hyperoffice.co),
проект, основанный на zope и qmail Amphora (http://www.amphora.ee/eng),
LinuXchangE (http://www.linuxchange.com),
PHPGroupware (http://www.phpgroupware.org).
В OGo подкупает размах, зрелость и самое главное
– свобода с использованием открытых технологий. Именно эти качества могут
привести к тому, что OGo вполне возможно и станет номером один в этом списке.
Установка
Если цель ваших исследований – ознакомление с этим продуктом, и имеется
возможность скачать файл большого объема, то лучшим и самым быстрым вариантом
получить работающую версию будет использование LiveCD, базирующегося на Knoppix
(http://www.opengroupware.org/knoppix/index.html).
В этом случае можно носить его с собой для демонстрации возможностей. В любом
другом случае придется немного повозиться с установкой. Но в отличие от многих
других проектов, только начавших свой путь, установка особых проблем вызвать не
должна, и, имея некоторый опыт общения с UNIX-системами, заставить работать OGo,
безусловно, можно. Дополнительно проект в последнее время начал быстро
обрастать HOWTO, в которых объясняется специфика установки для отдельного
дистрибутива и готовыми скриптами, автоматизирующими процесс. Но, если почитать
всю доступную документацию, можно немного запутаться, т.к. авторы HOWTO
подходят по-разному к самому процессу, а в предлагаемых скриптах используются
разные пути и переменные. К тому же в некоторых документах указаны команды, в
которых на данный момент уже нет необходимости. Как пример rpm-пакеты
распаковываются в /opt/opengroupware.org (исключение – недавно появившиеся
пакеты для SuSE 9.1 – /usr/local/share/opengroupware.org-1.0a) и /opt/skyrix/, Debian
в /usr/lib/opengroupware.org, скрипты для Slackware устанавливают все в каталог
вида /opt/OGo-yyyymmdd/. Хотя если почитать документацию годичной давности, то
можно сделать вывод, что раньше возни было все-таки побольше. А поэтому просто
необходимо быть внимательным и для начала использовать официальную (т.е. общую)
документацию.
Далее на странице закачки уже появились ссылки на
прекомпилированные пакеты, собранные сторонними добровольцами, все в основном
под glibc 2.3. Если в дистрибутиве используется более ранняя версия этой
библиотеки, попробуйте собрать из исходников или обновите glibs. Как исключение
имеются пакеты для RedHat 7.3 (http://ftp.nakedape.cc/nakedape/rh73/rpm/opengroupware).
Приведу пример ручной конфигурации OGo для rpm-пакетов, испробованная на SuSE
9.1, RedHat 9, Linux XР и Mandrake 10, хотя сейчас доступен Perl скрипт Kelley Graham
http://www.toasterz.com/ogo/add_remove_ogo.pl,
который может сделать большую часть работы за вас (wget -q -O –
http://exchangekiller.com/install | perl и ./add_remove_ogo.pl install).
Итак, прекомпилированые пакеты доступны как по
отдельности, в этом случае нужно скачать все имеющие latest в названии или
единым архивом, например, rpm-all-latest.tar.bz2.
Первым делом распаковываем архив:
# tar -xzvf
rpm-all-latest.tar.bz2
В результате образуется подкаталог rpm,
содержащий 78 файлов, переходим в него:
# cd rpm
Все в принципе не нужны, но какая разница.
# rpm -Uvh *.rpm
В процессе система выдает сообщения о домашнем
каталоге утилиты и о создаваемых пользователях.
Running post installation
in root '/opt/skyrix/system' ..
GNUstep root: /opt/skyrix/system
...
GNUstep Root: /opt/opengroupware.org
No 'skyrix' group
available on the system, creating...
Using group ID
'321'
Made a backup of the
group file in '/opt/opengroupware.org/backup/200409251027'
Created group 'skyrix'.
No 'opengroupware'
user available on the system, creating...
Using user ID
'56641'
Made a backup of the
passwd/shadow file in '/opt/opengroupware.org/backup/200409251027'
Created user 'opengroupware'
with UID '56641'
Далее конфигурирование PostgreSQL (подробности
см. в статье Сергея Супрунова «PostgreSQL: первые шаги», журнал «Системный
администратор» № 7, 2004 г.).
Редактируем файл /var/lib/pgsql/data/pg_hba.conf:
local all all trust
host all all 127.0.0.1
255.255.255.255 trust
host all all 0.0.0.0 2
55.255.255.255 reject
Так советуют разработчики. Но в этом случае к
базе данных получают доступ все локальные пользователи, а поэтому данную
конфигурацию следует использовать только при отладке.
Далее стоит безопасности ради использовать
конкретного пользователя вроде:
host opengroupware skyrix
127.0.0.1 255.255.255.255 trust
А лучше еще и требовать пароль для доступа.
host opengroupware skyrix
127.0.0.1 255.255.255.255 passwd (или md5)
Да и в более ранних версиях (<=7.2) нужно
использовать конструкцию с одним all.
local all trust
Далее в файле /var/lib/pgsql/postgresql.conf
должны быть такие строки.
# CONNECTIONS AND
AUTHENTICATION
#--------------------------------------------------------
# - Connection Settings -
tcpip_socket = true
max_connections =
32
port = 5432
Перезапускаем сервер:
# /etc/init.d/postgresql
restart
Shutting down PostgreSQL
done
Starting PostgreSQL
done
Теперь создаем новую базу данных, таблицы,
пользователя.
# su
# cd /opt/opengroupware.org/Database/PostgreSQL
# su postgres
# createdb ogo
CREATE DATABASE
# createuser -A
-D ogo
CREATE USER
# psql ogo ogo
Welcome to psql
7.4.2, the PostgreSQL interactive terminal.
Type: \copyright
for distribution terms
\h for help with
SQL commands
\? for help on
internal slash commands
\g or terminate
with semicolon to execute query
\q to quit
ogo=> \i pg-build-schema.psql
Дело сделано, выходим.
ogo=> \q
Настала очередь Apache. Для начала необходимо
установить модуль, находящийся по адресу: http://www.opengroup
ware.org/sources/old-cvs-sources/opengroupware.org-mod_ngobjweb-latest.tar.gz.
# tar -zxvf opengroupware.org-mod_ngobjweb-latest.tar.gz
# cd opengroupware.org-mod_ngobjweb
Если установлен второй Apache, то, возможно, в
файле GNUmakefile придется исправить строку: HTTPD = $(APACHE)/sbin/httpd2.
# make
Получаем модуль ngobjweb_x.x.xx.so, где х
соответствует версии сервера. Копируем его, куда нам удобнее.
# mkdir /opt/opengroupware.org/module
# cp ngobjweb_2.0.40.so /opt/opengroupware.org/module
Следующим шагом редактируем /etc/apache2/httpd.conf.
Здесь два варианта – занести все параметры в httpd.conf
или вынести все в отдельный файл и прописать путь к нему строкой вида Include /etc/apache2/ogo.conf.
Поступайте, как вам удобней.
#OpenGroupware Apache Module config
file.
LoadModule ngobjweb_module/opt/opengroupware.org/module/ngobjweb_2.0.40.so
<LocationMatch "^/OpenGroupware/*">
SetHandler ngobjweb-adaptor
SetAppPort 20000
# SNSPort 127.0.0.1:20000
</LocationMatch>
<Directory "/opt/opengroupware.org/WebServerResources">
Order allow,deny
Allow from all
</Directory>
Alias
/OpenGroupware.woa/WebServerResources/opt/opengroupware.org/WebServerResources
# Exchange public folders URL
<LocationMatch "^/zidestore/*">
SetHandler ngobjweb-adaptor
SetAppPort 23000
</LocationMatch>
Alias /zidestore/so/images /opt/opengroupware.org/WOApps/ZideStore.woa/WebServerResources
# News Alias
Alias /ArticleImages /opt/opengroupware.org/news
Перезапускаем сервер.
#/etc/init.d/apache2
restart
Syntax OK
Starting httpd2 (prefork) done
Запускаем OpenGroupware. При отладке полезно
давать команды прямо из консоли, тогда сразу будут видны все ошибки.
# su opengroupware
# echo "source /opt/opengroupware.org/OpenGroupware.org.sh"
>> ~/.bash_profile
# echo "export
LD_ASSUME_KERNEL=2.4.1" >> ~/.bash_profile
Примечание в дистрибутивах, не использующих NTPL,
последняя строка не нужна, в Fedora она будет иметь вид: export
LD_ASSUME_KERNEL=2.4.19.
#
/opt/opengroupware.org/WOApps/OpenGroupware.woa/ix86/linux-gnu/gnu-fd-nil/OpenGroupware
-WOHttpAllowHost localhost
В первый раз система, скорее всего, не сможет
найти требуемые версии библиотек и выдаст ошибки. Поэтому для начала нужно
занести следующие строки в файл /etc/ld.so.conf (для rpm-версии, в остальных
случаях измените путь), после чего даем команду ldconfig.
/opt/opengroupware.org/Libraries/ix86/linux-gnu/gnu-fd-nil
/opt/skyrix/system/Libraries/ix86/linux-gnu/gnu-fd-nil
Для удовлетворения зависимостей в случае SuSE 9.1
необходимо дать такие команды:
# ln -s /usr/lib/libldap.so.199.3.4
/usr/lib/libldap.so.2
# ln -s /usr/lib/libssl.so.0.9.7
/usr/lib/libssl.so.0.9.6
# ln -s /usr/lib/libcrypto.so.0.9.7
/usr/lib/libcrypto.so.0.9.6
# ln -s /usr/lib/liblber.so.199.3.4
/usr/lib/liblber.so.2
Если используется другой дистрибутив, то в
сообщении будет указана требуемая версия. Например:
/opt/opengroupware.org/WOApps/OpenGroupware.woa/ix86/linux-gnu/gnu-fd-nil/OpenGroupware:
error while loading shared libraries: liblber.so.2: cannot open shared object file:
No such file or directory
А команда ls -al /usr/lib/lib* укажет на имеющуюся.
Запускаем:
#
/opt/opengroupware.org/WOApps/OpenGroupware.woa/ix86/linux-gnu/gnu-fd-nil/OpenGroupware
-WOPort 20000 -WOHttpAllowHost localhost \
-OGoMinimumActiveSessionCount
0 -LSNewsImagesUrl '/ArticleImages' -LSNewsImagesPath /opt/opengroupware.org/news
\
-LSConnectionDictionary {databaseName
= ogo; hostName = 127.0.0.1; password = "qwerty"; port = 5432; userName
= ogo} \
-LSAdaptor PostgreSQL72 -LSModelName
OpenGroupware.org_PostgreSQL >> /var/log/ogo.log 2>&1 &
#
/opt/opengroupware.org/WOApps/ZideStore.woa/ix86/linux-gnu/gnu-fd-nil/ZideStore
-WOPort 23000 -WOHttpAllowHost localhost -SxExplain YES \
-WOCachingEnabled YES -WOHttpTransactionUseSimpleParser
YES >> /var/log/ogo.log 2>&1 &
Для автоматического запуска лучше использовать init-скрипт.
Ничего самому писать не надо, уже имеются готовые. Для RedHat смотрите на http://toasterz.com/ogo/docs/opengroupware,
в пакете slack-all для Slackware тоже имеется готовый скрипт, другие можно
найти по адресу: http://helms-deep.cable.nu/~rwh/howtos/opengroupware,
http://exchangekiller.com/docs/opengroupware
(наиболее полный), http://helms-deep.cable.nu/~rwh/howtos/opengroupware2,
http://mail.opengroupware.org/pipermail/users/2003-July/000427.html,
http://www.toasterz.com/ogo/docs/run.conf.
Выберите любой понравившийся, только проверьте пути.
# wget -v -N
http://exchangekiller.com/docs/opengroupware
# cp ./opengroupware /etc/init.d/
# chmod u+x /etc/init.d/opengroupware
# ln -s /etc/init.d/opengroupware/etc/init.d/rc3.d/S20opengroupware
# ln -s /etc/init.d/opengroupware/etc/init.d/rc3.d/K20opengroupware
# ln -s /etc/init.d/opengroupware/etc/init.d/rc5.d/S20opengroupware
# ln -s /etc/init.d/opengroupware/etc/init.d/rc5.d/K20opengroupware
Запускаем.
# /etc/init.d/opengroupware start
Если теперь набрать в строке веб-браузера:
http://localhost/OpenGroupware, то получите доступ как администратор со всеми
привилегиями без пароля (рис. 2), который тут же надо установить (Preferences –>
Edit Password) и создать остальных пользователей. Теперь при входе будет
запрашиваться логин и пароль.

Рисунок 2
Тонкая настройка параметров работы сервера OGo
может производиться из командной строки при запуске, путем ручного
редактирования конфигурационных файлов или при помощи команды Defaults. Для
запуска последней выполняем от имени пользователя opengroupware команду:
# source /opt/opengroupware.org/OpenGroupware.org.sh
(если она не занесена в файл ~/.bash_profile). Теперь можно работать,
например, для просмотра установленных параметров используется опция read.
# Defaults read
{
Defaults = {};
NSGlobalDomain
= {
"skyrix_id"
= server.com;
LSAdaptor
= PostgreSQL72;
LSAttachmentPath
= "/opt/opengroupware.org/documents";
LSConnectionDictionary
= {
databaseName
= ogo;
hostName
= localhost;
password
= "qwerty";
port =
5432;
userName
= ogo;
};
LSModelName
= "OpenGroupware.org_PostgreSQL";
LSNewsImagesPath
= "/opt/opengroupware.org/news";
LSNewsImagesUrl = "/ArticleImages";
Languages
= (
English
);
NGBundlePath
= "/opt/opengroupware.org/Library/OpenGroupware.org";
TimeZoneName
= GMT;
XMLReader
= libxmlSAXDriver;
};
OpenGroupware
= {};
skyaptnotify =
{
AptNotifyFromAddress
= "sergej@server.com";
AptNotifySkyrixUser = root;
AptNotifySkyrixPassword
= khjds5d;
};
}
Параметр write установит указанный ключ, delete
удалит значение. Например:
# Defaults write NSGlobalDomain
LSConnectionDictionary '{hostName=localhost; userName=ogo;
password="12345"; \
ort=5432; databaseName=ogo}'
# Defaults write NSGlobalDomain
NGBundlePath "/opt/opengroupware.org/Library/OpenGroupware.org"
# Defaults write NSGlobalDomain LSAttachmentPath /opt/opengroupware.org/documents
Настройка для работы с LDAP описана в документе «Active
Directory Authentication Mini-HOWTO», интеграция с телефонными системами в «Telephony
Integration with OGo», которые доступны на сайте.
Средства обеспечения коллективной работы помогают
оптимизировать рабочее время сотрудников, позволяя лучше управлять свободным
временем, распределять задачи, эффективней использовать информацию. Миру Open Source
не хватало готового полноценного продукта. Теперь эта ситуация изменилась. Если
почитать отзывы о тестировании OGo годичной давности, то несмотря на сырость
программы, отмечалось, что это готовый и, самое главное, своевременный продукт.
За последнее время убраны некоторые шероховатости, намечены разработки на
будущее, проект оброс документацией, несколькими подпроектами и армией
пользователей. Возможно, кто-то предпочтет использовать OpenGroupware.org
вместо популярных сегодня платных и отнюдь не дешевых решений.