OTRS 6 + Oracle client

Обсуждение вопросов и решений

Модератор: ykolesnikov

Ответить
kravit
OTRS Новобранец
Сообщения: 14
Зарегистрирован: 28 ноя 2016, 12:48

OTRS 6 + Oracle client

Сообщение kravit » 12 ноя 2018, 14:45

Всем добрый день.
Нужна помощь в связке OTRS 6 и Oracle client 11.2
Задача перевести OTRS 6 на Oracle 11g
Делал все по инструкции несколькими путями но исход один.
Подробности:
1. ставлю CentOS 7.4 minimal
2. устанавливаю дополнительные пакеты
3. устанавливаю Oracle instantclient client 11.2 с помощью rpm пакетов
4. создаю переменные среды
export ORACLE_HOME=/usr/lib/oracle/11.2/client64
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
export TNS_ADMIN=$ORACLE_HOME/network/admin
export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin
export NLS_LANG="AMERICAN_AMERICA.CL8MSWIN1251"

и записываю их в /etc/profile.d/oracle_home.sh и /etc/rc.d/rc.local
chmod u+x /usr/lib/oracle/11.2/client64/oracle_home.sh
cp /usr/lib/oracle/11.2/client64/oracle_home.sh /etc/profile.d/oracle_home.sh
echo "source /usr/lib/oracle/11.2/client64/oracle_home.sh" >> /etc/rc.d/rc.local

5. создаю tnsnames.ora и перегружаю
проверяю все переменные - все ок!
проверяю подключение с помощью sqlplus - все ок!

6. устанавливаю пакеты для OTRS 6
7. устанавливаю OTRS 6 с помощью rpm пакета - otrs-6.0.12-01.noarch.rpm
все хорошо установилось
проверяю пользователя otrs - все ок!
проверяю синтаксис и модули OTRS 6

perl -cw /opt/otrs/bin/cgi-bin/index.pl
perl -cw /opt/otrs/bin/cgi-bin/customer.pl
perl -cw /opt/otrs/bin/otrs.Console.pl

perl /opt/otrs/bin/otrs.CheckModules.pl

все модули стоят кроме DBD::Oracle

8. Устанавливаю DBD::Oracle c помощью cpan (нашел в инструкции что через perl cpan лучше всего устанавливать модули)

cpan: install DBD::Oracle
как бы пошла установка, были и warning и предупреждения и даже замечания
но после установки и перезагрузки, проверяю:

perl /opt/otrs/bin/otrs.CheckModules.pl

опа!! все модули стоят - но опа!! OTRS 6 не работает!?

когда запускаю в браузере installer.pl и дохожу до пункта подключения к БД то ругается что не стоит модуль DBD::Oracle.
Решил еще раз перегрузить
проверяю все переменные (ORACLE_HOME, LD_LIBRARY_PATH) - все ок!
проверяю подключение с помощью sqlplus - все ок!
проверяю модули perl /opt/otrs/bin/otrs.CheckModules.pl - все ок!
запускаю в браузере installer.pl и опять проблема БД.
И тогда меня осиняет проверить модули от пользователя:

su otrs -s /bin/bash -c "perl /opt/otrs/bin/otrs.CheckModules.pl"

и действительно показывает что модуль DBD::Oracle - Not installer!

Все попытки установки модуля DBD::Oracle от пользователя otrs - не успешны!!! так как не хватает привилегий
ругается "Отказано в доступе at /usr/share/perl5/ExtUtils/Install.pm line 494"
/bin/make install -- NOT OK
.........

Теперь вопрос? Как такое побороть, чтобы модуль DBD::Oracle был для всех пользователей?
Или как то по другому ставить этот модуль?

kravit
OTRS Новобранец
Сообщения: 14
Зарегистрирован: 28 ноя 2016, 12:48

Re: OTRS 6 + Oracle client

Сообщение kravit » 04 дек 2018, 18:36

В общем я так понял что никто не может мне помочь. И я попытался решить проблему сам. И после долгих тестов и проб, наконец то решилась моя проблема.
И так начнем!
Я просто опишу пункты установки Oracle client 11g и OTRS v6.
Самое главное придерживаться определенной последовательности.
Иначе не получается чтобы все работало.
1. Устанавливаем CentOS 7 minimal
При установке выполняем основные настройки:
а. Разбить диски
б. Настроить сеть
в. Задать имя хоста
г. При инсталяции задать пароль root
После перезагрузи обновляем CentOS 7 и ставим пакеты для удобства работы (установка пакетов на ваше усмотрение)
yum -y update
yum -y upgrade
yum -y install epel-release
yum -y install NetworkManager-tui net-tools traceroute dig bind-utils bash-completion logwatch
yum -y install mc kernel-devel yum-utils screen wget zip unzip telnet gcc perl ntp gdisk
yum -y install htop iftop
reboot
#Отключаем SELINUX.
с помощью mc или vi открываем фаил по пути
/etc/selinux/config
Находим строчки и меняем
SELINUX=permissive

