
OTRS (аббр. от англ. Open-source Ticket Request System) — открытая система обработки заявок. OTRS позволяет организациям, занимающимся технической поддержкой каких-либо проектов, совместно работать над решением проблем пользователей. Программа написана на языке Perl, поддерживает множество СУБД (MySQL, PostgreSQL и т.д.), может интегрироваться с LDAP каталогом, распространяется по лицензии — AGPL версии 3.
OTRS прекрасно и без особых хлопот устанавливается на любой LAMP (Linux, Apache, MySQL, PHP). Но как быть, если нет опыта работы и администрирования Linux?
Четвертая версия OTRS не имеет инсталлятора Windows-версии. Я решил выложить свой способ установки OTRS из исходников в Windows-окружении. Однако, важно понимать, что производительность OTRS, запущенной в родном Linux-окружении, будет выше, чем на аналогичном железе в Windows-окружении.
Самая большая проблема, с которой я столкнулся при установке OTRS – рабочий mod_perl для Apache. К счастью, энтузиасты регулярно выкладывают свежие версии мода под новые версии Perl и Apache.
Итак, нам понадобятся:
• MySQL Server v 5.5 64-bit.
• Apache v 2.2 32-bit.
• Strawberry Perl 5.20.1.1 32-bit.
• Ну и сам mod_perl.
• Планировщик Cron for Windows (опционально).
• Visual C++ 2008 SP1 Redistributable Package (x86).
• Visual C++ 2010 SP1 Redistributable Package (x86).
• Собственно сама OTRS.
Установка Apache HTTP Server
Для работы Apache требует Visual C++ 2008 SP1 Redistributable Package. Качаем по ссылке выше и устанавливаем.
Выкачаем архив с Apache и распаковываем папку apache2 из архива в папку c:/apache2 (по умолчанию ServerRoot расположен по этому пути). Если для Apache Вы выбрали другое расположение, необходимо изменить ServerRoot в httpd.conf, а также расположение Documenroot, Directories, ScriptAlias.
Для установки службы Apache из папки c:\Apache2\bin в командной строке вводим
httpd.exe -k install

Служба успешно установлена.
Запустим файл c:\Apache2\bin\ApacheMonitor.exe и поместим его в автозагрузку. Запустим службу Apache.

В браузере в адресной строке переходим по адресу http://localhost. Если все хорошо, то увидим страничку с текстом «It works!».

Устанавливаем Strawberry Perl
Качаем Strawberry Perl по ссылке выше, распаковываем все в папку c:/strawberry. В командной строке запускаем следующие файлы.
c:\strawberry\relocation.pl.bat
c:\strawberry\update_env.pl.bat

Устанавливаем mod_perl для Apache
Качаем mod_perl. В архиве две папки – с apache и perl. Распаковываем их содержимое с заменой файлов соответственно в папки, где у нас установлены Apache и Perl.
Перезапускаем службу Apache.
Устанавливаем MySQL Server
Качаем и запускаем mysql-5.5.43-winx64.msi. Установка без особенностей.
После завершения установки запускается Мастер Настройки.

Выбираем стандартную конфигурацию.

Задаем название для службы.

Устанавливаем пароль root.

После завершения установки правим файл my.ini.

Для большей производительности в файле c:\Program Files\MySQL\MySQL Server 5.5\my.ini установим значение параметра
query_cache_size=32M
Перезапускаем службу MySQL.
Устанавливаем OTRS
Качаем zip-архив с последней версией OTRS (на момент написания статьи версия 4-0-8) и распаковываем в папку c:\otrs\
Почти все готово.
Устанавливаем необходимые perl-пакеты
Из командной строки из папки c:\otrs\bin запускаем скрипт
perl otrs.CheckModules.pl

Устанавливаем необходимые пакеты. Среди них есть как обязательные (required), так и необязательные (optional). Установим все, кроме Encode::HanExtra.
cpan Crypt::Eksblowfish cpan GD::Text cpan GD::Graph cpan Mail::IMAPClient cpan Net::LDAP cpan PDF::API2
Также мы получаем одну ошибку на пакет DBD::Oracle.

