Пост

Установка ITSM-системы Snipe-IT + NGINX + Percona в Centos 7

Snipe-IT - open source, кроссплатформенная, многофункциональная система управления ИТ-активами с открытым исходным кодом, построенная с использованием PHP-фреймворка Laravel.

Подготовка

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

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

Установка и настройка 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}

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

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
$ sudo nano /etc/nginx/nginx.conf
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;
}

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
$ sudo nano /etc/nginx/sites-available/snipe-it.conf
server {
    listen 80;
    server_name snipeit.example.com;

    root /opt/snipeit/public/;
    index index.php index.html index.htm;
    access_log /var/log/nginx/snipeit.access.log;
    error_log  /var/log/nginx/snipeit.error.log;

    location / {
        try_files $uri $uri/ /index.php$is_args$args;
    }

    location ~ \.php$ {
        try_files $uri $uri/ =404;
        fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
        fastcgi_read_timeout 300;
    }
}

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

1
$ sudo ln -s /etc/nginx/sites-available/snipe-it.conf /etc/nginx/sites-enabled/snipe-it.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

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

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

Установка Snipe-IT

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

1
2
3
4
5
$ mysql -u root -p
> CREATE DATABASE snipeitdb;
> GRANT ALL PRIVILEGES ON snipeitdb.* TO 'snipeituser'@'localhost' IDENTIFIED BY 'password';
> FLUSH PRIVILEGES;
> exit;

Создаем директории, скачиваем snipe-it

1
2
3
4
$ cd
$ sudo mkdir -p /opt/snipeit
$ sudo yum -y install git
$ sudo git clone https://github.com/snipe/snipe-it /opt/snipeit

Прописываем настройки подключения к базе

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$ cd /opt/snipeit
$ sudo cp .env.example .env
$ sudo nano /opt/snipeit/.env
APP_DEBUG=false
APP_TIMEZONE='Europe/Moscow'
APP_LOCALE=ru

DB_CONNECTION=mysql
DB_HOST=localhost
DB_DATABASE=snipeitdb
DB_USERNAME=snipeituser
DB_PASSWORD='password'
DB_PREFIX=null
DB_DUMP_PATH='/usr/bin'
DB_CHARSET=utf8mb4
DB_COLLATION=utf8mb4_unicode_ci

Настраиваем права доступа

1
2
3
4
$ sudo chown -R nginx:nginx /opt/snipeit
$ sudo chmod -R 755 storage
$ sudo chmod -R 755 public/uploads
$ sudo chmod -R 755 bootstrap/cache

Устанавливаем php composer и запускаем установку Lavarel

1
2
3
4
5
6
$ cd
$ curl -sS https://getcomposer.org/installer | php
$ sudo mv composer.phar /opt/snipeit
$ sudo yum -y install php-bcmath
$ cd /opt/snipeit
$ sudo php composer.phar install --no-dev --prefer-source

Запускаем генерацию App key

1
2
$ sudo php artisan key:generate
Application key [base64:ahNofhfghfghfghbERc9j3SsCXZhZWk=] set successfully.

Запускаем Nginx

1
$ sudo systemctl reload nginx

SELinux

Настраиваем SELinux

1
2
3
4
$ sudo chcon -R -t httpd_sys_rw_content_t /opt/snipeit/storage
$ sudo chcon -R -t httpd_sys_rw_content_t /opt/snipeit/bootstrap/cache
$ sudo setsebool -P httpd_can_network_connect on
$ sudo setsebool -P httpd_can_sendmail on
Авторский пост защищен лицензией CC BY 4.0 .

© IT Draft. Некоторые права защищены.