Если нужно изменить имя сервера
hostnamectl set-hostname New_hostname
# где New_HostName — это новое имя хоста.

# так же есть команда в графике
nmtui

далее назначаем имя и отключаем ip6
с помощью mc или vi открываем фаил по пути
/etc/sysconfig/network
по умолчанию он пустой поэтому дописываем: (это необходимо для Oracle)
NETWORKING_IPV6=no # отключаем ip6
IPV6INIT=no # отключаем ip6
HOSTNAME=otrs #имя вашего хоста
2. Установка Oracle instant client на CentOS 7
Качаем Oracle instant client (обязательно минимум 3 файла-пакета)

oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm (basic - базовые файлы)
oracle-instantclient11.2-devel-11.2.0.4.0-1.x86_64.rpm (devel - ядро клиента)
oracle-instantclient11.2-sqlplus-11.2.0.4.0-1.x86_64.rpm (sqlplus)

устанавливаем командой
yum localinstall oracle* --nogpgcheck
создаем tnsnames.ora (создаем фаил create_tnsnames.sh и туда пишем, а потом выполнЯем)
#!/bin/bash
# Set up your sqlnet.ora & tnsnames.ora
V=11.2
mkdir -p /usr/lib/oracle/$V/client64/network/admin
cd /usr/lib/oracle/$V/client64/network/admin

cat - <<EOF > sqlnet.ora
# sqlnet.ora Network Configuration File
NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)
EOF

cat - <<EOF > tnsnames.ora
# TNSNAMES.ORA Network Configuration File
NAME =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = example.com)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = service.example.com)
)
)
EOF
#
далее в tnsnames.ora прописываем нужный tns к базе данных Oracle

Cоздаем переменные среды окружения Oracle и устанавливаем в атозапуск
Создаем фаил oracle_home.sh
туда пишем:
#!/bin/bash
V=11.2
cat - <<EOF > /usr/lib/oracle/$V/client64/oracle_home.sh
export ORACLE_HOME=/usr/lib/oracle/$V/client64
export LD_LIBRARY_PATH=\$ORACLE_HOME/lib
export TNS_ADMIN=\$ORACLE_HOME/network/admin
export PATH=\$PATH:\$HOME/bin:\$ORACLE_HOME/bin
# export NLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS"
# export NLS_LANG="AMERICAN_AMERICA.CL8MSWIN1251"
EOF
chmod u+x /usr/lib/oracle/$V/client64/oracle_home.sh
cp /usr/lib/oracle/$V/client64/oracle_home.sh /etc/profile.d/oracle_home.sh
echo "source /usr/lib/oracle/$V/client64/oracle_home.sh" >> /etc/rc.d/rc.local
далее выполняем файл oracle_home.sh
перегружаем
После перезагрузки проверяем переменные среды окружения Oracle
выполняем
echo $ORACLE_HOME
echo $LD_LIBRARY_PATH
echo $TNS_ADMIN
должен появится путь до Oracle и др.
далее с помощью sqlplus проверяем подключение к базе данных Oracle
sqlplus /nolog
conn otrs/otrs@tnsname
3. Создаем пользователя для OTRS (главный пункт и его нужно делать до установки OTRS)
для начала установим Apache
yum install -y httpd
Создаем пользователя otrs добавляем его в группу apache и wheel
useradd --base-dir /opt/otrs --home-dir /opt/otrs --comment 'OTRS System User' otrs
usermod -G apache,wheel otrs
Проверяем
id otrs
Пользователь должен быть в трех группах в своей в apache и wheel

