Установка 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
- Установите certbot и зависимые модули:
sudo yum install certbot python2-certbot-apache- Запустите автоматическое получение сертификата:
sudo certbot --apache -d bugzilla.example.com- Проверьте автоматическое обновление сертификатов (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)
- Остановить httpd: sudo systemctl stop httpd.service
- Откатить базу из последней валидной резервной копии.
- Восстановить файлы attachments из архива.
- Перезапустить mariadb и httpd и проверить сервисы.
- Сообщить пользователям и задокументировать причину отката.
Когда способ не подходит и альтернативы
- Если у вас строгая политика безопасности и запрещён permissive SELinux — подготовьте SELinux policy или используйте контейнеризированное развертывание (Docker/Kubernetes) с заранее подготовленным образом и правилами безопасности.
- Если вы хотите минимизировать ручную работу — используйте готовые rpm-пакеты Bugzilla или дистрибутивы, где SELinux уже настроен.
- Если вы используете MySQL в управляемом сервисе (RDS или облачный эквивалент), настройте подключение через SSL и соответствующие параметры dbhost и db_mysql_ssl*
Ментальная модель и чек-лист принятия архитектурного решения
Ментальная модель: Bugzilla — это веб-приложение в стекe LAMP/LAPP. При принятии решения о развёртывании подумайте о 3 слоях:
- Слой приложений: Apache + Perl (CGI)
- Слой данных: MariaDB
- Слой хранения файлов: локальный диск или внешний объектный стор (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 для автоматизации всех шагов установки.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента