Glpi nginx php fpm

Prerequisites¶

Here is a virtual host configuration example for Apache 2 web server.

The following configuration is only suitable for GLPI version 10.0.7 or later.

 *:80> ServerName glpi.localhost DocumentRoot /var/www/glpi/public # If you want to place GLPI in a subfolder of your site (e.g. your virtual host is serving multiple applications), # you can use an Alias directive: # Alias "/glpi" "/var/www/glpi/public"  /var/www/glpi/public> Require all granted RewriteEngine On # Redirect all requests to GLPI router, unless file exists. RewriteCond % !-f RewriteRule ^(.*)$ index.php [QSA,L]  

If you cannot change the Apache configuration (e.g. you are using a shared hosting), you can use a .htaccess file.

# /var/www/glpi/.htaccess RewriteBase / RewriteEngine On RewriteCond % !^/public RewriteRule ^(.*)$ public/index.php [QSA,L]

Nginx configuration¶

Here is a configuration example for Nginx web server using php-fpm .

The following configuration is only suitable for GLPI version 10.0.7 or later.

server  listen 80; listen [::]:80; server_name glpi.localhost; root /var/www/glpi/public; location /  try_files $uri /index.php$is_args$args; > location ~ ^/index\.php$  # the following line needs to be adapted, as it changes depending on OS distributions and PHP versions fastcgi_pass unix:/run/php/php-fpm.sock; fastcgi_split_path_info ^(.+\.php)(/.*)$; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; > > 

IIS configuration¶

Here is a configuration example for Microsoft IIS .

      name="Rewrite to GLPI" stopProcessing="true">  url="^(.*)$" />  input="" matchType="IsFile" ignoreCase="false" negate="true" />   type="Rewrite" url="index.php" appendQueryString="true" />      

PHP¶

We recommend to use the newest supported PHP release for better performance.

Mandatory extensions¶

Following PHP extensions are required for the app to work properly:

  • dom , fileinfo , filter , libxml , json , simplexml , xmlreader , xmlwriter : these PHP extensions are enable by default and are used for various operations;
  • curl : used for remote access to resources (inventory agent requests, marketplace, RSS feeds, …);
  • gd : used for images handling;
  • intl : used for internationalization;
  • mysqli : used for database connection;
  • session : used for sessions support;
  • zlib : used for handling of compressed communication with inventory agents, installation of gzip packages from marketplace and PDF generation.

Optional extensions¶

Even if those extensions are not mandatory, we advise you to install them anyways.

Following PHP extensions are required for some extra features of GLPI:

  • bz2 , Phar , zip : enable support of most common packages formats in marketplace;
  • exif : enhance security on images validation;
  • ldap : enable usage of authentication through remote LDAP server;
  • openssl : enable email sending using SSL/TLS;
  • Zend OPcache : enhance PHP engine performances.

Database¶

Currently, only MySQL (5.7 minimum) and MariaDB (10.2 minimum) database servers are supported by GLPI.

In order to work, GLPI requires a database server.

Creative Commons License

© Copyright 2016-2023, GLPI Project, Teclib’. Revision 2e55a5ee .

Versions latest develop Downloads pdf html epub On Read the Docs Project Home Builds Free document hosting provided by Read the Docs.

Источник

Установка GLPI на nginx

kurazhov's blog

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

Настраиваем 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/, поэтому если такой директории нет, то создадим её.

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

Обратите внимание на директиву 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

Если пишет, что команда не найдена, то добавьте строку в файл .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

Переходим в корень веб-сервера, путь к которому указан в файле конфигурации виртуального хоста.

Качаем последнюю версию релиза GLPI

wget https://github.com/glpi-project/glpi/releases/download/9.3.3/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, введя команду

и там дополнить задачи следующей командой

* * * * * /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, запускайте следующее

GRANT SELECT ON `mysql`.`time_zone_name` TO 'glpiuser'@'localhost'; FLUSH PRIVILEGES; \q

Установка GLPI на nginx завершена

Источник

Читайте также:  Error line number python
Оцените статью