воскресенье, 23 января 2011 г.

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


Приветствую тебя, читатель
Предыстория:
В данный момент я работаю в небольшой конторе, которая занимается консультированием, аудитом и обслуживание в области IT. Хотя контора и небольшая, количество клиентов у нас росло быстрыми темпами, и без нормального хелпдеска обойтись было уже очень сложно. Рассмотрев приличный перечень продуктов, как платные так и бесплатные, наш выбор пал на продукт фирмы BestPractical, который называется весьма незамысловато Request Tracker.

Request Tracker—система учёта и отслеживания заявок уровня предприятия с открытым исходным кодом, позволяющая управлять задачами, проблемами, и внешними запросами от пользователей. Система написана на объектно-ориентированном языке Perl. Система начала разрабатываться с 1996, и используется системными администраторами, сотрудниками служб техподдержки, IT-менеджерами, разработчиками и маркетинговыми отделами.

Выбран был по следующим критериям
  • бесплатный (есть возможность использовать по модели 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 , "http://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 http://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. не сильно подробно расписал?

11 коммент.:

Itshka комментирует...
Этот комментарий был удален автором.
Ruslan U. Zakirov комментирует...

Настраивать WebBaseURL неправильно. WebDomain, WebPort и WebPath. В вашем случае только WebDomain и отличается от значения по умолчанию. DatabaseHost лучше оставить пустым для соединения по сокету, а не через loopback. Желательно обрамит значение DatabasePassword в кавычки, а то скопируют буквально.

Что-то вы намудрили с локациями в конфиге апача. Зачем закрыли весь NoAuth? Там много чего интересного лежит, что должно быть доступно. Удалите Location директивы из примера конфига апача, так будет статья чище.

Пощу ссылку на статью на http://request-tracker.ru

zar0ku1 комментирует...

1) поподробнее, где написано, что неправильно
2) у меня база MySQL находится на другом хосте, это я так для общего случая указал localhost
3) я его закрыл для всех, кроме указанного ip или подсети, зачем наружу выводить сервисы с NOAUTH объясните, пожалуйста

Ruslan U. Zakirov комментирует...

1) В описании к конфигу написано

$WebBaseURL, $WebURL

Usually you don't want to set these options. The only obviouse reason is
RT accessible via https protocol on non standard port, eg
'https://rt.example.com:9999'. In all other cases these options are computed using $WebDomain, $WebPort and $WebPath.

Отсутствие правильного значения в WebDomain приводит к скрытым ошибкам.

2) Понятно.

3) Так NoAuth - это NoAuthentication (без авторизации) и там лежит css, js, картинки и прочее. Конечно есть еще mailgate и вот его нужно закрыть.

zar0ku1 комментирует...

1) это мелочь... но все равно спасибо за указание
3) У вас простые юзеры имеют доступ к RT? зачем? у нас доступ к RT есть только с корпоративной сети

Ruslan U. Zakirov комментирует...

1) Это не мелочь. Система не работает в нескольких случаях, если не установить WebDomain.

3) Странно, что вы закрываете NoAuth и REST, но доступ к основной директории у всех.

Вы написали статью и замечания по статье. Пытаюсь ее сделать более простой для тех, кто не понимает всех директив и зачем они. Таких много.

PS: Я один из разработчиков системы. Так что у меня есть разные варианты установок, и открытые и закрытые.

ivans комментирует...

По поводу fetchmail.
Можно в fetchmailrc вместо
mda "/usr/local/bin/rt-mailgate --url http://ip-address --action correspond --queue General"
вставить
to support here
А в /etc/mail/aliases добавить
support: "| /usr/local/bin/rt-mailgate --url http://ip-address --action correspond --queue General"

ivans комментирует...

Ночью оставлял комментарий по поводу fetchmail, а сегодня его нет, странно...
Чтобы не запускать fetchmail от рута, я добавил в /etc/mail/aliases
support: "| /usr/local/bin/rt-mailgate --url http://ip-address --action correspond --queue General"
а в fetchmailrc вместо
mda "/usr/local/bin/rt-mailgate --url http://ip-address --action correspond --queue General"
добавил
to support here

Yury комментирует...

Здраствуйте.
Скачал FreeBSD с офф. сайта, установил по инструкции выше, захожу на локальный rt мозилой и не могу в "Preferences"->"Locale" найти выбор русского языка, там только "Date format", а языка(который, как писали в разных источниках) нет. Как сделать, чтобы там появился выбор или установить как-нибудь ещё?

rom74rus комментирует...

А можно попросить рассказать про отправку почты с RT если кто нибудь настраивал дайте ссылку и направьте куда копать

Олег Тимшин комментирует...

Расскажите про настройку LDAP авторизации для пользователей на примере 4.0.xxx версии

Отправить комментарий