Гид по технологиям

Установка UVdesk на Rocky Linux 8 с Nginx, MySQL и PHP

• 7 min read • DevOps • Обновлено 28 Nov 2025
Установка UVdesk на Rocky Linux 8
Установка UVdesk на Rocky Linux 8

UVdesk — открытая SaaS-поддержка для компаний. В этом руководстве показаны все шаги установки на сервере Rocky Linux 8 с Nginx, PHP 8.0, MySQL и SSL от Let’s Encrypt. Следуйте шаг за шагом: подготовка сервера, настройка брандмауэра, установка Nginx и PHP, создание базы данных, настройка SELinux и автоматическое продление сертификатов.

Важно: перед началом сделайте резервную копию важных данных и убедитесь, что домен указывает на ваш сервер.

Иллюстрация UVdesk — интерфейс службы поддержки

Кому подходит это руководство

Это руководство рассчитано на системных администраторов и инженеров DevOps с базовым опытом работы в Linux и с веб-серверами. Если вы — менеджер поддержки, используйте разделы «Контрольный список» и «Критерии приёмки».

Основные термины (в одну строку)

  • Nginx — легковесный веб-сервер и обратный прокси.
  • PHP-FPM — FastCGI-процесс-менеджер для PHP.
  • SELinux — механизм политики безопасности на уровне ядра.
  • Certbot — клиент для получения сертификатов от Let’s Encrypt.

Содержимое инструкции

  • Подготовка сервера
  • Настройка брандмауэра
  • Установка Nginx, PHP и MySQL
  • Конфигурация SELinux и прав
  • SSL — установка и автопродление
  • Конфигурация Nginx и PHP-FPM
  • Установка UVdesk и проверка
  • Дополнительно: чек-листы, тесты, отладка, безопасность

Требования

  • Сервер с Rocky Linux 8.
  • Домен, указывающий на сервер (в примере используется uvdesk.example.com).
  • Пользователь с sudo-привилегиями (не root).
  • Обновлённая система и базовые утилиты.

Обновите систему:

$ sudo dnf update

Установите базовые утилиты (если они ещё не установлены):

$ sudo dnf install wget curl nano unzip yum-utils -y

Шаг 1 — Настройка брандмауэра

Rocky Linux использует firewalld. Проверьте статус:

$ sudo firewall-cmd --state
running

Покажите текущие сервисы зоны по умолчанию (обычно public):

$ sudo firewall-cmd --permanent --list-services

Разрешите HTTP и HTTPS:

$ sudo firewall-cmd --permanent --add-service=http
$ sudo firewall-cmd --permanent --add-service=https
$ sudo firewall-cmd --reload

Проверьте, что http и https появились в списке служб.

Важно: если вы используете нестандартную зону или дополнительные порты (например, для админ-панелей), разрешите их явно.

Шаг 2 — Установка Nginx

Rocky Linux может поставляться со старой версией Nginx. Добавьте официальный репозиторий Nginx:

Создайте файл /etc/yum.repos.d/nginx.repo:

$ sudo nano /etc/yum.repos.d/nginx.repo

Вставьте содержимое:

[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

Сохраните и установите Nginx:

$ sudo dnf install nginx
$ nginx -v
# nginx version: nginx/1.20.2
$ sudo systemctl enable nginx

Примечание: версия может отличаться. Если у вас есть корпоративный прокси для dnf, настройте его заранее.

Шаг 3 — Установка PHP и расширений

Мы используем репозиторий Remi для установки PHP 8.0. Сначала подключите EPEL и Remi:

$ sudo dnf install epel-release
$ sudo dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm

Проверьте доступные потоки PHP и включите remi-8.0:

$ dnf module list php -y
# (вывод может содержать потоки 7.2–8.1)
$ sudo dnf module reset php
$ sudo dnf module enable php:remi-8.0

Установите PHP и требующиеся расширения для UVdesk:

$ sudo dnf install php-fpm php-mbstring php-xml php-curl php-mysqlnd php-zip php-cli php-intl php-bcmath php-gd php-tokenizer php-imap php-pear php-mailparse

Проверьте версию PHP:

$ php --version
# PHP 8.0.x (cli)

Короткая рекомендация: поддерживаемые расширения важны для работы почты, импорта писем и генерации архивов.

Шаг 4 — Установка и настройка MySQL

Установите MySQL-server:

$ sudo dnf install mysql-server
$ sudo systemctl enable mysqld --now

Запустите скрипт безопасной настройки:

$ sudo mysql_secure_installation

Выберите включение Validate Password Plugin и уровень STRONG (2) при желании. Затем задайте надёжный пароль для root и ответьте “Y” для удаления анонимных пользователей и тестовой БД.

Создайте пользователя и базу данных для UVdesk:

$ mysql -u root -p
mysql> CREATE USER 'uvdesk'@'localhost' IDENTIFIED BY 'Your_password2';
mysql> CREATE DATABASE uvdeskdb;
mysql> GRANT ALL PRIVILEGES ON uvdeskdb.* TO 'uvdesk'@'localhost';
mysql> exit

Примечание: замените ‘Your_password2’ на надёжный пароль, соответствующий политике.

Шаг 5 — Загрузка UVdesk

Скачайте последнюю стабильную версию UVdesk и распакуйте её в /var/www:

$ wget https://cdn.uvdesk.com/uvdesk/downloads/opensource/uvdesk-community-current-stable.zip
$ unzip uvdesk-*.zip
$ sudo mv uvdesk-community-v1.0.18 /var/www/uvdesk
$ cd /var/www/uvdesk

Отредактируйте файл окружения .env и переключите режим в production:

$ sudo nano .env
# найдите APP_ENV=dev и замените на
APP_ENV=prod

Смените владельца на пользователя Nginx (в Rocky Linux это nginx):

$ sudo chown -R nginx:nginx /var/www/uvdesk

Важно: права на файлы должны позволять веб-серверу читать и записывать необходимые каталоги. В последующих разделах есть подробности по SELinux.

Шаг 6 — Настройка SELinux

Если SELinux включён (рекомендуется), установите правильные контексты:

$ sudo chcon -t httpd_sys_content_t /var/www/uvdesk -R
$ sudo chcon -t httpd_sys_rw_content_t /var/www/uvdesk -R
$ sudo setsebool -P httpd_can_network_connect on

Пояснение: первый контекст делает файлы доступными для чтения веб-сервером, второй — разрешает запись. setsebool разрешает исходящие сетевые соединения от httpd (нужно, например, для отправки почты через внешние сервисы).

Примечание: если вы часто развертываете приложения, рассмотрите создание локальной политики SELinux или использование semanage fcontext для постоянного применения.

Шаг 7 — SSL с Let’s Encrypt и Certbot

Установите Certbot (EPEL уже должен быть подключён):

$ sudo dnf install certbot

Запрос сертификата (standalone):

$ sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d uvdesk.example.com

Сертификаты сохранятся в /etc/letsencrypt/live/uvdesk.example.com.

Сгенерируйте Diffie-Hellman параметры (усиливают безопасность TLS):

$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

Создайте директорию для webroot-челленджа и cron для автопродления:

$ sudo mkdir -p /var/lib/letsencrypt
$ sudo nano /etc/cron.daily/certbot-renew

Вставьте:

#!/bin/sh
certbot renew --cert-name uvdesk.example.com --webroot -w /var/lib/letsencrypt/ --post-hook "systemctl reload nginx"

Сделайте файл исполняемым:

$ sudo chmod +x /etc/cron.daily/certbot-renew

Важно: если Nginx слушает 80 порт, используйте webroot-метод с правильно смонтированной директорией проверки или временно останавливайте Nginx для standalone.

Шаг 8 — Конфигурация PHP-FPM и Nginx

PHP-FPM

Откройте /etc/php-fpm.d/www.conf и смените пользователя/группу на nginx:

$ sudo nano /etc/php-fpm.d/www.conf

Измените строки:

user = nginx
group = nginx

Запустите и включите сервис PHP-FPM:

$ sudo systemctl enable php-fpm --now
$ sudo chgrp -R nginx /var/lib/php/session

Nginx: виртуальный хост для UVdesk

Создайте файл /etc/nginx/conf.d/uvdesk.conf и вставьте конфигурацию:

server {
    listen       443 ssl http2;
    listen       [::]:443 ssl http2;
    server_name  uvdesk.example.com;

    access_log  /var/log/nginx/uvdesk.access.log;
    error_log   /var/log/nginx/uvdesk.error.log;
    
    # SSL
    ssl_certificate      /etc/letsencrypt/live/uvdesk.example.com/fullchain.pem;
    ssl_certificate_key  /etc/letsencrypt/live/uvdesk.example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/uvdesk.example.com/chain.pem;
    ssl_session_timeout  5m;
    ssl_session_cache shared:MozSSL:10m;
    ssl_session_tickets off;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
    ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1;
    ssl_stapling on;
    ssl_stapling_verify on;
    ssl_dhparam /etc/ssl/certs/dhparam.pem;
    resolver 8.8.8.8;

    root /var/www/uvdesk/public;
    index index.php;
    
    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    # Pass PHP Scripts To FastCGI Server
    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(.*)$;
        fastcgi_pass unix:/run/php-fpm/www.sock; # Depends On The PHP Version
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        include fastcgi_params;
        try_files $uri =404;
    }    
}

