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

Установка Bugzilla 5.0 на CentOS 7 — пошаговое руководство

• 8 min read • DevOps • Обновлено 28 Nov 2025
Bugzilla 5.0 на CentOS 7 — установка и настройка
Bugzilla 5.0 на CentOS 7 — установка и настройка

Коротко о терминах

  • Bugzilla — веб-приложение для отслеживания ошибок и управления задачами. Одной строкой: трекер багов с гибкими правами и workflow.
  • SELinux — механизм контроля доступа (MAC) в ядре Linux. В данном руководстве мы переводим SELinux в permissive для совместимости с Bugzilla 5.0.

Оглавление

  • Предварительные требования
  • Настройка доступа в Интернет и прокси
  • SELinux: режим permissive и альтернативы
  • Учетная запись установки и дополнительные репозитории
  • Установка Apache с mod_ssl и mod_perl
  • Настройка и открытие портов в firewall
  • Установка MariaDB и базовые настройки
  • Подготовка окружения Perl и необходимых пакетов
  • Скачивание, установка и первоначальная настройка Bugzilla
  • Конфигурация Apache для Bugzilla
  • Проверка работоспособности
  • Безопасность и hardening
  • Резервное копирование и откат
  • Тесты приёмки и чек-листы по ролям
  • Когда этот способ не подходит и альтернативы
  • Факто-бокс, матрица рисков и заметки по GDPR
  • Краткое резюме

Предварительные требования

  • Минимальная установка CentOS 7 с последними обновлениями.
  • Настроенные IP-адрес и hostname.
  • Доступ в интернет с машины, где разворачивается Bugzilla. Если интернет недоступен напрямую — см. раздел «Настройка доступа в Интернет и прокси».
  • Локальный пользователь с правами sudo (в примерах — пользователь installer).

Настройка доступа в Интернет и прокси

Если ваша сеть требует прокси, настройте yum и окружение командной строки.

Добавьте в /etc/yum.conf строки (отредактируйте под вашу инфраструктуру):

# The proxy server - proxy server:port
proxy=http://192.168.178.1:8080

# The account details for yum connections
# proxy_username=yum-user
# proxy_password=qwerty

Перед выполнением команд, которые требуют сетевого доступа, экспортируйте переменные окружения:

export http_proxy=http://192.168.178.1:8080/
export https_proxy=http://192.168.178.1:8080/

Важно: хранение паролей в открытом виде в конфиге повышает риск компрометации. По возможности используйте безопасные механизмы (ограничение доступа к файлам, VPN).

SELinux: перевод в permissive

SELinux повышает безопасность, но без специально подготовленного rpm-пакета Bugzilla 5.0 может не работать. Для упрощения установки переводим SELinux в permissive (он по-прежнему будет логировать нарушения, но не блокировать их).

Измените конфигурацию

sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/g' /etc/selinux/config

Файл будет содержать примерно:

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=permissive
# SELINUXTYPE= can take one of three two values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected.
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

После редактирования перезагрузите машину.

Important: перевод SELinux в permissive снижает защиту. На продуктивных серверах лучше подготовить SELinux-модули или использовать rpm-пакет Bugzilla, который настраивает контексты.

Альтернатива: подготовка SELinux политики

Если вы хотите оставаться в enforcing, соберите и примените политику SELinux, которая разрешает Apache/PHP/Perl доступ к нужным каталогам и сокетам. Это требует больше усилий, но повышает безопасность.

Учетная запись для установки

Во всём руководстве команды по умолчанию выполняются от имени пользователя installer, у которого есть права sudo. Когда требуются root-привилегии, будет показан root-промпт (#).

Дополнительные репозитории

Bugzilla и его зависимости потребуют пакетов из EPEL.

sudo yum install deltarpm epel-release
sudo yum update

Примите GPG-ключ EPEL при первом запросе.

Установка Apache с mod_ssl и mod_perl

sudo yum install httpd httpd-devel mod_ssl mod_perl mod_perl-devel

Это установит Apache, mod_ssl, mod_perl и зависимости.

Запуск и автозапуск httpd

CentOS 7 использует systemd.

sudo systemctl start httpd.service
sudo systemctl status httpd.service
sudo systemctl enable httpd.service

Ожидаемый фрагмент вывода:

httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled)
Active: active (running) since ...
Main PID: 11930 (/usr/sbin/httpd)