4. Устанавливаем OTRS
Устанавливаем дополнительные пакеты для работы OTRS и сам OTRS
# Устанавливаем зависимости для OTRS
yum install httpd
yum install perl mod_perl perl-CPAN perl-CPANPLUS perl-LDAP perl-TimeDate perl-URI perl-core perl-libwww-perl perl-parent procmail
yum install "perl(Archive::Zip)" "perl(Crypt::SSLeay)" "perl(Date::Format)" "perl(DBI)" "perl(Digest::SHA)" "perl(IO::Socket::SSL)" "perl(LWP::UserAgent)" "perl(Net::DNS)" "perl(Net::LDAP)" "perl(Template)" "perl(URI)" "perl(XML::LibXML)" "perl(XML::LibXSLT)" "perl(XML::Parser)" "perl(DBD::mysql)" "perl(DBD::Pg)" "perl(Encode::HanExtra)" "perl(JSON::XS)" "perl(Mail::IMAPClient)" "perl(Text::CSV_XS)" "perl(YAML::XS)" "perl(Crypt::Eksblowfish::Bcrypt)" "perl(GD::Text)" "perl(GD::Graph)" "perl(PDF::API2)" "perl(DBD::ODBC)" "perl(DateTime)" "perl(Authen::NTLM)"
#Установка OTRS с помощью rpm пакета
yum install otrs-6.0.12-01.noarch.rpm
# Даем привилегии новому каталогу otrs
chown -R otrs:apache /opt/otrs
chown -R otrs:apache /opt/otrs/*
Настраиваем права доступа к файлам OTRS.
/opt/otrs/bin/otrs.SetPermissions.pl --otrs-user=otrs --web-group=apache /opt/otrs
# Проверяем все ли модули мы поставили:
perl -cw /opt/otrs/bin/cgi-bin/index.pl
perl -cw /opt/otrs/bin/cgi-bin/customer.pl
perl -cw /opt/otrs/bin/otrs.Console.pl
perl /opt/otrs/bin/otrs.CheckModules.pl
По идее должны установиться все модули кроме DBD::Oracle
устанавливаем DBD::Oracle
И тут важный момент
Установить DBD::Oracle нужно от пользователя otrs
пользователь otrs должен иметь права sudo (группа wheel)
проверяем пользователя
id otrs
должен быть в трех группах, если нет даем команду
usermod -G apache,wheel otrs
далее заходим под пользователем otrs и устанавливаем DBD::Oracle
su otrs
cpan #идет установка cpan. после установки строка будет выглядеть cpan> - это значит мы в cpan
cpan> install DBD::Oracle #установка DBD::Oracle, в самом конце должно быть make DBD::Oracle - Ok!
Так как мы в среде cpan - выходим
exit
остаемся под пользователем otrs
и проверяем все ли модули мы поставили:
perl -cw /opt/otrs/bin/cgi-bin/index.pl
perl -cw /opt/otrs/bin/cgi-bin/customer.pl
perl -cw /opt/otrs/bin/otrs.Console.pl
perl /opt/otrs/bin/otrs.CheckModules.pl
По идее должно все стоять! У меня после такой последовательности действий с первого раза все получилось!

kravit
OTRS Новобранец
Сообщения: 14
Зарегистрирован: 28 ноя 2016, 12:48

Re: OTRS 6 + Oracle client

Сообщение kravit » 07 дек 2018, 12:38

Всем добрый день.
К сожалению, вариант который я описал выше не совсем работает.
При проверке perl /opt/otrs/bin/otrs.CheckModules.pl
все модули стоят и как бы все хорошо но на деле
когда заходишь через web морду http://localhost/otrs/installer.pl
на втором шаге при указании базы данных и проверке, все равно пишет "не установлен модуль DBD::Oracle...."
И я было опустил руки, потому что для меня это была загадка :shock:
И я случайно нахожу еще один документ в котором устанавливают DBD::Oracle, не с помощью cpan, а качают модуль DBD::Oracle и ставят с помощью perl.
Рассказываю все по порядку:

По инструкции (которая выше) доходим до пункта " Установка DBD::Oracle"
находимся под root (оказывается, не надо выполнять под пользователем otrs)

скачиваем DBD::Oracle на данный момент DBD-Oracle-1.76.tar.gz - и он рабочий

Код: Выделить всё

wget https://cpan.metacpan.org/authors/id/Z/ZA/ZARQUON/DBD-Oracle-1.76.tar.gz
распаковываем
tar -xvf DBD-Oracle-1.76.tar.gz
cd DBD-Oracle-1.74
устанавливаем
perl Makefile.PL
make install
после инсталяции необходимо создать links and cache для DBD библиотек
создаем файл и прописываем строчки:
echo "/usr/lib/oracle/11.2/client64/lib" > /etc/ld.so.conf.d/oracle.conf
выполняем команду
ldconfig -v
и проверяем все ли модули мы поставили:
perl -cw /opt/otrs/bin/cgi-bin/index.pl
perl -cw /opt/otrs/bin/cgi-bin/customer.pl
perl -cw /opt/otrs/bin/otrs.Console.pl
perl /opt/otrs/bin/otrs.CheckModules.pl
И даже если проверить модули под пользователем otrs
то все модули тоже должны стоять и DBD::Oracle тоже.

Проверив несколько раз через web морду localhost/otrs/installer.pl
я убедился что этот вариант установки DBD::Oracle лучше чем через cpan.
Главное проконтролировать make install что бы не было ошибок :)

Так же можно создать сервис (systemd) для OTRS

Для этого нужно создать фаил /etc/systemd/system/otrs.service
И прописать строчки ниже
[Unit]
Description=OTRS Help Desk.
After=network.target
After=crond.service

[Service]
Type=forking
WorkingDirectory=/opt/otrs
PIDFile=/opt/otrs/service.pid
User=otrs
Group=apache
ExecStart=/opt/otrs/bin/otrs.Daemon.pl start
ExecStop=/opt/otrs/bin/otrs.Daemon.pl stop
Restart=always

[Install]
WantedBy=multi-user.target
#
перезапускаем daemon
systemctl daemon-reload
#Запускаем сервисы

systemctl enable httpd
systemctl enable otrs
systemctl start httpd
systemctl start otrs

Спасибо за внимание!

Ответить