# enforce HTTPS
server {
    listen       80;
    listen       [::]:80;
    server_name  uvdesk.example.com;
    return 301   https://$host$request_uri;
}

Обратите внимание: корневая директория должна быть /var/www/uvdesk/public.

Отредактируйте /etc/nginx/nginx.conf и добавьте выше include /etc/nginx/conf.d/*.conf; строку:

server_names_hash_bucket_size  64;

Проверьте конфигурацию и запустите Nginx:

$ sudo nginx -t
$ sudo systemctl start nginx

Шаг 9 — Установка через веб-интерфейс

Откройте в браузере: https://uvdesk.example.com

Экран установки UVdesk — начальная страница установщика

Нажмите “Let’s Begin” и следуйте мастеру.

Проверка системных требований установщика UVdesk

Нажмите “Proceed”. Введите данные базы данных из Шага 4.

Конфигурация базы данных UVdesk в установщике

Создайте супер-администратора в мастере установки.

Создание супер-администратора в установщике UVdesk

Настройте префиксы панели участника и клиента (URL маршруты).

Настройка префиксов панели участника и клиента

Нажмите “Install Now” для запуска финальной установки.

Кнопка Install Now в установщике UVdesk

После завершения вы увидите экран с ссылками на админ-панель и фронтенд.

Завершение установки UVdesk — ссылки на панель администратора и сайт

Поздравляем — UVdesk установлен.

Проверки и тесты (Критерии приёмки)

  • Веб-интерфейс доступен по HTTPS, валидный сертификат от Let’s Encrypt.
  • Админ-панель открывается, можно войти под созданным супер-админом.
  • Отправка и получение писем работают (если настроен почтовый транспорт).
  • Можно создать тикет через фронтенд и увидеть его в админ-панели.
  • Логи Nginx и PHP не содержат критических ошибок при стандартных сценариях.

Тестовый чек-лист (минимум):

  • Доступна страница / (HTTP -> перенаправление на HTTPS).
  • Перейти в /admin или URL админ-панели и залогиниться.
  • Создать тестовый тикет по почте и по форме на сайте.
  • Проверить логи: /var/log/nginx/uvdesk.error.log и error_log php-fpm.

Отладка и типичные ошибки

  • 502 Bad Gateway после настройки Nginx

    • Проверьте, что php-fpm запущен и сокет /run/php-fpm/www.sock существует.
    • Убедитесь, что пользователь/группа совпадают (nginx/nginx).
  • 500 Internal Server Error

    • Проверьте права файлов и SELinux. Просмотрите журналы Nginx и PHP-FPM.
  • Ошибки SSL при получении сертификата

    • Убедитесь, что порт 80 открыт и домен указывает на сервер.
    • Для standalone Certbot временно останавливает Nginx или использует webroot.
  • Проблемы с правами записи

    • Проверьте каталоги var, public и папки кеша/логов. Дайте право записи nginx.

Рекомендации по безопасности

  • Регулярно обновляйте систему и пакеты: sudo dnf upgrade.
  • Ограничьте доступ к админ-панели по IP или используйте двухфакторную аутентификацию, если поддерживается.
  • Настройте бэкапы базы данных и файлов сайта (ежедневные дампы и архивация).
  • Ограничьте права SSH (отключите вход по паролю, используйте ключи).

Резервное копирование и восстановление (мини-SOP)

  1. Бэкап базы данных:
$ mysqldump -u uvdesk -p uvdeskdb > /root/backups/uvdeskdb-$(date +%F).sql
  1. Бэкап файлов приложения:
$ tar -czf /root/backups/uvdesk-www-$(date +%F).tar.gz /var/www/uvdesk
  1. Восстановление базы данных:
$ mysql -u uvdesk -p uvdeskdb < /root/backups/uvdeskdb-2022-01-01.sql

Важно: проверяйте целостность резервных копий и храните их в удалённом хранилище.

Роль‑ориентированные чек-листы

Sysadmin / DevOps:

  • Подключение репозиториев (Remi, EPEL, Nginx).
  • Настройка SELinux и прав доступа.
  • Настройка автопродления сертификатов.

Support Manager:

  • Создать тестовый тикет и верифицировать маршрутизацию писем.
  • Проверить шаблоны canned replies и Knowledgebase.

Developer:

  • Убедиться, что окружение APP_ENV=prod и кэш собран, если требуется.

Альтернативные подходы

  • Использовать Apache вместо Nginx — потребуется адаптация конфигураций и прав на sockets.
  • Запускать PHP в Docker-контейнерах — полезно для изоляции версий и упрощения миграций.
  • Использовать управляемую БД (RDS/Managed MySQL) для упрощения резервного копирования и HA.

Когда этот план не подходит

  • Если у вас ограниченный хостинг без root/сервиса systemd — используйте хостинг с поддержкой PHP или Docker.
  • Если вам нужна высокая доступность — настройте балансировщик и реплику БД.

Тестовые сценарии и критерии приёмки

  1. Доступность сайта по HTTPS. Ожидаемый результат: валидный сертификат, HTTP -> HTTPS редирект.
  2. Авторизация администратора. Ожидаемый результат: успешный вход.
  3. Создание тикета через email. Ожидаемый результат: письмо создаёт тикет, он видим в UI.

Советы по миграции и обновлению версий

  • Перед обновлением UVdesk экспортируйте базу и сделайте резервную копию файлов.
  • Протестируйте обновление на staging-сервере.
  • Обновления PHP: проведите тесты совместимости на локальном окружении.

Краткий план действий для развертывания в проде (roadmap)

  1. Подготовить сервер и DNS.
  2. Установить Nginx, PHP и MySQL.
  3. Настроить SELinux и права.
  4. Получить SSL и настроить автопродление.
  5. Загрузить UVdesk и завершить установку через веб.
  6. Настроить мониторинг и бэкапы.

Короткое резюме

Вы установили UVdesk на Rocky Linux 8, настроили Nginx, PHP-FPM, MySQL и SSL. Провели базовую проверку и подготовили автопродление сертификатов и рекомендации по безопасности.

Если возникнут вопросы, опишите шаг, на котором появилась ошибка, и приложите логи Nginx и PHP-FPM для ускоренного разбора.


Ключевые файлы и пути

  • Веб-корень: /var/www/uvdesk/public
  • Конфигурация Nginx: /etc/nginx/conf.d/uvdesk.conf
  • PHP-FPM pool: /etc/php-fpm.d/www.conf
  • Сертификаты: /etc/letsencrypt/live/uvdesk.example.com/
  • SELinux контексты: chcon и setsebool выше

Важно: следите за логами и делайте регулярные бэкапы.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро