Установка ITSM-системы GLPI + NGINX + PHP 7.4 + Percona в Centos 7

GLPI это ITSM-система, которая позволит вам легко управлять и планировать IT изменения, быстро решать проблемы с помощью автоматизации.GLPI является системой работы с заявками и инцидентами, а также для инвентаризации компьютерного оборудования.

Подготовка

Обновляем операционную систему, добавляем репозиторий EPEL, устанавливаем софт

$ sudo yum -y update
$ sudo yum -y install epel-release
$ sudo yum -y install nano wget net-tools

Selinux

Переводим Selinux в режим permissive

$ sudo setenforce 0
$ sudo getenforce
$ sudo sed -i 's/^SELINUX=.*/SELINUX=permissive/' /etc/selinux/config

Применяем так же:

$ sudo setsebool -P httpd_can_network_connect on
$ sudo setsebool -P httpd_can_network_connect_db on
$ sudo setsebool -P httpd_can_sendmail on

Установка и настройка PHP 7.4

Установим yum-utils для инструмента yum-config-manager

$ sudo yum -y install yum-utils

Включаем remi-репозиторий для установки php 7.4

$ sudo rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
$ sudo yum-config-manager --enable remi-php74

Устанавливаем php 7.4 и некоторые компоненты

$ sudo yum -y install php php-xml php-soap php-xmlrpc php-mbstring php-json php-gd php-pecl-mcrypt php-common php-fpm php-pdo php-mysqlnd php-imap php-embedded php-ldap php-odbc php-zip php-fileinfo php-process php-opcache php-curl php-intl php-pear php-imagick php-memcache php-pspell php-gettext php-apcu php-pecl-recode php-tidy php-xsl php-pear-CAS

Меняем настройки в конфигурационных файлах

$ sudo sed -i 's/^short_open_tag = .*/short_open_tag = On/' /etc/php.ini
$ sudo sed -i 's/^date.timezone = .*/date.timezone = Europe/Moscow/' /etc/php.ini
$ sudo sed -i 's/^opcache.revalidate_freq= .*/opcache.revalidate_freq=0/' /etc/php.d/10-opcache.ini
$ sudo sed -i 's/^user = .*/user = nginx/' /etc/php-fpm.d/www.conf
$ sudo sed -i 's/^group = .*/group = nginx/' /etc/php-fpm.d/www.conf
$ sudo sed -i 's/^listen = .*/listen = /var/run/php-fpm/php-fpm.sock/' /etc/php-fpm.d/www.conf
$ sudo sed -i 's/^listen.owner = .*/listen.owner = nginx/' /etc/php-fpm.d/www.conf
$ sudo sed -i 's/^listen.group = .*/listen.group = nginx/' /etc/php-fpm.d/www.conf

Добавляем php-fpm в автозагрузку

$ sudo systemctl enable php-fpm

Установка и настройка NGINX

Добавим репозиторий NGINX

$ sudo nano /etc/yum.repos.d/nginx.repo 
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1

Установка web-сервера NGINX

$ sudo yum -y install nginx

Создадим директории для виртуальных хостов

$ sudo mkdir /etc/nginx/{sites-available,sites-enabled}

Отредактируем основной конфиг nginx.conf

$ sudo nano /etc/nginx/nginx.conf
user  nginx;
worker_processes  auto;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;

events {
    worker_connections  1024;
    use epoll;
    multi_accept on;
}


http {
    server_tokens off;
    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;
    sendfile_max_chunk 128k;
    tcp_nopush     on;
    tcp_nodelay on;

    keepalive_timeout  65;
    reset_timedout_connection on;
    client_header_timeout 3;
    client_body_timeout 5;
    send_timeout 3;
    client_header_buffer_size 2k;
    client_body_buffer_size 256k;
    client_max_body_size 12m;

    #gzip  on;

    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*.conf;
}

Отредактируем конфиг glpi.conf

