Skip to main content

Установка GLPI 10 на Astralinux 1.8.1

Описание

GLPI - это решение с открытым исходным кодом для управления сервисами. Позволяет управлять службой поддержки (Helpdesk) и ИТ-активами (Asset Management).

Установка

Проверяем нашу версию ОС.

cat /etc/astra_version && cat /etc/debian_version

Результат вывода команды:

1.8.1
12.0

Установка дополнительных пакетов.

apt -y install chrony htop mc wget ufw

Настройка часового пояса.

dpkg-reconfigure tzdata

Nginx

Установка Nginx + PHP-FPM

apt -y install nginx php-fpm

Создаем конфигурационный файл nginx для нашего сайта

nano /etc/nginx/sites-available/glpi

HTTP

Для работы через HTTP, приводим его к следующему виду:

#
# Конфигурация для GLPI
#

server {
        listen 80;

        root /var/www/glpi/public;

        # Добавить index.php в список, если вы используете PHP
        index index.html index.htm index.nginx-debian.html;

        # Указать домен
        server_name example.com;

        # Настройки для GLPI
        location / {
                try_files $uri /index.php$is_args$args;
        }

        location ~ ^/index\.php$ {
                # Следующую строку необходимо адаптировать, так как она меняется в зависимости от ОС системы и версии PHP
                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;
        }
}

HTTPS

Для работы через HTTPS, необходимо иметь, получить или сгенерировать SSL сертификаты.

Сертификаты помещаем на сервер в удобное Вам место. В данном случае сертификаты будут размещены в каталог /etc/ssl/.

/etc/ssl/example.com.crt
/etc/ssl/example.com.key

Для работы через HTTPS необходимо добавить в конфигурационный файл порт и указать где лежат сертификаты.

listen 443 ssl;

...

# Указать путь к SSL сертификатам
ssl_certificate /etc/ssl/example.com.crt;
ssl_certificate_key /etc/ssl/example.com.key;

Приводим файл конфигурации к следующему виду:

#
# Конфигурация для GLPI
#

# HTTP
server {

        listen 80;

        # Указать домен
        server_name example.com;
}

# HTTPS
server {

        listen 443 ssl;

        # Указать домен
        server_name example.com;

        #
        root /var/www/glpi/public;

        # Добавить index.php в список, если вы используете PHP
        index index.html index.htm index.nginx-debian.html;

        # Указать путь к SSL сертификатам
        ssl_certificate /etc/ssl/example.com.crt;
        ssl_certificate_key /etc/ssl/example.com.key;

        # Настройки для GLPI
        location / {
                try_files $uri /index.php$is_args$args;
        }

        location ~ ^/index\.php$ {
                # Следующую строку необходимо адаптировать, так как она меняется в зависимости от дистрибутива ОС и версии PHP
                fastcgi_pass unix:/run/php/php8.2-fpm.sock;

                fastcgi_split_path_info ^(.+\.php)(/.*)$;
                include fastcgi_params;

                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        }
}

По желанию можно добавить дополнительные параметры для работы с HTTPS.

# Настройки для работы с HTTP/2
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;

# Кеширование сессий
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;

# Оптимизация производительности
keepalive_timeout 70;

# Настройки для OCSP stapling
ssl_stapling on;
ssl_trusted_certificate /etc/ssl/example.com.crt;
resolver 77.88.8.8;

Перенаправление HTTP -> HTTPS

Для настройки перенаправления с HTTP на HTTPS необходимо добавить строку в блок HTTP, в файлe конфигурации.

# Перенаправление HTTP -> HTTPS
return 301 https://$host$request_uri;

Финальный файл конфигурации для работы с HTTPS
#
# Конфигурация для GLPI
#

# HTTP
server {

        listen 80;

        # Указать домен
        server_name example.com;

        # Перенаправление HTTP -> HTTPS
        return 301 https://$host$request_uri;
}

# HTTPS
server {

        listen 443 ssl;

        # Указать домен
        server_name example.com;
        
        #
        root /var/www/glpi/public;

        # Добавить index.php в список, если вы используете PHP
        index index.html index.htm index.nginx-debian.html;

        # Указать путь к SSL сертификатам
        ssl_certificate /etc/ssl/example.com.crt;
        ssl_certificate_key /etc/ssl/example.com.key;

        # Настройки для работы с HTTP/2
        ssl_protocols TLSv1.2 TLSv1.3;
        ssl_ciphers HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers on;

        # Кеширование сессий
        ssl_session_cache shared:SSL:10m;
        ssl_session_timeout 10m;

        # Оптимизация производительности
        keepalive_timeout 70;

        # Настройки для OCSP stapling
        ssl_stapling on;
        ssl_trusted_certificate /etc/ssl/example.com.crt;
        resolver 77.88.8.8;

        # Настройки для GLPI
        location / {
                try_files $uri /index.php$is_args$args;
        }

        location ~ ^/index\.php$ {
                # Следующую строку необходимо адаптировать, так как она меняется в зависимости от дистрибутива ОС и версии PHP
                fastcgi_pass unix:/run/php/php8.2-fpm.sock;

                fastcgi_split_path_info ^(.+\.php)(/.*)$;
                include fastcgi_params;

                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        }

}

