Chapter 2. Установка
В этой главе описывается установка и базовая конфигурация главного OTRS-фреймворка. Здесь вы найдете информацию об установке OTRS из исходных кодов или из бинарных пакетов, например RPM.
В этой главе рассматриваются такие вопросы как: конфигурация веб-сервера и сервера базы данных, интефейса между OTRS и базой данных, установка дополнительных Perl-модулей, установка соответствующих прав доступа для OTRS, настройка планировщика задач cron jobs для OTRS и основных параметров в конфигурационных файлах.
Следуйте подробным шагам этой главы чтобы установить OTRS на своем сервере. Потом можно использовать его веб-интерфейс чтобы войти в систему и производить администрирование.
The Simple Way — Installation of Pre-Built Packages
If available for your platform you should use pre-built packages to install OTRS, since it is the simplest and most convenient method. You can find them in the download area at www.otrs.com. The following sections describe the installation of OTRS with a pre-built or binary package on SUSE and Red Hat systems. Only if you are unable to use the pre-built packages for some reason should you follow the manual process.
Установка из rpm-пакетов на сервер под управлением Suse Linux
This section describes the installation of our RPM package on a SUSE Linux server.
Подготовка базы данных для OTRS
You can use OTRS using different database back-ends: MySQL , PostgreSQL or Oracle . The most popular database to deploy OTRS on is MySQL. This chapter shows the steps you need to take to configure MySQL on a SUSE-based server. Of course you can install the database on a dedicated database server if needed for scalability or other purposes.
Если вы следуете описанному в этой главе на openSUSE 12.3 и еще не установили MySQL но вместо нее можно установить MariaDB , известный форк/ветку MySQL. Проблем не будет, все будет работать нормально (даже немного лучше в некоторых аспектах).
Установите MySQL с использованием следующей команды с правами пользователя root:
This will install MySQL with the default options on your system. You’ll need to change the defaults in order to make it suitable for OTRS. With a text editor open the file /etc/my.cnf and add following lines under the [mysqld] section:
Please note that OTRS requires utf8 as database storage encoding.
Now execute systemctl restart mysql.service to re-start the database server and activate these changes. Then run /usr/bin/mysql_secure_installation and follow the on-screen instructions to set a database root password, remove anonymous access and remove the test database. Lastly, run systemctl enable mysql.service in order to make sure MySQL is automatically started at server startup time.
Установка OTRS
Install OTRS with via the command line using zypper . This will also pull in some dependencies such as the Apache web server and some Perl modules. Make sure you copied the OTRS RPM file to the current directory.
Now restart Apache with the command systemctl restart apache2.service to load the configuration changes for OTRS.
Установка дополнительных perl модулей
OTRS needs more modules than can be installed via the package manager per default. You can post-install them manually. Running the otrs.CheckModules.pl script located at /opt/otrs/bin/ will let you know which modules are missing, and must or can be installed. Optional modules may include those needed for communication with MDAs via IMAP(S) or gernerating PDF output.
On SLES you shoud add an external repository in order to get missing modules. Choose the repository needed for your OS version from here: http://download.opensuse.org/repositories/devel:/languages:/perl/ . As an example, the repository for SLES 11 SP 3 would be added like this:
В ОС openSUSE 12.3, внешний репозиторий требуется только для модуля Mail::IMAPClient, который необходим в случае, если вы забираете почту с сервера IMAP с TLS. Соответствующая строка будет выглядеть так:
В первый раз, при использовании zypper после добавления строки с указанием репозитария, вас попросят ввести его ключ. Теперь, вы можете установить пропущенные модули, как показано ниже.
Следующим шагом является настройка OTRS с помощью веб — установщика, как описано в в этом разделе.
Now you can start the OTRS daemon and activate corresponding watchdog cron job (this must be done by the otrs user):
That’s it, congratulations!
Установка OTRS в операционной системе Red Hat Enterprise Linux или CentOS
This section describes the installation of our RPM package on a Red Hat Enterprise Linux (RHEL) or CentOS server.
Preparation: Disable SELinux
If your system uses SELinux, you should disable it, otherwise OTRS will not work correctly.
Here’s how to disable SELinux for RHEL/CentOS/Fedora:
Configure SELINUX=disabled in the /etc/selinux/config file:
Reboot your system. After reboot, confirm that the getenforce command returns Disabled :
Подготовка базы данных для OTRS
You can use OTRS using different database back-ends: MySQL , PostgreSQL or Oracle . The most popular database to deploy OTRS on is MySQL. This chapter shows the steps you need to take to configure MySQL on a RHEL-based server. Of course you can install the database on a dedicated database server if needed for scalability or other purposes.
Install MySQL (or MariaDB) by executing the following command as root:
This will install MySQL with the default options on your system. You’ll need to change the defaults in order to make it suitable for OTRS. With a text editor create a new file /etc/my.cnf.d/zotrs.cnf with the following content:
Now execute systemctl start mariadb to re-start the database server and activate these changes. Then run /usr/bin/mysql_secure_installation and follow the on-screen instructions to set a database root password, remove anonymous access and remove the test database.
Please note that OTRS requires utf8 as database storage encoding.
Установка OTRS
Install OTRS with via the command line using yum . This will also pull in some dependencies such as the Apache web server and some Perl modules. Make sure you copied the OTRS RPM file to the current directory.
Now restart Apache with the command systemctl restart httpd.service to load the configuration changes for OTRS.
Установка дополнительных perl модулей
OTRS требуются некоторые дополнительные модули, кроме тех, что устанавливаются с помощью RPM. Вы можете доустановить их вручную. Выяснить, какие дополнительные модули требуются, можно с помощью скрипта bin/otrs.CheckModules.pl размещенного в каталоге /opt/otrs . Некоторые модули требуются только в случае включения дополнительных опций, например для взаимодействия с серверами IMAP(S) или вывода в формате PDF. На среверах с Red Hat или CentOS мы рекомендуем устанавливать эти модули из репозитория EPEL, который поддерживается проектом Fedora и производит высококачественные пакеты для RHEL и его ответвлений. Более подробно см. на EPEL web сайт.
If you’re on RHEL 7 or CentOS 7, you can get the latest package for EPEL from this site. You can add this repository to yum it in one go by copying the RPM URL you find on this page and executing this command:
В первый раз, при использовании yum после добавления строки с указанием репозитария, вас попросят ввести его ключ. Теперь, вы можете установить пропущенные модули, как показано ниже.
Следующим шагом является настройка OTRS с помощью веб — установщика, как описано в в этом разделе.
Now you can start the OTRS daemon and activate corresponding watchdog cron job (this must be done by the otrs user):
That’s it, congratulations!
Установка драйвера базы данных Oracle на Red Hat / CentOS
Для подключения СУБД Oracle к OTRS необходимо скомпилировать и установить DBD::Oracle драйвер для базы данных. Это немного сложнее чем установка других пакетов, т.к. Oracle является проприетарной СУБД и, так же как ни Red Hat ни CentOS, не разрешает публикацию драйверов в своих RPM репозиториях.
Прежде всего необходимо установить gcc , make и CPAN , после чего можно приступить к компиляции и установке драйвера. Ниже приведена команда для CentOS; для других версий она может выглядеть несколько иначе.
Следующим шагом является получение и установка клиента базы данных. Для этого надо зарегистрироваться и получить свободный аккаунт на сайте Oracle. Вы можете загрузить драйверы с этой страницы: http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html Выберите версию для Linux x86 или x86-64, в зависимости от вашей системы. Вы можете узнать это с помощью команды uname -i . Это будет ‘x86_64’ для x86-64 или ‘i386’ для x86. Загрузите пакеты ‘Instant Client Package — Basic’, ‘Instant Client Package — SQL*Plus’, и ‘Instant Client Package — SDK’. Сохраните их себе на диск. Теперь, от имени пользователя root вы можете установить пакеты с помощью следующей команды:
После этого нужно задать значения двум переменным окружения и скомпилировать DBD::Oracle драйвер. Еще раз напомним, что выполнять это необходимо от имени пользователя root. Эти шаги изложены ниже. Обратите внимание, что для краткости некоторые строки, выдаваемые командой были удалены.
Now you should edit the file Kernel/Config.pm to provide ORACLE_HOME. The next step is to configure OTRS using the web installer, as described in this section.
Please note that OTRS requires utf8 as database storage encoding.
OTRS 4.0.10. Ставим на Ubuntu + AD + Kerberos + SSO (Часть вторая)
Продолжаю повествование о том, как собственно установить сего зверя на Ubuntu и настроить прозрачную доменную авторизацию, плюс о том, как прикрутить некоторые приятные плюшки, доступные в бесплатной версии OTRS.
6. Установка и настройка OTRS
Ну вот, система полностью подготовлена, даже более чем и мы с чистой совестью и легким сердцем приступаем к установке непосредственно OTRS.
6.1. Суть предлагаемого метода и необходимые пакеты
Ставить мы будем последнюю стабильную версию, на данный момент это 4.0.10, на самом деле это не существенно, потому как мы изначально пошли канонически правильным путем и не стали использовать всякие прокладки и костыли типа адамтеров NTLM, SSPI и прочего, а подняли полноценную Kerberos аутентификацию. А за неё в OTRS отвечает модуль HTTPBasicAuth, который не претерпел существенных изменений, поэтому описываемый способ будет работать на всех версиях системы начиная как минимум с 3.1.1.
В чем собственно суть способа? А вся суть заключается в том, что OTRS вообщем то и не проводит никакой авторизации и аутентификации пользователя, а просто берёт имя залогиневшегося пользователя из переменной окружения $_ENV[‘Remote_User’] ищет его в своей базе и если находит, то открывает для него интерфейс Кустомера в залогиненом виде. То есть вся нагрузка по верификации пользователя ложится на плечи Apache, который механизмом Kerberos аутентифицирует пользователя и если ему это удалось, то загоняет его логин в переменную окружения. Откуда его и подхватывает OTRS, считая, что если там что-то есть, то аутентификация уже прошла успешно. Итак, приступим.
Отличная статья по этому поводу вот тут. Очень подробно описан процесс установки.
Всё, что касается доменной авторизации и сквозной аутентификации, собрано с миру по нитке и выработано методом проб и ошибок, так что ссылок никаких дать не могу.
Вот перечень пакетов, которые потребуются нам на этом этапе:
- libapache2-mod-perl2
- libtemplate-perl
- libarchive-zip-perl
- libjson-xs-perl
- libmail-imapclient-perl
- libdbd-mysql-perl
- libnet-dns-perl
- libnet-ldap-perl
- libio-socket-ssl-perl
- libpdf-api2-perl
- libsoap-lite-perl
- libgd-text-perl
- libgd-graph-perl
- libapache-dbi-perl
- libyaml-libyaml-perl
- mysql-server
- wget
Большинство из них уже стоят в системе или мы их уже поставили, но что-бы не перебирать каждый, просто дадим команду поставить все, те что уже есть просто будут пропущенны менеджером пакетов и всё. Так что исполняем
6.2. Ставим OTRS
Как уже сказано выше ставить мы будет версию 4.0.10, последнюю на момент написания статьи. Качаем сам OTRS:
Перемещаем распакованный OTRS папку /opt:
И создаем симлинк на него в этой же папке:
Проверяем все ли модули мы поставили:
Если нужны какие то дополнительные модули ставим (в выводе предыдущей команды напротив каждого модуля есть подсказка как его установить, если его нет). Заводим пользователя для OTRS:
И включаем его в группу www-data:
Имейте ввиду: наша машина включена в домен и winbind биндит всех пользователей в локальную базу пользователей, поэтому надо проследить, что бы в домене не было пользователя с логином «otrs». Если он есть — удаляем его и перезагружаем линукс-машину.
Создаем дефолтные конфиги для OTRS:
И настраиваем права свеже созданному пользователю:
Осталось создать vhost Апача для OTRS и можно конфигурировать систему:
Включаем vhost OTRS:
И перечитываем конфиги Apache:
Всё. Установка закончена, теперь можем занятся конфигурацией OTRS.
6.3. Начальное конфигурирование системы OTRS. Интеграция с LDAP (в нашем случае AD)
Начальное конфигурирование системы происходит через веб-интерфейс. Заходим по адресу helpdesk/otrs/installer.pl, видим мастер установки OTRS:
Жмем далее и видим лицензионное соглашение, внимаааательно его читаем и жмем «принят условия».
На третьем этапе надо выбрать используемую базу данных, в нашем случае база MySQL, так что жмем далее. Тут уже поинтереснее, надо ввести логин того самого пользователя MySQL root@localhost, этот пароль мы создавали на шаге 6, когда ставили Apache и MySQL сервер.
OTRS попробует подключиться к серверу баз данных (localhost) и если всё нормально — создаст для себя базу с именем otrs и пользователем otrs, а так же с очень хитрым паролем, его мы тоже запоминаем куда ни будь в блокнотик, на всякий случай.
Настраиваем почту. На выходе OTRS сообщит пароль дефолтного пользователя root@localhost, запоминаем его пароль.
Переходим по ссылке «главная страница» и видим приглашения залогиниться, вот сюда-то и вводим только записанные логин и пароль. По большому счёту установка OTRS уже закончена, но нам ведь этого мало и не для того мы столько возились с Kerberos, нам нужна интеграция с AD и сквозная аутентификация, поэтому идем дальше.
А дальше обращаемся к мануалу уважаемого rasa. Кое-что мы почерпнём оттуда, кое-что из интернета, и выдумаем свой путь.
Итак для начала. В домене, должен быть один пользователь который полностью совпадает с администратором OTRS, он у нас будет и LDAP читать и остальных админов OTRS мы через него заведём. В моём случае это пользователь otrs.admin, кстати, на период установки я давал ему права администратора домена и все манипуляции на домене, как то включение машины в домен, получение тикетов и пр. проводил от имени именно этого пользователя, после установки эти права у него можно отобрать, более того, запретить ему логиниться на машины домена, ему надо только читать информацию из LDAP, не более того.
И так, в интерфейсе Агента OTRS, переходим на вкладку «Администрирование», заходим в раздел «агенты» видим единственного агента, жмём на него и меняем его учетные данные в соответствии с данными пользователя в домене, как я уже сказал выше, в моём случае это логин otrs.admin и соответствующий ему доменный пароль, жмем «отправить» внизу страницы и пробуем выйти и зайти снова уже с новыми учетными данными.
! ВНИМАНИЕ! совпадать с данными доменного пользователя должен не только логин, но и пароль!
Теперь отключим возможность самостоятельной регистрации кустомеров. «Администрирование»-«Конфигурация системы»-(в выпадающем списке слева выбираем «Framework»)-«Frontend::Customer» на CustomerPanelCreateAccount указываем «Нет» и жмем внизу кнопку «Обновить». Тут же можно поправить название организации которое будет высвечиваться у кустомеров в CustomerHeadline. Здесь ещё куча других настроек, которые можно будет покрутить и попробовать, но это позже, сейчас нас интересует интеграция с LDAP.
Настройка интеграции OTRS с LDAP будет происходить через конфигурационный файл /opt/otrs/Kernel/Config.pm:
Находим строчку # insert your own config settings «here» # и вставляем после неё вот такой конфиг:
После этого можно сохранить файл и попробовать авторизоваться в качестве агента под доменной учёткой, которая входит в группу OTRSagents в домене.
Переходим по адресу helpdesk.domain.ru/otrs/index.pl, вводим логин и пароль доменной учётной записи состояще в группе OTRSagents. Должно всё прокатить. У вновь залогинившегося агента будет отсутствовать вкладка администрирования, включить её можно войдя под учёткой изначального админа, в моём случае это otrs.admin и раздав права доступа новому агенту.
Обратите внимание: агенты создаются в базе OTRS после первого входа.
Так же надо проверить, что OTRS подтянул из LDAP базу Кустомеров. Для этого переходим «Администрирование» — «Учётная запись клиента». Тут мы должны увидить полный перечень пользователей домена в табличном виде, логин, имя, email и т.д.
Проверяем, всё ли успешно подтянулось из домена.
Для доступа же Кустомеров потребуется ещё небольшая доработка, прежде всего потребуется включить Kerberos аутентификацию на папках со скриптами. Скрипты лежат тут /opt/otrs/bin/cgi-bin..
Для включения Kerberos потребуются манипуляции аналогичные тем, что мы проводили на шаге 7 с папкой /var/www/html/php. Открываем файл конфига виртуального хоста otrs:
И видим следующие конфигурации локейшена /otrs и директории /opt/otrs/bin/cgi-bin. Первый кусок:
На первый взгляд всё очень ясно и просто, но опять же постигнуть это шаманство с наскоку не удалось. В двух словах тут подключаются определенные директивы в зависимости от наличия или отсутствия определенных модулей Apache или же от их версий. Всё это разработчики нагородили потому как им заранее не извество в каких условиях будет работать система, с какими пакетами и какими версиями этих пакетов. Но нам-то с вами уже абсолютно точно известно какие пакеты и каких версий стоят у нас в системе. Поэтому просто нещадно вырезаем всё лишнее и приводи эти два блока к следующему виду:
После чего перечитаем конфиги Апача и перезапустим его:
После этих манипуляций, при попытке доступа к скриптам OTRS Apache попытается аутентифицировать пользователя и если успешно — загонит его логин в переменную $_ENV[‘REMOTE_USER’], откуда модуль аутентификации OTRS HTTPBasicAuth, считает имя пользователя, прошерстит свою базу и если найдет такого пользователя, то откроет страницу Кустомера в залогинененом виде.
И всё вроде бы ничего, вот только страница Кустомера, если мы сейча попытаемся на неё зайти, скажет нам совсем странную вешь, «Авторизация прошла успешно, но не удалось найти пользователя в базе».
Начинаем отладку. Для этого скачиваем пару скриптов на перле:
whoami.pl
test.pl
Забрасываем их к остальным скриптам OTRS в папку /opt/otrs/bin/cgi-bin, выставляем им права и владельца аналогичного тем, что там уже лежат и пробуем их открыть в браузере.
Первый скрипт просто проверяет наличие переменной $_ENV[‘REMOTE_USER’] и если в ней что-то есть, то выводит сообщение о том, что мы кажется загонились в домене NT c такой-то учёткой, если так и есть, и он показывает нам правильную учётку, то всё ок.
Второй скрипт показывает нам какую строку получает OTRS в качестве логина пользователя. И вот тут-то и видим, что OTRS получает что-то типа username@DOMAIN.RU, но мы то знаем, что в качестве логина у нас используется sAMAccountName, то есть просто username, без домена, да и в списке Клиентов на предыдущем этапе мы так же видели, что логины у нас без имени домена.
Вот где собака порылась, поэтому то и происходит такая ситуация, Apache отработал, авторизация прошла успешно и всё ок, а вот OTRS найти пользователя в своей базе не смог. Получается что нам надо как-то выкинуть из имени пользователя домен перед поиском его в базе OTRS.
Благо поправить это совсем просто, хотя пока я разобрался как, ушло прилично сил и времени.
Для этого опять идем в интерфейс Агента, «Администрирование» — «Конфигурация системы» — «Framework» — «Frontend::Customer::Auth», находим параметр Customer::AuthModule::HTTPBasicAuth::ReplaceRegExp, включаем его, а в поле для ввода оставляем то что там есть, для тех кто стёр значение по умолчанию, там должна быть вот такая регулярка
^(.+?)@.+?$
К сожалению регулярные выражения на Perle остаются для меня недоступной магией и запредельным шаманством, поэтому не могу пояснить как оно работает (буду крайне признателен, если кто ни будь даст пояснения в комментах, и я с удовольствием добавлю его в статью) Но в двух словах, оно отбрасывает от имени пользователя всё что после символа «@» включительно.
Жмём «отправить» внизу страницы и топаем по адресу интерфейса Кустомера: helpdesk.domain.ru/otrs/customer.pl
Всё должно работать.
По поводу магии регулярного выражения:
^(.+?)@.+?$
Всё оказалось очень просто, как мне пояснили «по сравнению с магией регулярок это так, детский спиритический сеанс» (с).
символ ^ — начало обрабатываемой строки
символ $ — конец обрабатываемой строки
Символы () — показывают что в результате обработки нужно оставить то, что находится между ними
? — любой символ
.+ — рекурсивная конкатенация (в результате выражение ‘.+?’ — дословно означает любая строка)
Символ @ — не является специсмволом, поэтому обрабатывается как часть строки (удивительно, никогда бы не подумал, всегда считал что он как раз таки спецсимвол и его нужно экранировать, как раз остутствие такого экранирования и ввело меня в заблуждение и помешало самому разобраться в этом выражении)
И в результате получаем, что регулярка разбивает полученную строку на две части «всё что до символа @» и «всё что после символа @» и возвращает первую часть (так как она в скобочках).