Внутренний перфекционист требует устранения этой ошибки, хоть в данном примере и не используется БД Oracle. Oci.dll – библиотека клиента Oracle. Качаем клиент, устанавливать его не нужно, просто забираем из архива библиотеку Oci.dll и кладем ее в c:\Windows\System32\.
Теперь появляется сообщение о недостающей библиотеке MSVCR100.dll.

Устанавливаем Visual C++ 2010 SP1 Redistributable Package (x86).
Запускаем скрипт еще раз
perl otrs.CheckModules.pl

Все необходимые модули установлены.
Настраиваем OTRS
Вся настройка заключается в изменении пути установки OTRS в конфигурационных файлах.
c:\otrs\scripts\apache2-httpd.include.conf
| Меняем это | … на это | 
| ScriptAlias /otrs/ “/opt/otrs/bin/cgi-bin/” | ScriptAlias /otrs/ “c:/otrs/bin/cgi-bin/” | 
| Alias /otrs-web/ “/opt/otrs/var/httpd/htdocs/” | Alias /otrs-web/ “c:/otrs/var/httpd/htdocs/” | 
| Perlrequire /opt/otrs/scripts/apache2-perl-startup.pl | Perlrequire c:/otrs/scripts/apache2-perl-startup.pl | 
| <Directory “/opt/otrs/bin/cgi-bin/”> | <Directory “c:/otrs/bin/cgi-bin/”> | 
| <Directory “/opt/otrs/var/httpd/htdocs/”> | <Directory “c:/otrs/var/httpd/htdocs/”> | 
| <Directory “/opt/otrs/var/httpd/htdocs/skins/*/*/css-cache”> | <Directory “c:/otrs/var/httpd/htdocs/skins/*/*/css-cache”> | 
| <Directory “/opt/otrs/var/httpd/htdocs/js/js-cache”> | <Directory “c:/otrs/var/httpd/htdocs/js/js-cache”> | 
Проще всего сделать поиск/замену для “/opt” на “с:”
c:\otrs\scripts\apache2-perl-startup.pl
| Меняем это | … на это | 
| use lib “/opt/otrs/”; | use lib “c:/otrs/”; | 
| use lib “/opt/otrs/Kernel/cpan-lib”; | use lib “c:/otrs/Kernel/cpan-lib”; | 
| use lib “/opt/otrs/Custom”; | use lib “c:/otrs/Custom”; | 
c:\otrs\Kernel\Config.pm
Переименовываем файл c:\otrs\Kernel\Config.pm.dist в c:\otrs\Kernel\Config.pm. В текстовом редакторе
| Меняем это | … на это | 
| $Self->{Home} = ‘/opt/otrs'; | $Self->{Home} = ‘c:/otrs'; | 
Для ведения логов добавим следующие строки:
$Self->{'LogModule'} = 'Kernel::System::Log::File';
$Self->{'LogModule::LogFile'} = "$Self->{Home}/var/log/otrs.log";
Настраиваем Apache
В папке c:\Apache2\conf\ редактируем файл httpd.conf, добавляем следующие строки:
# указываем апачу где у нас установлен перл
LoadFile “c:/strawberry/perl/bin/perl520.dll”
# load mod_perl
LoadModule perl_module modules/mod_perl.so
# Указываем, куда установлена OTRS
Include “c:/otrs/scripts/apache2-httpd.include.conf”
Убедимся, что с синтаксисом все хорошо. В командной строке из папки c:\Apache2\bin выполняем
httpd –t

Перезапускаем службу Apache.
Если появилась такая ошибка:

Нужно проверить, во всех ли конфигах мы изменили путь инсталляции при настройке OTRS.
Запускаем web-установку
В адресной строке запускаем http://localhost/otrs/installer.pl
Принимаем лицензионное соглашение, выбираем тип базы данных MySQL, вводим пароль от учетной записи root.
При нажатии кнопки проверки настроек БД получаем ошибку. OTRS просит увеличить значение параметра max_allowed_packet.
Добавляем в файл c:\Program Files\MySQL\MySQL Server 5.5\my.ini строку
max_allowed_packet = 20M
Перезапускаем службу MySQL и снова проверяем БД.