Активация

Для активации сайта необходимо сделать символическую ссылку в sites-enabled.

ln -s /etc/nginx/sites-available/glpi /etc/nginx/sites-enabled/

Перезапускаем nginx.

nginx -s reload

или

systemctl restart nginx

PHP

Установка php8.2 так как эта версия уже присутствует в репозитории по умолчанию.

apt -y install php8.2-{fpm,common,cli,curl,gd,intl,mysqli,session,zlib,bz2,phar,zip,exif,ldap,openssl,opcache,dom,simplexml,xmlreader,xmlwriter}
apt -y install php8.2-mbstring

Проверка установленной версии

php -v

Настройка параметров PHP в соответствии с рекомендациями GLPI. Настройка производиться в файле php.ini.

nano /etc/php/8.2/fpm/php.ini

Находим блок session.cookie_secure, раскоментируем строку и выставляем в параметре "1".

; https://php.net/session.cookie-secure
session.cookie_secure = 1

Находим блок session.cookie_httponly, раскоментируем строку и выставляем в параметре "1".

; Whether or not to add the httpOnly flag to the cookie, which makes it
; inaccessible to browser scripting languages such as JavaScript.
; https://php.net/session.cookie-httponly
session.cookie_httponly = 1

Находим session.cookie_samesite, раскоментируем строку и выставляем в параметре "Lax".

; Add SameSite attribute to cookie to help mitigate Cross-Site Request Forgery (CSRF/XSRF)
; Current valid values are "Strict", "Lax" or "None". When using "None",
; make sure to include the quotes, as `none` is interpreted like `false` in ini files.
; https://tools.ietf.org/html/draft-west-first-party-cookies-07
session.cookie_samesite = Lax

Перезапускаем php-fpm.

systemctl restart php8.2-fpm

MariaDB

Установка.

apt -y install mariadb-server

Запуск и добавление в автозагрузку.

systemctl start mariadb
systemctl enable mariadb

Проверить статус службы.

systemctl status mariadb

Настройка

sudo mysql_secure_installation

Во время настройки необходимо будет задать root пароли для базы данных.

Подключаемся к MariaDB и указываем заданный root пароль на предыдущем шаге.

mysql -u root -p

Создаем пользователя.

CREATE USER 'user_name'@'localhost' IDENTIFIED BY 'password';

Создаем базу данных.

CREATE DATABASE name_database;

Назначаем права пользователю на базу данных.

GRANT ALL PRIVILEGES ON name_database.* TO 'user_name'@'localhost';

Применяем права.

FLUSH PRIVILEGES;

Разрешить пользователю glpi доступ к часовым поясам.

GRANT SELECT ON mysql.time_zone_name TO 'glpi'@'localhost';

Для выхода из CLI MariaDB.

\q

Перезапускаем MariaDB.

systemctl restart mysql

 

GLPI

Переходим в каталог

cd /var/www/

Скачиваем архив с последней на текущий момент версией GLPI.

wget https://github.com/glpi-project/glpi/releases/download/10.0.18/glpi-10.0.18.tgz

Распаковываем архив в текущий каталог /var/www/.

tar -xvf glpi-10.0.18.tgz

После распаковки в каталоге /var/www/ должен появиться каталог "glpi" /var/www/glpi/.

Задаем права доступа к каталогу

chown -R -v www-data:www-data /var/www/glpi

Открываем браузер и переходим по ссылке

https://example.com

Вы будете перенаправлены на страницу мастера установки.

https://example.com/install/install.php

Шаг 0.
Во время проверки на совместимость с GLPI, если все шаги по инструкции были выполнены, то мы получим "ОК" по всем пунктам.

image.png

Шаг 1.
Указываем данные для подключения к нашей базе данных. Логин и пароль, те которые создавали в MariaDB для нашей базы данных.

image.png

Шаг 2.

Выбираем нашу созданную БД.

Шаг 3.

Если всё сделано правильно, увидимо сообщение, что наша БД проинициализирована.

image.png

Шаг 4.

Телеметрия, здесь на своё усмотрение.

Шаг 5.

Информационный, для ознакомления.

Шаг 6.

Заключительный шаг в котором указаны логины и пароли по умолчанию, для разных ролей.

image.png

В целях безопасности измените пароли для пользователей по умолчанию: glpi, post-only, tech и normal.
В целях безопасности удалите файл: install/install.php

Для удаления файла install.php необходимо открыть консоль сервера и выполнить команду:

rm /var/www/glpi/install/install.php

 

UFW

Настройка фаервола ufw.

Установка. Ранее мы уже установили данный пакет в пункте "Установка дополнительных пакетов".

apt -y install ufw

Настройка политик по умолчанию, запрещаем входящий и разрешаем исходящий трафик.

ufw default deny incoming
ufw default allow outgoing

Открываем необходимые порты.

HTTP и HTTPS порты 80 и 443. Если необходим удаленный доступ по SSH открываем порт 22.

ufw allow http
ufw allow https
ufw allow ssh

После того как добавили необходимые правила включаем фаервол.

ufw enable

Добавляем в автозагрузку.

systemctl enable ufw

Для проверки статуса и набора правил.

ufw status