====== 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