
Приветствую тебя, %habrauser%!
Предыстория:
В данный момент я работаю в небольшой конторе, которая занимается консультированием, аудитом и обслуживание в области IT. Хотя контора и небольшая, количество клиентов у нас росло быстрыми темпами, и без нормального хелпдеска обойтись было уже очень сложно. Рассмотрев приличный перечень продуктов, как платные так и бесплатные, наш выбор пал на продукт фирмы BestPractical, который называется весьма незамысловато Request Tracker.
Request Tracker—система учёта и отслеживания заявок уровня предприятия с открытым исходным кодом, позволяющая управлять задачами, проблемами, и внешними запросами от пользователей. Система написана на объектно-ориентированном языке Perl. Система начала разрабатываться с 1996, и используется системными администраторами, сотрудниками служб техподдержки, IT-менеджерами, разработчиками и маркетинговыми отделами.
ru.wikipedia.org/wiki/Request_Tracker
Выбран был по следующим критериям
- бесплатный (есть возможность использовать по модели SaaS с ежемесячной платой)
- кросплатформенный (написан на PERL)
- свободная лицензия GPLv2
- очень хорошо документирован
- поддерживает различные СУБД (MySQL, PostgreSQL, SQlite, Oracle DB)
- интегрирован движок RTFM (аналог Wiki)




