Thank you for reading this post, don't forget to subscribe!
Оригинал статьи:
Установка ITSM-системы GLPI + NGINX + PHP 7.4 + Percona в Centos 7
GLPI это ITSM-система, которая позволит вам легко управлять и планировать IT изменения, быстро решать проблемы с помощью автоматизации.
GLPI является системой работы с заявками и инцидентами, а также для инвентаризации компьютерного оборудования.
Подготовка
Обновляем операционную систему, добавляем репозиторий EPEL, устанавливаем софт
1 2 3 |
$ sudo yum -y update $ sudo yum -y install epel-release $ sudo yum -y install nano wget net-tools |
Selinux
Переводим Selinux в режим permissive
1 2 3 |
$ sudo setenforce 0 $ sudo getenforce $ sudo sed -i 's/^SELINUX=.*/SELINUX=permissive/' /etc/selinux/config |
Применяем так же:
1 2 3 |
$ 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
1 |
$ sudo yum -y install yum-utils |
Включаем remi-репозиторий для установки php 7.4
1 2 |
$ sudo rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm $ sudo yum-config-manager --enable remi-php74 |
Устанавливаем php 7.4 и некоторые компоненты
1 |
$ 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 |
Меняем настройки в конфигурационных файлах
1 2 |
$ 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 |
1 |
$ sudo sed -i 's/^opcache.revalidate_freq= .*/opcache.revalidate_freq=0/' /etc/php.d/10-opcache.ini |
1 2 3 4 5 |
$ 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 в автозагрузку
1 |
$ sudo systemctl enable php-fpm |
Установка и настройка NGINX
Добавим репозиторий NGINX
1 2 3 4 5 6 |
$ 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
1 |
$ sudo yum -y install nginx |
Создадим директории для виртуальных хостов
1 |
$ sudo mkdir /etc/nginx/{sites-available,sites-enabled} |
Отредактируем основной конфиг nginx.conf
[codesyntax lang="php"]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
$ 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; } |
[/codesyntax]
Отредактируем конфиг glpi.conf
[codesyntax lang="php"]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 |
$ 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; } } |
[/codesyntax]
Создаем симлинк, чтобы активировать конфиг glpi.conf
1 |
$ sudo ln -s /etc/nginx/sites-available/glpi.conf /etc/nginx/sites-enabled/glpi.conf |
Проверяем конфиг
1 |
$ sudo nginx -t |
Добавляем nginx в автозагрузку
1 |
$ sudo systemctl enable nginx |
Firewall
Настройка firewall, открываем порты
1 2 |
$ sudo firewall-cmd --zone=public --add-service={http,https} --permanent $ sudo firewall-cmd --reload |
Percona
Добавим репозиторий Percona
1 |
$ sudo yum -y install https://repo.percona.com/yum/percona-release-latest.noarch.rpm |
Устанавливаем Percona-Server
1 |
$ sudo yum -y install Percona-Server-server-57 |
Запускаем сервис и добавляем его в автозагрузку
1 |
$ sudo systemctl enable --now mysqld |
Ищем пароль, который сгенерировался автоматом и меняем его
[codesyntax lang="php"]
1 2 3 4 5 6 7 8 9 |
$ 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 |
[/codesyntax]
Установка GLPI
Создаем пользователя и базу
1 2 3 4 5 |
$ sudo mysql -u root -p > CREATE DATABASE glpidb; > GRANT ALL PRIVILEGES ON glpidb.* TO 'glpiuser'@'localhost' IDENTIFIED BY 'password'; > FLUSH PRIVILEGES; > exit; |
Скачиваем и распаковываем GLPI
1 2 3 4 5 6 |
$ 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-сервер
1 2 |
$ sudo systemctl restart php-fpm $ sudo systemctl restart nginx |
Открываем браузер и переходим по адресу http://glpi.example.com
По умолчанию логины / пароли:
- glpi/glpi для учетной записи администратора
- tech/tech для технической учетной записи
- normal/normal для обычной учетной записи
- post-only/postonly только для подачи заявок