Получаем уже другое сообщение.
Параметр innodb_log_file_size отвечает за размер логов MySQL. Останавливаем службу MySQL. В данной версии MySQL логи находятся в папке c:\ProgramData\MySQL\MySQL Server 5.5\data\

Удаляем файлы ib_logfile0 и ib_logfile1. В файле my.ini устанавливаем значение параметра
innodb_log_file_size = 512М
Запускаем службу MySQL. Видим, что файлы ib_logfile0 и ib_logfile1 стали нужного размера.
Вновь нажимаем на кнопку проверки БД. Все получилось. OTRS создал новую учетную запись для новой базы данных OTRS и сгенерировал пароль.

На Шаге 3 предлагается настроить систему и почту. Это можно сделать в любой момент.
Наконец, на Шаге 4 нам генерируется пароль для пользователя root@localhost. Заходим под этой учетной записью.

Настройка планировщика
При входе под агентом мы видим сообщение, что планировщик не запущен. Имеется ввиду внутренняя служба OTRS.
В командной строке выполняем скрипт
c:\otrs\bin\otrs.Scheduler4winInstaller.pl -a install

Затем запускаем службу. Обновляем страницу, видим, что сообщение исчезло, а в оснастке служб появилась новая – OTRS Scheduler.
Теперь нужно настроить работу собственно планировщика. Можно использовать либо Планировщик заданий Windows, либо CRON.
Качаем CRONw и распаковываем в папку c:\cronw. Для корректной работы CRONw нам понадобится установить несколько модулей перл.
В командной строке выполняем:
cpan Date::Manip cpan Log::Dispatch cpan Log::Dispatch::FileRotate
Все задания в CRONw хранятся в специальном файле crontab. Его можно создать, запустив C:/otrs/bin/otrs.Cron4Win32.pl, предварительно его отредактировав следующим образом:
my $PerlExe = «c:/strawberry/perl/bin/perl.exe»;
my $CronTabFile = «c:/cronw/crontab.txt»;
my $OTRSHome = «c:/otrs»;

Запустим скрипт из командной строки:
perl c:\otrs\bin\otrs.Cron4Win32.pl
Скрипт отработал, в папке c:\CRONw\ появился файл crontab.txt.
Установим CRON в качестве службы Windows. В командной строке запускаем скрипт
perl cronHelper.pl –install

Служба установлена. Запускаем ее.
В папке c:/otrs/var/cron/ есть несколько стандартных заданий. По сути данные задания запускают perl-скрипты. Запустим планировщик заданий, меню Действия – Создать задачу.
Откроем в папке c:/otrs/var/cron/ первый файл cache.dist
# delete expired cache weekly (Sunday mornings)
20 0 * * 0 $HOME/bin/otrs.DeleteCache.pl --expired >> /dev/null
30 0 * * 0 $HOME/bin/otrs.LoaderCache.pl -o delete >> /dev/null
Дадим задаче имя — OTRS Weekly. Очистка кэша. Настроим выполнение задачи вне зависимости от регистрации пользователя и с наивысшими правами.

Переходим на вкладку Триггеры, нажимаем на кнопку Создать. Указываем расписание такое же, как нам предлагает OTRS.

Переходим на вкладку Действия, нажимаем кнопку Создать. Действие – Запуск программы. В качестве программы указываем путь до perl.exe, в качестве аргумента – требуемый скрипт с параметрами.

