Главная
» Как сделать
»
Безопасно выведите из зависшего режима обслуживания Nextcloud с помощью OCC.
Безопасно выведите из зависшего режима обслуживания Nextcloud с помощью OCC.
Если после обновления или выполнения задачи обслуживания Nextcloud по-прежнему отображает «режим обслуживания», сначала проверьте, завершено ли обновление базы данных. Если occ statusотображается сообщение об ошибке needsDbUpgrade: false, запустите программу occ maintenance:mode --offот имени пользователя веб-сервера в соответствующей установке Nextcloud; если отображается сообщение об ошибке true, завершите процесс occ upgradeперед повторным открытием сайта.
Отключение этого флага восстанавливает возможность входа в систему, но не исправляет неудачное обновление. Цель состоит в том, чтобы вернуть экземпляр в онлайн-режим с подтвержденным состоянием флага обслуживания и обновления.
1. Перед изменением состояния экземпляра проверьте его состояние.
Подключитесь к хосту или контейнеру, обслуживающему соответствующий URL-адрес Nextcloud. При ручной установке в Linux перейдите в каталог Nextcloud (часто это /var/www/nextcloud) и проверьте статус от имени пользователя HTTP:
cd /var/www/nextcloud
sudo -E -u www-data php occ status
Найдите значения maintenanceи needsDbUpgrade. Типичное состояние, при котором можно безопасно отключить режим обслуживания, — maintenance: trueэто needsDbUpgrade: false. Если значение параметра maintenance уже равно false, браузер может отображать устаревшую страницу или обращаться к другому бэкэнду. Если needsDbUpgradeзначение параметра true, пока не отключайте режим обслуживания.
В приведенном примере состояния показано, что режим обслуживания включен, но обновление базы данных не ожидает завершения, — в этом состоянии обычно целесообразно отключить режим обслуживания.
Для работы Nextcloud OCC от имени пользователя HTTP необходимо, чтобы права собственности на файлы оставались неизменными. В Debian или Ubuntu это обычно www-data; в других дистрибутивах могут использоваться apache, http, или wwwrun. Перед заменой пользователя в команде проверьте учетную запись службы вашей установки. В текущей документации Nextcloud OCC перечислены различия в пользователях и команда статуса.
2. Отключите режим технического обслуживания с помощью OCC.
Для установки архива или пакета выполните команду из каталога, содержащего нужный occскрипт:
Команда должна сообщать, что режим обслуживания отключен. Эта --offопция изменяет состояние обслуживания; она не выполняет миграции, не исправляет права доступа и не отменяет прерванную замену файлов.
Это команда OCC для стандартной установки после завершения обновления, когда команда выполняется для активного каталога Nextcloud.
Используйте оболочку, соответствующую вашей установке. Для официального образа Docker Nextcloud в документации проекта описаны как примеры использования docker execDocker Compose, так и примеры использования Docker Compose. Замените имя контейнера или службы в примере на ваше:
# Docker Compose; "app" is an example service name
docker compose exec --user www-data app php occ maintenance:mode --off
# Docker; replace CONTAINER_ID with the Nextcloud container
docker exec -it --user www-data CONTAINER_ID php occ maintenance:mode --off
В Docker Compose запустите OCC внутри сервиса Nextcloud от имени пользователя www-data; используйте имя вашего сервиса Compose вместо примера имени app.
Для Snap-пакета Nextcloud используйте его оболочку OCC на стороне хоста, а не переходите во внутренние каталоги Snap-пакета:
3. Если обновление еще не завершено, сначала завершите его.
Когда needsDbUpgrade: trueNextcloud выдает сообщение о состоянии, это означает, что миграция кода и базы данных не синхронизирована. Это обычно происходит после того, как программа обновления заменила код, но этап миграции не завершился. В таком состоянии может быть доступен ограниченный набор команд OCC, а режим обслуживания может быть намеренно оставлен включенным, чтобы пользователи не могли участвовать в обновлении.
Используйте путь обновления, соответствующий вашему типу установки, и перед продолжением просмотрите сообщение об ошибке, появившееся в процессе обновления. Для стандартной установки на основе архива, после подтверждения наличия нужной версии кода Nextcloud и создания новой резервной копии базы данных и файлов/конфигурации (если у вас ее еще нет), выполните следующую команду:
sudo -E -u www-data php occ upgrade
Дождитесь завершения выполнения команды и устранения всех выявленных ошибок. Не переключайте режим обслуживания повторно, чтобы обойти ошибку миграции. В документации Nextcloud по обновлению поясняется, что миграция базы данных происходит после замены серверного кода, и рекомендуется создать резервную копию перед обновлением. Для Docker, Snap и управляемых пакетов могут существовать собственные процедуры обновления; используйте эти инструкции, если они отличаются от примера с архивом.
После успешного завершения обновления и исчезновения сообщения о незавершенном обновлении базы данных выполните указанную maintenance:mode --offвыше команду. Избегайте редактирования config.phpили использования прямого обновления базы данных в качестве ярлыка. Если OCC не может записать параметр, убедитесь, что вы выбрали правильную установку и пользователя HTTP, и проверьте наличие ошибок в политике конфигурации только для чтения или в разрешениях файловой системы, прежде чем изменять разрешения.
4. Проверьте флаг и работоспособность сайта.
Повторите проверку состояния, используя тот же путь установки, контейнер и пользователя:
sudo -E -u www-data php occ status
Подтвердите оба maintenance: falseпараметра needsDbUpgrade: false. В Docker или Snap повторите проверку через ту же оболочку, которая использовалась для отключения флага. Команда состояния Nextcloud документирует эти поля; ее машиночитаемый вид — occ status --output=json_pretty.
Успешная проверка показывает, что режим обслуживания отключен и нет ожидающих обновлений базы данных; этот пример не является результатом работы действующего сервера.
Затем перезагрузите сайт в новой вкладке браузера и проверьте обычный вход в систему и отображение списка файлов. Nextcloud отмечает, что пользователям, которые были авторизованы до перехода в режим технического обслуживания, может потребоваться обновить браузер после возобновления работы сервера. Если OCC сообщает о ложном сообщении о техническом обслуживании, но на сайте по-прежнему отображается страница технического обслуживания, убедитесь, что имя хоста или балансировщик нагрузки перенаправляют на тот же экземпляр, который вы изменили; при наличии нескольких контейнеров или узлов другой бэкэнд может все еще находиться в режиме технического обслуживания.
Таким образом, успешное исправление — это не просто ответ команды «отключено»: статус OCC должен показывать, что оба флага сброшены, а предполагаемый публичный URL-адрес должен обслуживать работающий экземпляр. Если флаг обновления остается в силе или команда миграции завершается с ошибкой, не допускайте пользователей к обновлению и устраните ошибку обновления, прежде чем снова открывать Nextcloud.