$ sudo nano /etc/nginx/sites-available/glpi.conf
server {
    listen      80;
    server_name glpi.example.com;
    index       index.php index.html;

    access_log  /var/log/nginx/glpi.gge.lan.access.log combined;
    error_log   /var/log/nginx/glpi.gge.lan.error.log error;

    set $php_sock unix:/var/run/php-fpm/php-fpm.sock;
    set $root_path /opt/glpi;
    root $root_path;

    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $host;

    client_max_body_size 1024M;
    client_body_buffer_size 4M;

    location = /favicon.ico {
        log_not_found off;
        access_log off;
    }

    location = /robots.txt {
        allow all;
        log_not_found off;
        access_log off;
    }

    location / {
        try_files $uri $uri/ /index.php?$args;

        if (!-e $request_filename)
        {
            rewrite ^(.+)$ /index.php?q=$1 last;
        }
 
        location ~* ^.+.(jpeg|jpg|png|gif|bmp|ico|svg|css|js)$ {
            expires     max;
        }
 
        location ~ [^/].php(/|$) {
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            if (!-f $document_root$fastcgi_script_name) {
                return  404;
            }

            fastcgi_pass    $php_sock;
            fastcgi_index   index.php;
            include         fastcgi_params;
            fastcgi_intercept_errors on;
            fastcgi_ignore_client_abort off;
            fastcgi_connect_timeout 60;
            fastcgi_send_timeout 180;
            fastcgi_read_timeout 180;
            fastcgi_buffer_size 128k;
            fastcgi_buffers 4 256k;
            fastcgi_busy_buffers_size 256k;
            fastcgi_temp_file_write_size 256k;
            fastcgi_param PHP_VALUE "
                memory_limit = 256M
                file_uploads = on
                max_execution_time = 600
                session.auto_start = off
                session.use_trans_sid = 0
            ";
        }
    }

    location ~* "/.(htaccess|htpasswd)$" {
        deny    all;
        return  404;
    }
}

Создаем симлинк, чтобы активировать конфиг glpi.conf

$ sudo ln -s /etc/nginx/sites-available/glpi.conf /etc/nginx/sites-enabled/glpi.conf

Проверяем конфиг

$ sudo nginx -t

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

$ sudo systemctl enable nginx

Firewall

Настройка firewall, открываем порты

$ sudo firewall-cmd --zone=public --add-service={http,https} --permanent
$ sudo firewall-cmd --reload

Percona

Добавим репозиторий Percona

$ sudo yum -y install https://repo.percona.com/yum/percona-release-latest.noarch.rpm

Устанавливаем Percona-Server

$ sudo yum -y install Percona-Server-server-57

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

$ sudo systemctl enable --now mysqld

Ищем пароль, который сгенерировался автоматом и меняем его

$ sudo grep -i password /var/log/mysqld.log
$ sudo mysql_secure_installation
New password:
Re-enter new password:
Change the password for root ? ((Press y|Y for Yes, any other key for No) :
Remove anonymous users? (Press y|Y for Yes, any other key for No) : y
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y

Установка GLPI

Создаем пользователя и базу

$ sudo mysql -u root -p
> CREATE DATABASE glpidb;
> GRANT ALL PRIVILEGES ON glpidb.* TO 'glpiuser'@'localhost' IDENTIFIED BY 'password';
> FLUSH PRIVILEGES;
> exit;

Скачиваем и распаковываем GLPI

$ cd
$ wget -c https://github.com/glpi-project/glpi/releases/download/9.4.5/glpi-9.4.5.tgz
$ tar -xf glpi-9.4.5.tgz
$ sudo mv glpi /opt/
$ sudo chmod 755 -R /opt/glpi/
$ sudo chown nginx:nginx -R /opt/glpi/

Запускаем php-fpm и запускаем web-сервер

$ sudo systemctl restart php-fpm
$ sudo systemctl restart nginx

Открываем браузер и переходим по адресу http://glpi.example.com

По умолчанию логины / пароли:

  • glpi/glpi для учетной записи администратора
  • tech/tech для технической учетной записи
  • normal/normal для обычной учетной записи
  • post-only/postonly только для подачи заявок
Sidebar