Текущая версия 3.8.8 от 5 мая 2010 года, вот ее сейчас мы и будем устанавливать.
Установка:
В качестве операционной системы я использую Freebsd 8 ветки. Как обычно перед установкой чего-либо обновляем порты:
# portsnap fetch update
В качестве веб-сервера я буду использовать классический вариант: apache 2.2 с mod_perl2 (можете использовать nginx или lighttpd)
# cd /usr/ports/www/apache22 && make install clean
# cd /usr/ports/www/mod_perl2 && make install clean
Теперь устанавливаем сам RT 3.8:
# cd /usr/ports/www/rt38 && make install clean
В качестве СУБД я буду использовать MySql 5.1
# cd /usr/ports/database/mysql51-server && make install clean
После установки прописываем возможность запуска приложений в /etc/rc.conf
apache22_enable="YES"
mysql_enable="YES"
и теперь запускаем только mysql-server
# /usr/local/etc/rc.d/mysql-server start
Теперь проверяем все ли зависимости RT у нас правильно установились:
# /usr/local/sbin/rt-test-dependencies --with-mysql --with-modperl2
Если видим в конце строчку «All dependencies have been found” Значит все хорошо, если нет, то настраиваем CPAN и устанавливаем недостающие зависимости:
# /usr/bin/perl -MCPAN -e shell
# /usr/local/sbin/rt-test-dependencies --with-mysql --with-modperl2 –install
C программным обеспечением разобрались, теперь перейдем к настройке RT. У RT есть два конфигурационных файла RT_Config.pm и RT_SiteConfig.pm. Файл RT_Config.pm содержит значения по умолчанию, которые заменяются значениями из файла RT_SiteConfig.pm. Поэтому открываем файл RT_SiteConfig.pm и указываем свои значения вместо дефолтных:
Set( $rtname, 'Firma');
Set($WebBaseURL , "rt.domen.com");
Set( $WebPath , "");
Set($DataBaseType , 'mysql');
Set($DatabaseHost , 'localhost');
Set($DatabaseRTHost , 'localhost');
Set($DatabaseName , 'rt3');
Set($DatabaseUser, 'rt38');
Set($DatabasePassword , password);
Set($Timezone, 'Asia/Sakhalin');
Set($CorrespondAddress, 'support@domen.com);
Set($CommentAddress, 'suppport-comment@domen.com);
Set($RTAddressRegexp, '^support(-comment)?\@(domen)\.(com)$');
Set($OwnerEmail, 'sergey@domen.com');
Set($AutoCreate, {Privileged => 1});
Set($NotifyActor, 1);
1;
Перед этим мы заводим пользователя в mysql и указываем его логин и пароль в данном файле. Теперь инициализируем базу данных RT (инициализируем от рута, скрипт сам даст необходимые права для пользователя, которого мы указали в RT_Config.pm):
# rt-setup-database --action init --dba root --prompt-for-dba-password
Назначаем права на конфигурационные файлы:
# Chown www /usr/local/etc/rt38/RT_Config.pm
# Chmod 600 /usr/local/etc/rt38/RT_Config.pm
# Chown www /usr/local/etc/rt38/RT_SiteConfig.pm
# Chmod 600 /usr/local/etc/rt38/RT_SiteConfig.pm
В принципе для запуска RT все готово, но у нас есть один нюанс, корпоративная почта работает через Google Apps и аккаунт support@domen.com завден там, следовательно нам надо как-то научить RT получать почту с Google Apps. В этом нам поможет fetchmail, устанавливаем:
# cd /usr/ports/mail/fetchmail/ && make install clean
Так как gmail работает по зашифрованному протоколу, нам нужно подсунуть эти сертификаты fetchmail. Для этого создаем директорию под сертификаты:
# mkdir /usr/local/certs/
Создаем внутри этой директории файл:
# touch /usr/local/certs/gmail.pem
И выполняем скрипт чтобы получить сертификат:
# openssl s_client -connect pop.gmail.com:995 -showcerts > /usr/local/certs/gmail.pem
Правим получившийся файл, удаляем все до -----BEGIN CERTIFICATE----- и все что после -----END CERTIFICATE----- Потом копируем утилиту для хеширования
# cp /usr/src/crypto/openssl/tools/c_rehash /usr/local/bin/c_rehash
# chmod +x /usr/local/bin/c_rehash
И выполняем хеширование сертификата:
# c_rehash /usr/local/certs/
Теперь нам нужно получить отпечаток сертификата и вставить его в конфиг fetchmail
# openssl x509 -in /usr/local/certs/gmail.pem -noout -md5 –fingerprint
Отпечаток получен, осталось поправить конфиг fetchmail’a примерно до такого вида:
defaults protocol pop3,
timeout 60,
fetchall
set logfile=/var/log/fetchmail
poll pop.gmail.com
port 995
username support@domen.com
password '****'
mda "/usr/local/bin/rt-mailgate --url ip-address --action correspond --queue General"
ssl
sslcertpath /usr/local/certs/
sslfingerprint "6B:**:**:**:**:**:**:**:**:**:**:**:**:**:B6"
(тут небольшое отступление, fetchmail запускается от своего пользователя fetchmail, но почему-то у меня он так не захотел работать, а в логах писал «fetchmail: Cannot switch effective user id to 0: Operation not permitted” поэтому как временное решение данной проблемы, я запустил fetchmail под рутом, что не есть хорошо. Если кто-то знает решение проблемы, очень буду рад услышать)
Добавляем в /etc/rc.conf
fetchmail_enable="YES"
fetchmail_user="root"
создаем лог файл для fetchmail, вообще-то он и так кладет логи в /var/log/maillog но чтобы они не перемешивались с остальными
# touch /var/log/fetchmail
и стартуем fetchmail
# /usr/local/etc/rc.d/fetchmail start
По умолчанию fetchmail проверяет почту раз в 900 секунд, это можно настроить, проправив стартовый скрипт.
Осталось поправить конфиг apache виртуальный хост следующего содержания и стартуем его
<VirtualHost *:80>
ServerName rt.domen.com
ServerAdmin sergey@domen.com
DocumentRoot /usr/local/share/rt38/html
AddDefaultCharset UTF-8
PerlModule Apache::DBI
PerlRequire /usr/local/bin/webmux.pl
<Directory /usr/local/share/rt38/html>
Order allow,deny
Allow from all
SetHandler perl-script
PerlResponseHandler RT::Mason
</Directory>
<Location /NoAuth>
Order allow,deny
Allow from IP-ADDRESS
Satisfy any
</Location>
<Location /REST/1.0/NoAuth>
Order allow,deny
Allow from IP-ADDRESS
Satisfy any
</Location>
</VirtualHost>
Отправляем письмо на support@domen.com и заходим на rt.domen.com и посмотреть что у нас получилось, стандартные логин/пароль — root/password. Если что-то не так, смотрим логи apache и fetchmail
На этом установка Request Tracker 3.8 завершена. Если данная тема интересна, я продолжу писать про эту систему, и в следующей статье мы рассмотрим настройку.
P.S. не сильно подробно расписал?