Перед каждым релизом Битрикс-проекта на продакшн нужно пройти чеклист. Вот 20 пунктов которые спасут от инцидентов и ночных звонков.
1. Версионирование и контроль версий
# Убедиться что все изменения в git
git status
git diff --stat origin/main
# Создать тег релиза
git tag -a v2.3.1 -m "Release 2.3.1: new checkout flow"
git push origin v2.3.1
2. Бэкап перед деплоем
# Бэкап базы данных
mysqldump -u USER -pPASSWORD DB_NAME | gzip > /backup/db_$(date +%Y%m%d_%H%M%S).sql.gz
# Бэкап файлов
tar -czf /backup/files_$(date +%Y%m%d_%H%M%S).tar.gz /var/www/html/ --exclude=/var/www/html/bitrix/cache
3. Режим технических работ
// /local/php_interface/init.php
if (!defined('ADMIN_SECTION') && !defined('MAINTENANCE_BYPASS')) {
define('MAINTENANCE_MODE', true);
}
// В .htaccess на время деплоя
// ErrorDocument 503 /maintenance.html
// RewriteRule ^(?!maintenance\.html).*$ /maintenance.html [R=503,L]
4. Деплой файлов
# Rsync только нужных директорий
rsync -avz --delete \
--exclude='.git' \
--exclude='bitrix/cache/' \
--exclude='upload/' \
--exclude='bitrix/backup/' \
./local/ user@server:/var/www/html/local/
# Или через git pull
ssh user@server "cd /var/www/html && git pull origin main"
5. Миграции базы данных
// Запуск SQL-миграций в порядке версий
$migrations = glob(__DIR__ . '/migrations/*.sql');
sort($migrations);
foreach ($migrations as $file) {
$version = basename($file, '.sql');
if (!isMigrationApplied($version)) {
$sql = file_get_contents($file);
$connection->queryExecute($sql);
markMigrationApplied($version);
echo "Applied: {$version}" . PHP_EOL;
}
}
6. Сброс кэша Битрикс
// Полный сброс кэша
\Bitrix\Main\Application::getInstance()->getCache()->clean();
// Или через CLI
php -r "
define('NO_KEEP_STATISTIC', true);
define('NOT_CHECK_PERMISSIONS', true);
\$_SERVER['DOCUMENT_ROOT'] = '/var/www/html';
require '/var/www/html/bitrix/modules/main/include/prolog_before.php';
BXClearCache(true);
echo 'Cache cleared' . PHP_EOL;
"
7. Проверка прав доступа
find /var/www/html/local -type f -name "*.php" -not -perm 644 -exec chmod 644 {} \;
find /var/www/html/local -type d -not -perm 755 -exec chmod 755 {} \;
# Проверить владельца
chown -R www-data:www-data /var/www/html/upload/
chown -R www-data:www-data /var/www/html/bitrix/cache/
8. Проверка OPcache
# Сброс OPcache после деплоя
php -r "opcache_reset();"
# Или через web (если есть endpoint)
curl -s https://example.ru/admin/opcache-reset.php?secret=TOKEN
9. Проверка ошибок PHP
tail -n 50 /var/log/php/error.log
tail -n 50 /var/www/html/bitrix/logs/exception.log
10. Функциональное тестирование
- Главная страница открывается (200 OK)
- Авторизация работает
- Корзина и оформление заказа работают
- Поиск работает
- Административная панель открывается
- Проверить мобильную версию
11-20. Остальные пункты чеклиста
- ✅ HTTPS-редирект работает
- ✅ Sitemap доступен по /sitemap.xml
- ✅ robots.txt корректен (нет Disallow: /)
- ✅ CDN обновил кэш статики
- ✅ Мониторинг не показывает ошибок (Zabbix/Telegram)
- ✅ Время ответа сервера < 500ms
- ✅ Базы данных: нет долгих запросов (SHOW PROCESSLIST)
- ✅ Агенты Битрикс выполняются
- ✅ Email-уведомления отправляются
- ✅ Бэкап создался успешно
Автоматизация через скрипт
#!/bin/bash
set -e
echo "=== Starting deploy ==="
cd /var/www/html
# Backup
mysqldump -u $DB_USER -p$DB_PASS $DB_NAME | gzip > /backup/pre-deploy.sql.gz
# Pull
git pull origin main
# Clear cache
php artisan bitrix:cache:clear
# Check errors
if grep -q "Fatal error" /var/log/php/error.log; then
echo "FATAL errors detected! Rolling back..."
git revert HEAD
exit 1
fi
echo "=== Deploy successful ==="
Итог
Чеклист деплоя — это не бюрократия, а страховка от инцидентов. Автоматизируйте что можно через скрипты и CI/CD, но финальную проверку функциональности делайте вручную — каждый раз.