По аналогии создаем Действие для второго скрипта.
Повторяем операцию для всех нужных нам задач. Запускаем каждую задачу вручную, чтобы убедиться, что она выполняется.
На этом все, OTRS готова для дальнейшей настройки.
Если интересно, в будущем будут опубликованы руководства по настройке авторизации через Active Directory и SSO-аутентификация.
Комментарии (19)
 - dnbdrive19.05.2015 07:47- В свое время уломал руководство на виртуалку с Linux, в итоге все прекрасно работает. 
 Но мануал будет полезен для того, чтобы развернуть «тестово» 4-ю версию…
 А то боевая у нас 3.3 и нужно понять целесообразность обновления… - Hesed19.05.2015 08:46- Мы пока тестируем 4-ю версию. Собственно процесс обновления по мануалу прошёл без проблем. Виртуализация облегчает задачу, в случае чего легко вернуться к стабильному состоянию. 
 Субъективно улучшилось быстродействие, особенно для больших цепочек. Появился поиск по аттачам, что зачастую требовалось. Добавились и расширились возможности по автоматизации и фильтрации (обилие возможностей может поначалу запутать, ибо интерфейс ещё более загружен сейчас). Из минусов — довольно часто выходят патчи (Patch Levels), которые пачками фиксят баги, местами довольно неприятные.
 
 - zhavoronok19.05.2015 08:14+2- Тоже используем. Напишите про настройку авторизации через AD, будет очень интересно и думаю, что полезно многим. 
 - Ivan_8319.05.2015 08:29+1- «Но как быть, если нет опыта работы и администрирования Linux?» 
 — Поставить линукс и приобрести опыт
 — Нанять специалиста
 
 И охота было так извращаться, когда накатить «убунту сервер» ума не надо и занимает минут 10 с распитием чая.
 Прекрасно живёт в виртуалбоксе. - Botkin19.05.2015 12:48- Украл комментарий. 
 Инструмент под задачи надо выбирать, а не задачи под инструмент
 
 - Realpanter19.05.2015 10:15- Я использую OTRS уже года два. 
 Изначально тоже стоял на Windows, однако, через некоторое время после начала эксплуатации, начал плодить процессы perl по непонятным причинам. В результате перешли на linux, больше проблем, кроме однократной миграции с 3 на 4 не было.
 - WondeRu19.05.2015 12:03- Количество шагов можно было сократить, установив XAMP.  - supersuperoleg Автор19.05.2015 12:19- У XAMP нет mod_perl для апача, сам perl в нем урезанный (необходимые otrs модули не удастся установить), а существующие mod_perl не поддерживают версию апача 2.4.*. 
 Но вообще, конечно, для всего есть свои костыли, и XAMP можно приспособить для OTRS.
 
 - mrMendoza19.05.2015 18:07- Для начала непло. 
 
 - Если интересно, в будущем будут опубликованы руководства по настройке авторизации через Active Directory и SSO-аутентификация. Это будет крайне полезно, особенно с SSO, ну и конечно же с разделением пользователей по группам.
 - amaranth03.06.2015 09:08- Из nix* какая ОС более предпочтительна? Debian, Ubuntu или RHEL?  - Hesed04.06.2015 11:26- Исключительно дело вкуса. На нашем продакшене CentOS/RHEL, по заказу развёртывал на Ubuntu. Ни там, ни там проблем не возникло ни с установкой, ни с обновлениями.  - amaranth04.06.2015 14:59- Ясно. Для тестов выбрал голый Debian, без x-window. Попробую все запустить. А ITSM прикрутить сложно?  - Hesed05.06.2015 09:38- Прикрутить несложно — всё реализовано через пакеты и репозитории. Есть документация на русском. Сложнее вписать работу с ITSM в свои бизнес-процессы и заставить сотрудников пользоваться системой на всю катушку, и этого в документации не найти :)  - Sergey-S-Kovalev10.06.2015 08:22+1- Самая первая ошибка внедрения ITSM, ну и как следствие всего ITIL — менять бизнес процессы под «требования». 
 ITIL отнюдь не требует — он рекомендует, и только там где методику можно натянуть на процесс. Если оно не натягивается, то применять его не следует, поскольку процесс не дорос и не готов.
 
 Так же если ИТ подразделение не заинтересовано в прозрачности своей работы ITSM не внедрится. В итоге на все воля руководителя по ИТ.
 
 
 
 
 
           
 
Sergey-S-Kovalev
Отличный хэлпдеск, может потребовать немного допиливания, но в общем, на фоне бесплатных конкурентов весьма хорош.
Sergey-S-Kovalev
Впрочем, тем кому не хочется извращений :) настоятельно рекомендую ManageEngine Service Desk.
Бесплатно до 100 одновременно работающих специалистов после ни к чему не обязывающей регистрации.