Открытие порта 80 в FirewallD

sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
sudo firewall-cmd --reload

Тестирование Apache

Откройте в браузере http://ip-of-your-server/ и убедитесь, что отображается тестовая страница Apache.

Установка MariaDB (вместо MySQL)

CentOS 7 поставляется с MariaDB.

sudo yum install mariadb-server mariadb mariadb-devel php-mysql

Запустите и включите автозапуск сервиса:

sudo systemctl start mariadb.service
sudo systemctl status mariadb.service
sudo systemctl enable mariadb.service

Установка пароля root для MariaDB

mysql -u root

В MariaDB-приглашении выполните (замените myrootpassword на свой):

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('myrootpassword');
\q

Проверка входа:

mysql -u root -p
# Enter password: myrootpassword

Настройка max_allowed_packet

Bugzilla требует достаточного размера пакета для загрузки вложений. Установим 4M.

Добавьте в ‘/etc/my.cnf’ под секцией [mysqld]:

# Bugzilla
# maximum allowed size of an attachment upload
#change this if you need more!
max_allowed_packet=4M

Пример полного файла см. ниже в оригинальной секции. После изменений перезапустите MariaDB:

sudo systemctl restart mariadb.service

Установка дополнительных пакетов и зависимостей Perl

Bugzilla требует множества Perl-модулей и библиотек. НЕЛЬЗЯ устанавливать пакет perl-homedir — он сломает установку.

sudo yum install gcc gcc-c++ graphviz graphviz-devel patchutils gd gd-devel wget perl* -x perl-homedir

Примечание: команда может установить около 1000+ пакетов в зависимости от уже установленных.

Создание базы данных для Bugzilla

Войдите в MariaDB как root:

mysql -u root -p
# Enter password: myrootpassword

Выполните команды (замените bugsuserpassword):

create database bugs;
grant all on bugs.* to bugs@localhost identified by 'bugsuserpassword';
\q

Скачивание и распаковка Bugzilla

Скачиваем стабильный релиз 5.0 с FTP Mozilla.

cd ~
wget 'https://ftp.mozilla.org/pub/mozilla.org/webtools/bugzilla-5.0.tar.gz'

Распакуйте:

tar -xzvf bugzilla-5.0.tar.gz

Скопируйте в директорию веб-сервера:

cd ~
sudo cp -R ./bugzilla-5.0/ /var/www/html/bugzilla/

Финальная настройка через скрипт установки Bugzilla

Откройте root-оболочку:

sudo su

Перейдите в каталог Bugzilla и запустите проверку окружения:

cd /var/www/html/bugzilla
./checksetup.pl

Обычно скрипт укажет недостающие Perl-модули. Чтобы автоматически установить все модули (required и optional), выполните:

/usr/bin/perl install-module.pl --all

После установки модулей снова запустите:

./checksetup.pl

Если всё в порядке, скрипт попросит отредактировать ./localconfig — укажите параметры подключения к базе и другие настройки.

Пример localconfig (убраны комментарии, замените пароли и секрет):

$create_htaccess = 1;
$webservergroup = 'apache';
$use_suexec = 0;
$db_driver = 'mysql';
$db_host = 'localhost';
$db_name = 'bugs';
$db_user = 'bugs';
$db_pass = 'bugsuserpassword';
$db_port = 0;
$db_sock = '';
$db_check = 1;
$db_mysql_ssl_ca_file = '';
$db_mysql_ssl_ca_path = '';
$db_mysql_ssl_client_cert = '';
$db_mysql_ssl_client_key = '';
$index_html = 0;
$interdiffbin = '/bin/interdiff';
$diffpath = '/bin';
$site_wide_secret = 'ifKuihguW8nlxLcxeNU4whHzFbxDIGWSvtR6S7Ul38cFQn004YDcVzuBJfnF8M9X';

