Pull to refresh

Установка Request Tracker 3.8

Reading time 5 min
Views 37K


Приветствую тебя, %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. не сильно подробно расписал?
Tags:
Hubs:
+31
Comments 58
Comments Comments 58

Articles