Команды обновлений (update)
Стандартные команды Битрикс для обновления системы: языковые пакеты, модули и версии.
update:languages
Обновляет языковые файлы для указанных языков.
Синтаксис
bash
php bitrix.php update:languages [опции]Опции
--languages=<коды>или-l- список кодов языков через запятую
Примеры использования
bash
# Обновление всех языковых файлов
php bitrix.php update:languages
# Обновление конкретных языков
php bitrix.php update:languages -l ru
php bitrix.php update:languages --languages=ru,en,de
# С подробным выводом
php bitrix.php update:languages -vupdate:modules
Обновляет модули системы.
Синтаксис
bash
php bitrix.php update:modules [опции]Опции
--modules=<список>или-m- список модулей через запятую--import=<файл>или-i- JSON-файл с версиями модулей (экспертный режим)
Примеры использования
bash
# Обновление всех модулей
php bitrix.php update:modules
# Обновление конкретных модулей
php bitrix.php update:modules -m main
php bitrix.php update:modules --modules=main,iblock,catalog
# Импорт версий модулей из JSON (экспертный режим)
php bitrix.php update:modules -i updates.json
php bitrix.php update:modules --import=updates.json
# С подробным выводом
php bitrix.php update:modules -vФормат JSON для импорта
json
{
"main": "23.0.0",
"iblock": "21.0.0",
"catalog": "23.5.0",
"sale": "23.0.0"
}update:versions
Понижает версии модулей в базе данных согласно файлу JSON (используется для отката).
Синтаксис
bash
php bitrix.php update:versions <versions>Аргументы
versions- путь к JSON-файлу с версиями модулей
Примеры использования
bash
# Обновление версий из файла
php bitrix.php update:versions versions.json
# Откат к предыдущим версиям
php bitrix.php update:versions /backup/versions_before_update.jsonФормат JSON-файла
json
{
"main": "22.0.0",
"iblock": "20.5.0",
"catalog": "22.0.0"
}Использование
Регулярное обновление системы
bash
#!/bin/bash
# Еженедельное обновление системы
cd /var/www/bitrix
LOG_FILE="/var/log/bitrix-updates-$(date +%Y%m%d).log"
{
echo "=== Начало обновления: $(date) ==="
# Создать резервную копию
echo "Создание резервной копии..."
php bitrix.php backup:create --name="before_update_$(date +%Y%m%d)"
# Обновить языковые файлы
echo "Обновление языковых файлов..."
php bitrix.php update:languages
# Обновить модули
echo "Обновление модулей..."
php bitrix.php update:modules
# Очистить кеш
echo "Очистка кеша..."
php bitrix.php cache:clear
echo "=== Завершено: $(date) ==="
} >> "$LOG_FILE" 2>&1
# Отправить отчет
mail -s "Bitrix Update Report" admin@example.com < "$LOG_FILE"Безопасное обновление с проверками
bash
#!/bin/bash
# Обновление с проверками и откатом при ошибках
cd /var/www/bitrix
# Сохранить текущие версии модулей
echo "Сохранение текущих версий..."
php -r '
$conn = Bitrix\Main\Application::getConnection();
$result = $conn->query("SELECT ID, VERSION FROM b_module");
$versions = [];
while ($row = $result->fetch()) {
$versions[$row["ID"]] = $row["VERSION"];
}
file_put_contents("/tmp/versions_before.json", json_encode($versions, JSON_PRETTY_PRINT));
'
# Создать бэкап
php bitrix.php backup:create --name="before_update"
# Обновить модули
if php bitrix.php update:modules; then
echo "✓ Модули обновлены успешно"
# Проверить работоспособность
if curl -s -o /dev/null -w "%{http_code}" http://localhost | grep -q "200"; then
echo "✓ Сайт работает"
else
echo "✗ Сайт недоступен, откат изменений"
php bitrix.php update:versions /tmp/versions_before.json
php bitrix.php cache:clear
fi
else
echo "✗ Ошибка обновления модулей"
exit 1
fiОбновление конкретных модулей
bash
#!/bin/bash
# Обновление только критичных модулей
CRITICAL_MODULES=("main" "iblock" "catalog" "sale")
cd /var/www/bitrix
for module in "${CRITICAL_MODULES[@]}"; do
echo "Обновление модуля: $module"
if php bitrix.php update:modules --modules="$module"; then
echo "✓ $module обновлен"
else
echo "✗ Ошибка обновления $module"
fi
doneПродвинутые сценарии
Staged обновления (поэтапные)
bash
#!/bin/bash
# Поэтапное обновление с проверками между этапами
cd /var/www/bitrix
STAGES=(
"main"
"iblock,catalog"
"sale,crm"
)
for stage in "${STAGES[@]}"; do
echo "=== Этап: $stage ==="
# Сохранить версии
php -r "
\$conn = Bitrix\Main\Application::getConnection();
\$result = \$conn->query('SELECT ID, VERSION FROM b_module');
\$versions = [];
while (\$row = \$result->fetch()) {
\$versions[\$row['ID']] = \$row['VERSION'];
}
file_put_contents('/tmp/versions_stage_$stage.json', json_encode(\$versions));
"
# Обновить
if php bitrix.php update:modules --modules="$stage"; then
echo "✓ Этап $stage завершен"
# Проверить сайт
sleep 5
if ! curl -s http://localhost > /dev/null; then
echo "✗ Сайт недоступен, откат этапа"
php bitrix.php update:versions "/tmp/versions_stage_$stage.json"
exit 1
fi
else
echo "✗ Ошибка на этапе $stage"
exit 1
fi
echo "Пауза 30 секунд перед следующим этапом..."
sleep 30
done
echo "Все этапы завершены успешно"Синхронизация версий между окружениями
bash
#!/bin/bash
# Экспорт версий с продакшена для dev/staging
ENV="${1:-production}"
cd /var/www/bitrix
# Экспортировать текущие версии
php -r '
$conn = Bitrix\Main\Application::getConnection();
$result = $conn->query("SELECT ID, VERSION FROM b_module");
$versions = [];
while ($row = $result->fetch()) {
$versions[$row["ID"]] = $row["VERSION"];
}
file_put_contents("/tmp/versions_'$ENV'.json", json_encode($versions, JSON_PRETTY_PRINT));
'
echo "Версии модулей экспортированы: /tmp/versions_$ENV.json"
# Скопировать на другие окружения
if [ "$ENV" = "production" ]; then
scp /tmp/versions_production.json staging:/tmp/
scp /tmp/versions_production.json dev:/tmp/
fiАвтоматический откат при ошибках
bash
#!/bin/bash
# Обновление с автоматическим откатом
cd /var/www/bitrix
SNAPSHOT_FILE="/var/backup/versions_snapshot_$(date +%Y%m%d_%H%M%S).json"
# Создать снимок текущих версий
php -r "
\$conn = Bitrix\Main\Application::getConnection();
\$result = \$conn->query('SELECT ID, VERSION FROM b_module');
\$versions = [];
while (\$row = \$result->fetch()) {
\$versions[\$row['ID']] = \$row['VERSION'];
}
file_put_contents('$SNAPSHOT_FILE', json_encode(\$versions, JSON_PRETTY_PRINT));
"
# Функция отката
rollback() {
echo "Выполнение отката..."
php bitrix.php update:versions "$SNAPSHOT_FILE"
php bitrix.php cache:clear
echo "Откат завершен"
}
# Установить trap для отката при ошибке
trap rollback ERR
# Обновить модули
php bitrix.php update:modules -v
# Проверить работоспособность
if ! curl -s -f http://localhost > /dev/null; then
echo "Сайт недоступен после обновления"
exit 1
fi
echo "Обновление успешно завершено"Мониторинг обновлений
Проверка доступных обновлений
bash
#!/bin/bash
# Ежедневная проверка наличия обновлений
cd /var/www/bitrix
# Проверить обновления (требует доступа к update.bitrix.ru)
UPDATES_AVAILABLE=$(php -r "
require_once $_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include.php';
CModule::IncludeModule('main');
\$updates = CUpdateClient::GetUpdatesList();
echo count(\$updates);
")
if [ "$UPDATES_AVAILABLE" -gt 0 ]; then
echo "Доступно обновлений: $UPDATES_AVAILABLE" | \
mail -s "Bitrix Updates Available" admin@example.com
fiИстория обновлений
bash
#!/bin/bash
# Ведение журнала обновлений
cd /var/www/bitrix
HISTORY_FILE="/var/log/bitrix-update-history.log"
# Получить текущие версии
php -r '
$conn = Bitrix\Main\Application::getConnection();
$result = $conn->query("SELECT ID, VERSION FROM b_module ORDER BY ID");
echo "=== ".date("Y-m-d H:i:s")." ===\n";
while ($row = $result->fetch()) {
echo sprintf("%-30s %s\n", $row["ID"], $row["VERSION"]);
}
echo "\n";
' >> "$HISTORY_FILE"Troubleshooting
Обновление не работает
Проблема: Модули не обновляются
Решения:
- Проверьте подключение к update.bitrix.ru
- Проверьте лицензионный ключ
- Проверьте права доступа к файлам
- Проверьте логи обновлений
Ошибка при откате
Проблема: Не удается откатить версии
Решения:
- Проверьте формат JSON-файла
- Убедитесь, что файл версий существует
- Проверьте права доступа к базе данных
- Восстановите из резервной копии
Конфликт зависимостей
Проблема: Ошибка зависимостей при обновлении
Решения:
- Обновляйте модули в правильном порядке (сначала main)
- Обновите все зависимые модули
- Используйте опцию
--modules=allдля обновления всех сразу
Полезные советы
💡 Создавайте бэкапы - всегда делайте резервную копию перед обновлением
💡 Тестируйте на staging - проверяйте обновления на тестовом окружении
💡 Сохраняйте версии - ведите журнал версий модулей
💡 Автоматизируйте откат - подготовьте скрипты для быстрого отката
💡 Мониторьте - отслеживайте доступные обновления регулярно
💡 Планируйте - обновляйте систему в периоды низкой нагрузки
Смотрите также
- Команды модулей - установка и удаление модулей
- Команды резервного копирования - создание бэкапов
- Примеры cron - автоматизация обновлений
- Официальная документация Битрикс по обновлениям