====== GLPI ====== GLPI является системой работы с заявками и инцидентами, а также для инвентаризации компьютерного оборудования (компьютеры, программное обеспечение, принтеры и прочее), также имеет расширенные функции, такие как работа системы отслеживания почты с уведомлением и т. д. https://ru.wikipedia.org/wiki/GLPI ===== Установка ===== Показано на примере Ubuntu server 16.03 LTS + LAMP + SSH server. sudo -i # Статический IP nano /etc/network/interfaces auto eth0 iface eth0 inet static address 192.168.2.32 netmask 255.255.252.0 gateway 192.168.0.254 dns-nameservers 192.168.2.5 192.168.2.2 192.168.2.10 # Необходимые компоненты apt-get install php-ldap php-imap php-apcu php-xml php-xmlrpc php-mbstring php-curl php-gd php-cli # Скачать wget https://github.com/glpi-project/glpi/releases/download/9.2.1/glpi-9.2.1.tgz # Распаковать дистрибутив tar xzf glpi-9.2.1.tgz --strip=1 -C /var/www/html # Дать права веб-серверу chown -R www-data:www-data /var/www/html # Прописать в Апаче AllowOverride All в секции /var/www nano /etc/apache2/apache2.conf AllowOverride All # Перезапуск Апача systemctl restart apache2 # Можно ещё сделать базу заранее: mysql -u root -p -e "create database glpi"; # После этого зайти на веб-интерфейс и пройти мастер настройки # Стандартный логин и пароль - glpi # После успешной установки стереть install/install.php rm /var/www/html/install/install.php ==== Особенности обновления ==== Бывают проблемы, если обновлять старый дистрибутив сразу на самую новую версию. Лучше всего обновлять последовательно. Например версию 0.90.2 получилось обновить так: glpi-0.90.5.tar.gz -> glpi-9.1.tar.gz -> glpi-9.1.1.tgz -> glpi-9.1.2.tgz -> glpi-9.1.3.tgz -> glpi-9.1.4.tgz -> glpi-9.1.5.tgz -> glpi-9.1.6.tgz -> glpi-9.1.7.1.tgz -> glpi-9.2.1.tgz (ругнётся, что 9.1.7.1 несовместимая версия, но всё равно обновится). С плагином редактора форм та же песня - обновление было с версии 0.90-1.3: wget https://github.com/pluginsGLPI/formcreator/releases/download/2.4.0/glpi-formcreator-2.4.0.tar.bz2 tar xjf glpi-formcreator-2.4.0.tar.bz2 -C /var/www/html/plugins # после этого обновить плагин в веб-интерфейсе wget https://github.com/pluginsGLPI/formcreator/releases/download/2.5.0/glpi-formcreator-2.5.0.tar.bz2 tar xjf glpi-formcreator-2.5.0.tar.bz2 -C /var/www/html/plugins # после этого обновить плагин в веб-интерфейсе wget https://github.com/pluginsGLPI/formcreator/releases/download/2.6.0/glpi-formcreator-2.6.0.tar.bz2 tar xjf glpi-formcreator-2.6.0.tar.bz2 -C /var/www/html/plugins # после этого обновить плагин в веб-интерфейсе ===== Инвентаризация ===== ==== Fusion Inventory ==== wget https://github.com/fusioninventory/fusioninventory-for-glpi/releases/download/glpi9.2%2B1.0/glpi-fusioninventory-9.2.1.0.tar.bz2 tar xjf glpi-fusioninventory-9.2.1.0.tar.bz2 -C /var/www/html/plugins Настройки - Дополнения, установить плагин в систему Администрирование -> Организации -> Root Entity -> вкладка FusionInventory, ввести URL:\\ http://glpi === Агенты === [[https://github.com/fusioninventory/fusioninventory-agent/releases|Скачать]]\\ [[http://fusioninventory.org/documentation/agent/installation/windows/|Инструкция по установке (Windows)]]\\ [[http://fusioninventory.org/documentation/agent/installation/linux/deb.html|Инструкция по установке (Debian & Ubuntu)]] Примерный набор ключей для тихой установки на Windows: fusioninventory-agent_windows-x64_2.3.21.exe /acceptlicense /add-firewall-exception /execmode=service /no-httpd /no-ssl-check /server='http://glpi/plugins/fusioninventory' /S /runnow === Настройка Cron === Настройки -> Автоматические задания -> выделить нужные (или все) -> изменить способ выполнения на CLI Run the [[http://fusioninventory.org/documentation/fi4g/cron.html|GLPI crontab]]: crontab -u www-data -e # Добавить * * * * * /usr/bin/php /var/www/html/front/cron.php &>/dev/null # или echo '* * * * * www-data /usr/bin/php /var/www/html/front/cron.php &>/dev/null' >> /etc/crontab === Инвентаризация SNMP === Установить агента на сервер GLPI (или на ту машину, которая будет опрашивать устройства по SNMP) # Зависимости для fusioninventory-agent apt-get -y install dmidecode hwdata ucf hdparm perl libuniversal-require-perl libwww-perl libparse-edid-perl libproc-daemon-perl libproc-pid-file-perl libfile-which-perl libxml-treepp-perl libyaml-perl libnet-cups-perl libnet-ip-perl libdigest-sha-perl libsocket-getaddrinfo-perl libtext-template-perl # Зависимости для fusioninventory-agent-task-network apt-get -y install nmap libnet-snmp-perl libcrypt-des-perl libnet-nbname-perl # Скачать wget http://debian.fusioninventory.org/downloads/fusioninventory-agent_2.3.21-2_all.deb wget http://debian.fusioninventory.org/downloads/fusioninventory-agent-task-network_2.3.21-2_all.deb # Установить dpkg -i fusioninventory-agent_2.3.21-2_all.deb dpkg -i fusioninventory-agent-task-network_2.3.21-2_all.deb # Настроить путь к серверу (к плагину FusionInventory): nano /etc/fusioninventory/agent.cfg # Запустить агента: systemctl restart fusioninventory-agent # или перечитать конфигурацию: systemctl reload fusioninventory-agent Создать диапазон IP: Сеть -> Диапазоны IP адресов, затем там же - Add a SNMP authentication, добавить обе версии SNMP, v1 и v2c. Зайти в свойства агента, который будет собирать информацию по SNMP, включить у него модули "сетевое обнаружение" и "сетевая инвентаризация SNMP". Можно также включить эту функцию у всех агентов. Сделать задачу сетевого обнаружения (Задачи -> Управление задачами). Пометить активной, старт в текущее время, Интервал пробуждения агента - 5 мин. Добавить задание: модуль метода - сетевое обнаружение, в цели добавить диапазоны, созданные ранее, в исполнители - агента, который будет работать с SNMP. Сделать задачу сетевой инвентаризации (Задачи -> Управление задачами). Всё то же самое, что и в задаче обнаружения, только модуль метода - сетевая инвентаризация (SNMP). Если какие-то принтеры не импортируются, то может быть полезным выключить правило импорта Printer constraint (name), так как некоторые принтеры (например, Kyocera, Sharp, Konica Minolta) имеют пустое имя. В общих настройках имеет смысл заблокировать местоположение (в принтере зачастую нельзя по-русски написать и это сбивает то, что уже есть в GLPI) и название (если принтеры уже есть в GLPI и тогда при импорте названия могут затереться по причине, указанной выше). ==== OCS inventory ==== Здесь описана старая версия, и вообще рекомендуется использовать FusionInventory # Зависимости sudo apt-get install php-imap php-ldap make libapache-dbi-perl libxml-simple-perl libnet-ip-perl libsoap-lite-perl php-soap libphp-pclzip php-gd # Модули Perl cpan -i XML::Entities cpan -i Compress::Zlib # Скачать wget https://launchpad.net/ocsinventory-server/stable-2.1/2.1.1/+download/OCSNG_UNIX_SERVER-2.1.1.tar.gz # Распаковать и установить tar -zxvf OCSNG_UNIX_SERVER-2.1.1.tar.gz cd OCSNG_UNIX_SERVER-2.1.1 ./setup.sh # Where is Apache main configuration file [] ? /etc/apache2/apache2.conf # Where is Apache Include configuration directory [] ? /etc/apache2/sites-available nano /etc/apache2/sites-available/000-default.conf #add the line just above the closing "" directive. Alias /ocsreports /usr/share/ocsinventory-reports service apache2 restart === Удаление агента с клиентских машин === IF EXIST "%programfiles(x86)%\OCS Inventory Agent\uninst.exe" ( "%programfiles(x86)%\OCS Inventory Agent\uninst.exe" /s ) IF EXIST "%programfiles%\OCS Inventory Agent\uninst.exe" ( "%programfiles%\OCS Inventory Agent\uninst.exe" /s ) ===== Решение проблем ===== ==== Table 'glpi.glpi_logs' doesn't exist ==== При обновлении версии GLPI идёт ругань примерно такого вида: 9.3 migrate Ticket solution history - Ошибка во время запроса базы данных: REPLACE INTO `glpi_itilsolutions` (itemtype, items_id, date_creation, users_id, user_name, solutiontypes_id, content, status, date_approval) SELECT 'Ticket' AS itemtype, ticket.`id` AS items_id, ticket.`solvedate` AS date_creation, IF(log.user_name REGEXP '[(][0-9]+[)]$', SUBSTRING_INDEX(SUBSTRING_INDEX(log.`user_name`, '(', -1), ')', 1), 0) AS users_id, IF(log.user_name REGEXP '[(][0-9]+[)]$', NULL, log.`user_name`) AS user_name, ticket.`solutiontypes_id` AS solutiontypes_id, ticket.`solution` AS content, (CASE WHEN ticket.status = 6 THEN 3 -- if CLOSED, ACCEPTED WHEN ticket.status = 5 THEN 2 -- if SOLVED, WAITING WHEN ticket.status <= 4 THEN 4 -- if INCOMING|ASSIGNED|PLANNED, REFUSED ELSE 1 -- else NONE END) AS status, ticket.`closedate` AS date_approval FROM glpi_tickets AS ticket LEFT JOIN `glpi_logs` AS log ON log.`itemtype` = 'Ticket' AND log.`items_id` = ticket.`id` AND log.`id_search_option` = 24 WHERE LENGTH(ticket.`solution`) > 0 GROUP BY ticket.`id` ORDER BY ticket.`id` ASC, log.id DESC - Ошибка - Table 'glpi.glpi_logs' doesn't exist Решение: создать таблицу glpi_logs заново, и затем снова запустить обновление: # DROP TABLE IF EXISTS `glpi_logs`; CREATE TABLE `glpi_logs` ( `id` int(11) NOT NULL AUTO_INCREMENT, `itemtype` varchar(100) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', `items_id` int(11) NOT NULL DEFAULT '0', `itemtype_link` varchar(100) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', `linked_action` int(11) NOT NULL DEFAULT '0' COMMENT 'see define.php HISTORY_* constant', `user_name` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, `date_mod` datetime DEFAULT NULL, `id_search_option` int(11) NOT NULL DEFAULT '0' COMMENT 'see search.constant.php for value', `old_value` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, `new_value` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, PRIMARY KEY (`id`), KEY `date_mod` (`date_mod`), KEY `itemtype_link` (`itemtype_link`), KEY `item` (`itemtype`,`items_id`), KEY `id_search_option` (`id_search_option`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; https://github.com/glpi-project/glpi/blob/9.3/bugfixes/install/mysql/glpi-empty.sql#L4255 ==== N tables not migrated to InnoDB engine ==== После входа в GLPI показывается сообщение типа 355 tables not migrated to InnoDB engine. Решение: выполнить скрипт php /var/www/html/scripts/innodb_migration.php ===== Полезные команды ===== # Ремонт базы: mysqlcheck -u root -p1111111 -r --databases glpi # Проверка базы: mysqlcheck -u root -p1111111 -c --databases glpi # Бэкап базы: mysqldump -u root -p glpi > /usr/share/glpi/_files/dumps/$ (date +%Y-%m-%d).glpi.backup.sql # Восстановление базы: mysql -u root -p glpi < /usr/share/glpi/files/_dumps/glpi-backup.sql