После сохранения запустите checksetup.pl ещё раз — он создаст таблицы, каталоги и завершит установку. В процессе вы будете приглашены создать администратора Bugzilla.

Пример диалога создания администратора (заполните своими данными):

Enter the e-mail address of the administrator:
[email protected]
Enter the real name of the administrator: Имя Админа
Enter a password for the administrator account: adminpassword
Please retype the password to verify: adminpassword

После успешного завершения вы увидите сообщение о создании тестового продукта и завершении checksetup.pl.

Корректировка .htaccess

Скрипт установки создаёт .htaccess. Мы комментируем строку Options -Indexes:

sed -i 's/^Options -Indexes$/#Options -Indexes/g' ./.htaccess

Конфигурация Apache для Bugzilla

Создайте файл /etc/httpd/conf.d/bugzilla.conf со следующим содержимым (пример):

#/etc/httpd/conf.d/bugzilla.conf

DocumentRoot /var/www/html/bugzilla/



AddHandler cgi-script .cgi
Options +Indexes +ExecCGI
DirectoryIndex index.cgi
AllowOverride Limit FileInfo Indexes

Перезапустите Apache:

systemctl restart httpd.service

Затем выйдите из root-сессии, если она вам больше не нужна:

exit

Тестирование установки в браузере

Откройте http://ip-of-your-server/ — вы должны увидеть интерфейс Bugzilla. Войдите под учетной записью администратора, которую создали ранее.

Пример входа, использованный в How-To:

  • Email: [email protected]
  • Password: adminpassword

Поздравляю — у вас работающее локальное окружение Bugzilla 5.0 на CentOS 7.

Безопасность и hardening

Ниже — рекомендуемые шаги для повышения безопасности в продуктиве.

  • Включите SELinux в enforcing после настройки правил и проверки доступа.
  • Настройте HTTPS (см. раздел ниже про SSL).
  • Ограничьте доступ к административному интерфейсу через firewall или VPN.
  • Храните пароли БД и секреты в защищённом хранилище (Vault) или хотя бы в файле с правами 600.
  • Обновляйте систему и зависимости регулярно.

Настройка HTTPS с Let’s Encrypt

  1. Установите certbot и зависимые модули:
sudo yum install certbot python2-certbot-apache
  1. Запустите автоматическое получение сертификата:
sudo certbot --apache -d bugzilla.example.com
  1. Проверьте автоматическое обновление сертификатов (systemd timer или cron).

Important: для использования Let’s Encrypt нужен корректный публичный DNS и открытые порты 80/443.

Резервное копирование и откат

Регулярно делайте резервные копии базы данных и каталога данных Bugzilla (/var/www/html/bugzilla/data и attachments).

Пример бэкапа базы:

mysqldump -u root -p bugs > bugs-backup-$(date +%F).sql

Бэкап файлов:

sudo tar -czf bugzilla-data-backup-$(date +%F).tgz /var/www/html/bugzilla/data /var/www/html/bugzilla/attachment.cgi

Откат базы:

mysql -u root -p bugs < bugs-backup-YYYY-MM-DD.sql

Важно: тестируйте процесс восстановления на отдельном стенде.

Критерии приёмки

  • Веб-интерфейс Bugzilla доступен по http(s) и отображает авторизацию.
  • Администратор создан и может зайти в «Parameters».
  • Созданная БД bugs содержит таблицы Bugzilla.
  • Загрузка базовых вложений работает.
  • Источники логов (apache, mariadb, bugzilla) не показывают критичных ошибок.

Чек-листы по ролям

Администратор сервера:

  • Убедиться в наличии и безопасности root-учётной записи.
  • Контролировать автозапуск httpd и mariadb.
  • Настроить бэкапы и мониторинг.

DBA:

  • Настроить my.cnf (max_allowed_packet, innodb_buffer_pool_size при необходимости).
  • Планировать мониторинг slow-query и резервные копии.

DevOps/Инфраструктура:

  • Подготовить SSL, DNS и firewall.
  • Настроить CI/CD для обновлений Bugzilla.

Разработчик/QA:

  • Протестировать реакцию Bugzilla на прикрепление файлов, создание багов, импорт/экспорт.

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

  • Создать баг, присвоить приоритет, назначить исполнителя.
  • Загрузить вложение размером, близким к configured max_allowed_packet.
  • Проверить работу поиска по багам.
  • Импортировать примерный дамп багов и проверить целостность.

План отката (runbook)

  1. Остановить httpd: sudo systemctl stop httpd.service
  2. Откатить базу из последней валидной резервной копии.
  3. Восстановить файлы attachments из архива.
  4. Перезапустить mariadb и httpd и проверить сервисы.
  5. Сообщить пользователям и задокументировать причину отката.

Когда способ не подходит и альтернативы

  • Если у вас строгая политика безопасности и запрещён permissive SELinux — подготовьте SELinux policy или используйте контейнеризированное развертывание (Docker/Kubernetes) с заранее подготовленным образом и правилами безопасности.
  • Если вы хотите минимизировать ручную работу — используйте готовые rpm-пакеты Bugzilla или дистрибутивы, где SELinux уже настроен.
  • Если вы используете MySQL в управляемом сервисе (RDS или облачный эквивалент), настройте подключение через SSL и соответствующие параметры dbhost и db_mysql_ssl*

Ментальная модель и чек-лист принятия архитектурного решения

Ментальная модель: Bugzilla — это веб-приложение в стекe LAMP/LAPP. При принятии решения о развёртывании подумайте о 3 слоях:

  1. Слой приложений: Apache + Perl (CGI)
  2. Слой данных: MariaDB
  3. Слой хранения файлов: локальный диск или внешний объектный стор (S3) для вложений

Если ваша команда планирует высокую нагрузку, делегируйте вложения на отдельный хранилище и масштабируйте БД.

Факто-бокс

  • Минимальная версия Bugzilla в руководстве: 5.0
  • OS: CentOS 7
  • Порты: 80 (HTTP), 443 (HTTPS)
  • Рекомендуемый max_allowed_packet: 4M
  • Важный файл конфигурации Bugzilla: ./localconfig
  • Веб-каталог по умолчанию: /var/www/html/bugzilla

Матрица рисков и меры смягчения

  • SELinux в permissive — риск: потеря части защиты. Мера: подготовить SELinux policy и вернуться к enforcing.
  • Открытые HTTP-порты без HTTPS — риск: перехват данных. Мера: настроить HTTPS и HSTS.
  • Хранение паролей в текстовых файлах — риск: утечка. Мера: использовать хранилище секретов.
  • Отсутствие бэкапов — риск: потеря данных. Мера: автоматизировать бэкап и тестировать восстановление.

Примечания по GDPR и приватности

Bugzilla хранит персональные данные (email, имена). Для соответствия требованиям:

  • Ограничьте доступ по ролям.
  • Храните минимально необходимую личную информацию.
  • Документируйте политики удаления данных и отклика на запросы субъектов данных.
  • Шифруйте передачу данных (HTTPS).

Производительность и тонкая настройка

  • При увеличении нагрузки настройте innodb_buffer_pool_size в MariaDB.
  • Для большого числа вложений рассмотрите хранение вложений на отдельном разделе с быстрыми дисками или на объектном хранилище.
  • Настройте кеширование на уровне веб-сервера и CDN для статичных ресурсов.

Совместимость и миграция

  • Bugzilla 5.0 работает с MariaDB 5.5 и новее; проверяйте совместимость при апгрейде СУБД.
  • При миграции с MySQL используйте стандартный mysqldump и проверяйте кодировку данных (utf8/utf8mb4).

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

Вы выполнили все шаги для установки Bugzilla 5.0 на CentOS 7: подготовили систему, установили Apache и MariaDB, задали настройки базы, установили зависимости Perl и запустили инсталляционный скрипт Bugzilla. Для перехода в продуктив настройте HTTPS, SELinux в enforcing после подготовки правил и организуйте регулярное резервное копирование.


Если нужно, могу сгенерировать готовый systemd unit для автоматического ревью бэкапов, шаблоны конфигурации Nginx в качестве обратного прокси, или Playbook Ansible для автоматизации всех шагов установки.

Поделиться: 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 быстро