GLPI — аббревиатура для Gestionnaire libre de parc informatique (Свободный менеджер ИТ-инфраструктуры), является системой работы с заявками и инцидентами, а также для инвентаризации компьютерного оборудования (компьютеры, программное обеспечение, принтеры и т.д.). Имеет расширенные функции, такие как работа системы отслеживания почты с уведомлением и методы, для создания базы данных с основной информацией о топологии сети. Более подробно можно узнать на википедии.
UPD от 28.11.2018: В связи с выходом Ubuntu 18, php стал использоваться версии 7.2 вместо 7.0. Написал оба варианта.
UPD от 12.03.2019: Как оказалось, можно не менять тип прослушки сервиса. Но это не точно. Требуются дополнительные исследования
UPD от 28.11.2018: Добавил немного данных и для Debian 10. Как и оказалось, можно не менять тип прослушки сервиса. Но оставлю старый вариант.
Установка системы особых проблем не вызывает, если используется веб-сервер Apache. В случае использования nginx в связке с php-fpm вылезают подводные камни, а точнее только один — при установке на шаге ввода данных для подключения к БД вылезает ошибка «None or Invalid host in HTTP_REFERER. Reload previous page before doing action again.»
В многочисленных ссылках, услужливо предлагаемых поисковиками при поиске вышеуказанной фразы, мне всегда попадались только записи закрытых ошибок со страниц разработчиков на гитхабе и на их форуме.
Я долго бился над этой проблемой, пока не нашёл франкоязычную статью1 про установку glpi, где ясно было написано, что сервис php-fpm необходимо заставить слушать по TCP порту 9000, а не через unix-сокет. (ну как ясно — просто было написано какой файл нужно отредактировать 🙂 )
Далее вольный пересказ той статьи с учётом того, что ОС — не Debian, а Ubuntu Server 18 (для Ubuntu Server 16 вся разница состоит в дефолтном php-fpm версии 7.0, о чём будет сказано ниже).
Установка и настройка Web-сервера
Устанавливаем пакеты, составляющие основу web-сервера2.
apt install nginx -y
apt install php-fpm php-mysql mysql-server php-ldap \ php-imap php-apcu php-xmlrpc php-curl php-xml php-mbstring \ php-gd php-intl php-cas php-zip php-bz2 -y apt install php
Для Debian вместо пакета mysql-server ставится пакет default-mysql-server
Устанавливаем php последним по той просто причине, что при установке вместе с остальными пакетами, он тянет за собой apache. А нам он и не нужен совсем.
При необходимости настраиваем защиту MySQL как в этой статье
mysql_secure_installation
Далее создаём пользователя и БД для GLPI
mysql -uroot -p
create database glpidb;
grant all privileges on glpidb.* to glpiuser@localhost identified by 'your_strong_pass';
Выходим из оболочки MySQL
\q
Настраиваем PHP
Редактируем файл /etc/php/7.0/fpm/pool.d/www.conf или /etc/php/7.2/fpm/pool.d/www.conf для смены типа прослушки сервиса.
# Для php7.0-fpm sed -i -e "s/\/run\/php\/php7.0-fpm.sock/127.0.0.1:9000/g" \ /etc/php/7.2/fpm/pool.d/www.conf # Для php7.2-fpm sed -i -e "s/\/run\/php\/php7.2-fpm.sock/127.0.0.1:9000/g" \ /etc/php/7.2/fpm/pool.d/www.conf # Для php7.3-fpm sed -i -e "s/\/run\/php\/php7.3-fpm.sock/127.0.0.1:9000/g" \ /etc/php/7.3/fpm/pool.d/www.conf
Редактируем php.ini, расположенный в /etc/php/7.x/fpm/, отключая уязвимость
# Для php7.0-fpm sed -i -e "s/\;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/g" \ /etc/php/7.0/fpm/php.ini # Для php7.2-fpm sed -i -e "s/\;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/g" \ /etc/php/7.2/fpm/php.ini # Для php7.3-fpm sed -i -e "s/\;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/g" \ /etc/php/7.3/fpm/php.ini
Настраиваем nginx для GLPI
Обычно для обработки php я просто в файлах конфигурации хостов ссылаюсь на шаблон конфигурации php, лежащий в /etc/nginx/templates/, поэтому если такой директории нет, то создадим её.
mkdir /etc/nginx/templates
и положим туда файл
nano /etc/nginx/templates/php-fpm.conf
с таким содержимым:
location ~ .php$ { try_files $uri = 404; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param SERVER_NAME $host; } location ~ /.ht { deny all; }
Обратите внимание на директиву fastcgi_pass — она как раз и указывает, как именно слушать сервис. Если хотите оставить как есть или не меняли тип прослушки, то используйте директиву
fastcgi_pass unix://run/php/php7.3-fpm.sock;
Далее, в файл виртуального хоста
nano /etc/nginx/sites-enabled/default
(в данном случае можно использовать default), в секцию server вписываем
include /etc/nginx/templates/*.conf;
access_log /var/log/nginx/default_access.log;
error_log /var/log/nginx/default_error.log;
В этом же файле в строку index должна быть добавлена поддержка php
index index.php index.html index.htm index.nginx-debian.html;
Проверяем конфигурацию nginx
nginx -t
Если пишет, что команда не найдена, то добавьте строку в файл .profile
nano ~/.profile PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
Если всё нормально, то перезапускаем сервисы php-fpm и nginx
# Для php7.0-fpm systemctl restart nginx php7.0-fpm # Для php7.2-fpm systemctl restart nginx php7.2-fpm # Для php7.3-fpm systemctl restart nginx php7.3-fpm
Установка и настройка GLPI
Переходим в корень веб-сервера, путь к которому указан в файле конфигурации виртуального хоста.
cd /var/www/html
Качаем последнюю версию релиза GLPI
wget https://github.com/glpi-project/glpi/releases/download/9.3.3/glpi-9.3.3.tgz
Распаковываем архив
tar -xzvf glpi-9.3.3.tgz
Удаляем скачанный архив
rm glpi-9.3.3.tgz
Меняем владельца распакованных файлов на пользователя веб-сервера.
chown www-data: -R /var/www/html
И заходим на http://ваш_IP/glpi
После довольно продолжительного времени появится форма авторизации. Если вместо этого будет 504 ошибка (а она скорее всего будет), то просто зайдите снова по адресу http://ваш_IP/glpi и ткните ссылку на возврат к странице авторизации. Введите там учётные данные по-умолчанию логин: glpi, пароль: glpi.
На главной странице появится уведомление о том, что надо удалить файл install/install.php
rm /var/www/html/glpi/install/install.php
и сменить пароли как у учётной записи glpi, так и у других встроенных учётных записей.
Также ещё можно настроить cron для задач glpi, введя команду
crontab -e
и там дополнить задачи следующей командой
* * * * * /usr/bin/php /var/www/html/glpi/front/cron.php &>/dev/null
Небольшие правки
В панели упраления пользователя можно встретить надпись «Access to timezone database (mysql) is not allowed» или «Доступ к базе данных часовых поясов (mysql) не разрешён». Если вам хочется видеть список часовых поясов, то, как говорится в пояснении от glpi, делайте это на свой страх и риск.
Итак, для начала перенесите системные часовые пояса в базу данных, выполнив следующую команду
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -p -u root mysql
Чтобы перечислить возможные часовые пояса, пользователь базы данных GLPI должен иметь доступ на чтение в mysql.таблицу time_zone_name. Предполагая, что ваш пользователь — glpiuser@localhost, запускайте следующее
mysql -p -u root
GRANT SELECT ON `mysql`.`time_zone_name` TO 'glpiuser'@'localhost'; FLUSH PRIVILEGES; \q
На этом всё.
Установка GLPI на nginx завершена
- https://memo-linux.com/installer-glpi-sous-debian-9-avec-nginx-php7-et-mariadb/
- Все операции проводятся под рутом
Коллеги подскажите , кто нибудь настроил связку nginx + php8 + kerberos
? у меня ни в какую не хочет пускать по SSO
если заходишь с доменной машины показывает стандартную страницу логина, если с не доменной то сначала требует виндовой авторизации , а потом снова стандартную страницу авторизации GLPI
То есть авторизация ntlm в NGiNX проходит? а вот SSO не отрабатывает
вот кусок конфиги от ngnix
auth_gss on;
auth_gss_realm TEST.LOCAL;
auth_gss_keytab /etc/test.keytab;
auth_gss_service_name HTTP/sd.test.ru;
auth_gss_allow_basic_fallback on;
Добро дня.
Подскажите как исправить корректно через сокет работу.
Debian 9.8
nginx 1.15.11
Мой кофиг в /etc/nginx/site-available/glpi
server {
listen 80; # порт, прослушивающий nginx
server_name localhost; # доменное имя, относящиеся к текущему виртуальному хосту
root /var/www/glpi; # каталог в котором лежит проект, путь к точке входа
index index.php;
# add_header Access-Control-Allow-Origin *;
# serve static files directly
location ~* \.(jpg|jpeg|gif|css|png|js|ico|html)$ {
access_log off;
expires max;
log_not_found off;
}
location / {
# add_header Access-Control-Allow-Origin *;
try_files $uri $uri/ /index.php?$query_string;
}
location ~* \.php$ {
try_files $uri = 404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php/php7.0-fpm.sock; # подключаем сокет php-fpm
fastcgi_index index.php;
fastcgi_param SERVER_NAME $host;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
Мой кофиг в /etc/nginx/site-available/glpi
user www-data;
worker_processes 4;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 768;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main ‘$remote_addr — $remote_user [$time_local] «$request» ‘
‘$status $body_bytes_sent «$http_referer» ‘
‘»$http_user_agent» «$http_x_forwarded_for»‘;
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
# include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
location ~ /\.ht {
deny all;
}
}
А какая хотя бы ошибка? Посмотрите, что в логах nginx’а. Может пути не так прописаны.
я что-то у Вас в конфиге вообще не вижу ссылки на сокет
типа fastcgi_pass unix:/run/php-fpm/www.sock;
На FreeBSD-11.2 + PHP 7.2 + Nginx 1.14 + GLPI 9.3
«про установку glpi, где ясно было написано, что сервис php-fpm необходимо заставить слушать по TCP порту 9000, а не через unix-сокет»
все прекрасно взлетело через unix-сокет, главное нужно было в php.ini поправить: cgi.fix_pathinfo=1 и в nginx.conf добавить в секкцию: location ~ .php$ { …. fastcgi_param SERVER_NAME $host; }
Попробовал сделать как сам же и написал, только установив прослушку на сокете, и… заработало. Ubuntu 18.04.2 + php 7.2 + nginx 1.14 + glpi 9.3.
Возможно в каких-то пакетах что-то исправили. Надо потестить на других ОС.
P.S. параметр «cgi.fix_pathinfo=1» здесь описан, как и «fastcgi_param SERVER_NAME $host;»
P.P.S На Ubuntu 16.04.4, php 7.0, nginx 1.10 тоже норм. Пока вообще ничего не понятно. Будем считать эту статью просто хорошим мануалом 🙂