Установка OCS Inventory на CentOS 7

Установка OCS Inventory на CentOS 7 довольно простая, если использовать собственный репозиторий OCS Inventory NG. Если Вы не в курсе, что это, то коротко скажу: OCS Inventory — это система инвентаризации компьютеров по сети, установленного на них оборудования и программного обеспечения. OCS Inventory использует программу агента, которая устанавливается на инвентаризируемом компьютере и передает информацию на сервер.
Итак, у нас есть стандартная чистая установка CentOS 7 Minimal. Пройдемся по всем шагам установки и отметим возможные проблемы, а также их решения.
Начнём, как обычно, с установки нужных репозиториев и вспомогательных пакетов. Программа скачивания wget, ntp для синхронизации точного времени и EPEL репозиторий.
yum -y install wget ntp epel-release
Скачаем официальный репозиторий с сайта OCS Inventory NG.
wget https://rpm.ocsinventory-ng.org/ocsinventory-release-latest.el7.ocs.noarch.rpm
И установим его.
yum install ocsinventory-release-latest.el7.ocs.noarch.rpm
Проверим, что нужные нам репозитории подключены
yum repolist

Обновим всю систему
yum -y update
Если будете использовать iptables, то установите его сразу, так как в установке CentOS 7 Minimal его тоже нет.
yum -y install iptables iptables-services

Пришло время установить OCS Inventory
yum install ocsinventory
Подтянутся еще примерно 120 пакетов зависимостей, среди которых нужные нам Apache, MariaDB, PHP и другие. У меня установились 118 пакетов.

Теперь настроим нужные для работы OCS Inventory сервисы. Запустим iptables и разрешим соединение для Apache и ntp.
systemctl enable iptables
systemctl start iptables
iptables -nvL --line-number

Вставим 5-ой и 6-ой строками разрешающие правила в цепочку INPUT
iptables -I INPUT 5 -m state --state NEW -p tcp --dport 80 -j ACCEPT
iptables -I INPUT 6 -m state --state NEW -p udp --dport 123 -j ACCEPT
iptables-save > /etc/sysconfig/iptables
Запустим ntp для синхронизации точного времени.
systemctl enable ntpd
systemctl start ntpd
Запускаем MariaDB
systemctl enable mariadb
systemctl start mariadb
Пройдемся по первоначальной настройке
mysql_secure_installation
Так как это первый запуск, пароль пустой, жмем Enter

Установим собственный пароль для пользователя root базы данных (не путать с пользователем root самой системы)

На все вопросы отвечаем «у»

В следующей команде иcпользуем пАрОлЬ пользователя root, установленный ранее. Войдем в консоль MariaDB.
mysql -uroot -pпАрОлЬ

CREATE DATABASE ocsweb;
GRANT ALL ON ocsweb.* to 'ocs'@'localhost' identified by 'ocs_pass';
FLUSH PRIVILEGES;
quit
Итак, у нас созданы база данных ocsweb и юзер ocs с паролем ocs_pass. Не забудьте заменить ocs_pass во второй команде в консоли MariaDB на нормальный пароль! Теперь изменяем значения переменных в конфигурационном файле /etc/httpd/conf.d/ocsinventory-server.conf в секции Master Database settings

Еще раз напомню, не забудьте заменить ocs_pass на нормальный пароль!
В файле /etc/httpd/conf.d/ocsinventory-reports.conf можно изменить максимальный размер, загружаемого на сервер, файла-отчета.
php_value post_max_size         301m
php_value upload_max_filesize   300m
Для разных версий PHP есть свои секции.
<IfModule mod_php5.c>
<IfModule mod_php7.c>
Изменяйте параметры в соответствии с Вашей версией PHP. По умолчанию в CentOS 7 Minimal версия PHP 5.4.16. ( php -v).
Далее редактируем файл /etc/php.ini для установки правильной временной зоны.
date.timezone = Europe/Moscow
Здесь же можно поменять и переменные
post_max_size = 301M
upload_max_filesize = 300M,
так как работоспособность параметров в файле ocsinventory-reports.conf в различных дистрибутивах не гарантируется, о чём предупреждается там же.
Теперь запустим Apache
systemctl enable httpd
systemctl start httpd
Если Вы делали апгрейд или переустановку сервера OCS Inventory, то самое время восстановить базу данных. Вы же делаете бекапы? 🙂
mysql -uroot -p ocsweb < dump_you_backup_file.sql
Итак, основная часть установки выполнена. Можно набрать в адресной строке браузера http://localhost/ocsreports/ либо http://Ваш IP-адрес/ocsreports/, или, если есть, http://Ваш домен/ocsreports/.
Установка OCS Inventory на CentOS 7
Вводим наши параметры: юзер ocs с паролем ocs_pass и имя базы данных ocsweb. Не обращаем внимание на второе красное предупреждение, жмем «Send».
Установка OCS Inventory на CentOS 7
Установка закончена. Опять не обращаем внимание на предупреждение. Такого файла в версии 2.4.х не существует. Конфигурирование осуществляется через /etc/httpd/conf.d/ocsinventory-server.conf. Как и было описано выше. Теперь в целях безопасности нужно удалить файл /usr/share/ocsinventory-reports/ocsreports/install.php или переименовать его. Теперь можно пройти по ссылке, используя логин/пароль — admin/admin и первым делом изменить пароль администратора! Если Вы восстанавливали базу данных, то используйте логин/пароль из Вашей старой установки, он перенесся вместе с общей базой данных.
Установка OCS Inventory на CentOS 7
Кстати, обновлять OCS Inventory можно также, как и любой пакет в CentOS yum update ocsinventory

Теперь поговорим о подводных камнях, которые в основном возникают при обновлении и переустановке сервера OCS Inventory. Так как я писал статью в процессе новой установки с последущим восстановлением базы данных, то отмечу возникшие проблемы и пути их решения.
База данных прекрасно восстановилась, но агенты с компьютеров не обновляют информацию в базе данных о себе, даже если их запускать принудительно. Такая ошибка была обнаружена в /var/log/httpd/error_log Apache.
[Wed Apr 11 11:14:15.747069 2018] [perl:error] [pid 20619] [client 11.111.111.1:51051] Can't call method "do" on an undefined value at /usr/share/perl5/vendor_perl/Apache/Ocsinventory/Server/System.pm line 189.\n
Проблема в том, что в результате обновления конфигурационные файлы перезаписываются. Проверьте правильность обращения к базе данных в файлах /etc/httpd/conf.d/ocsinventory-server.conf и /usr/share/ocsinventory-reports/ocsreports/dbconfig.inc.php, там должны быть Ваши база данных ocsweb и юзер ocs с паролем ocs_pass, как в этом примере.

Следующую ошибку пришлось отлавливать дольше. Старые компьютеры с различными версиями агентов отлично обновляют информацию о себе, а новые — нет. При этом в /var/log/httpd/access_log Apache видим следующее:

Вроде агент открыл сеанс передачи информации серверу, но через 4 секунды завершил с ошибкой 500. Это внутренние ошибки сервера. Поскольку база данных не создавалась с нуля, а была восстановлена, то, первым делом, подозрение пало на нее. В конфигурационном файле /etc/httpd/conf.d/ocsinventory-server.conf меняем значение параметра OCS_OPT_DBI_PRINT_ERROR на 1 и перезапускаем Apache.
systemctl restart httpd
Теперь в /var/log/httpd/error_log видим следующее:
DBD::mysql::st execute failed: Unknown column 'MTU' in 'field list' at /usr/share/perl5/vendor_perl/Apache/Ocsinventory/Server/Inventory/Update.pm line 159.
Остается только создать поле MTU. Войдем в консоль MariaDB. mysql -p ocsweb, введя root пароль базы данных

ALTER TABLE `networks` ADD `MTU` VARCHAR(255) NULL DEFAULT NULL ;
FLUSH PRIVILEGES;
quit
Теперь все агенты верно обновляют информацию о своих компьтерах.

В качестве итога:
Не забывайте прописывать параметры соединения с базой данных после обновления в файлах
/etc/httpd/conf.d/ocsinventory-server.conf
/usr/share/ocsinventory-reports/ocsreports/dbconfig.inc.php.
Просматривайте логи web-сервера Apache
/var/log/httpd/access_log
/var/log/httpd/error_log,
а также лог самого сервера OCS Inventory
/var/log/ocsinventory-server/activity.log.
Также можно смотреть логи агентов инвентаризируемых компьютеров, которые располагаются для Windows 2000, XP, 2003 тут
C:\Documents and Settings\All Users\Application Data\OCS Inventory NG\Agent,
для Windows Vista, 2008, 7, 8, 10 тут
C:\ProgramData\OCS Inventory NG\Agent.
Ну и на официальном сайте OCS Inventory NG есть много разной информации, в том числе ссылки на скачивание агентов для различных операционных систем.
Удачной инвентаризации!

Установка OCS Inventory на CentOS 7

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *