Настройте автоматический запуск Cron в Nextcloud с помощью таймера Systemd.
Проверьте режим cron в Nextcloud, восстановите работу службы systemd и таймера, а также убедитесь, что фоновые задачи запускаются после запуска системы и каждые пять минут.
Когда на странице администрирования Nextcloud отображается сообщение о том, что фоновые задачи давно не выполнялись, очистка, уведомления и другие запланированные задачи могут отставать. На сервере с systemd обычно решается проблема запуска Nextcloud cron.phpот имени учетной записи веб-сервера из службы systemd, а затем планирования этой службы с включенным таймером. В текущем руководстве администратора Nextcloud приведен пример для двух модулей; пути и учетная запись службы должны соответствовать вашей установке.
Фоновые задачи Nextcloud запускаются при cron.phpвызове соответствующей функции. Служба systemd определяет команду для выполнения; таймер запускает эту службу по расписанию. Если служба запускается вручную, но таймер так и не срабатывает, сосредоточьтесь на активации таймера. Если таймер срабатывает, но служба завершается с ошибкой, проверьте ее команду, среду PHP и права доступа.
Перед редактированием убедитесь в правильности указанного каталога Nextcloud и пользователя HTTP. В этом примере предполагается использование учетных записей /var/www/nextcloudи www-data, распространенных в Debian и Ubuntu. Учетная запись может быть wwwrun, apache, или другим пользователем в других системах. Nextcloud требует запуска заданий командной строки от имени пользователя HTTP, чтобы обеспечить согласованность прав собственности на файлы. См. документацию Nextcloud occ .
Протестируйте тот же исполняемый файл PHP и скрипт cron, которые вы планируете использовать с systemd:
sudo -u www-data /usr/bin/php -f /var/www/nextcloud/cron.php
Замените путь к учетной записи, путь к PHP и путь к Nextcloud для вашего хоста. Если команда выдает ошибку PHP, отсутствует расширение, возникла проблема с правами доступа, включен режим обслуживания или произошел сбой подключения к базе данных, сначала устраните эту проблему; таймер не сможет исправить ошибку в команде.
Откройте настройки администрирования → Основные настройки → Фоновые задания и выберите Cron , если он еще не выбран. Вы также можете выполнить эту команду из каталога Nextcloud:
cd /var/www/nextcloud
sudo -E -u www-data php occ background:cron
В Nextcloud отмечают, что выбор Cron в настройках администратора не является обязательным, если cron.phpскрипт запускается из командной строки, поскольку режим устанавливается автоматически. Явная установка Cron позволяет четко определить желаемый режим работы в производственной среде. Nextcloud рекомендует использовать системный cron для производственной среды; в документации по фоновым заданиям также описаны таймеры systemd в качестве альтернативного планировщика.
Создайте или обновите файл, /etc/systemd/system/nextcloudcron.serviceуказав следующее содержимое. Используйте полный путь к PHP, чтобы systemd не зависел от интерактивной оболочки PATH.
[Unit]
Description=Nextcloud cron.php job
[Service]
User=www-data
ExecCondition=/usr/bin/php -f /var/www/nextcloud/occ status -e
ExecStart=/usr/bin/php -f /var/www/nextcloud/cron.php
KillMode=process
Измените Userучетную запись веб-сервера и пути к соответствующим расположениям PHP и Nextcloud. Условие проверяет, работает ли экземпляр в обычном режиме, прежде чем запускать задание. Если условие не выполняется, systemd может пропустить службу; проверьте, находится ли Nextcloud в режиме обслуживания, и изучите журнал, прежде чем удалять или изменять условие. Сохраните KillMode=process, поскольку в примере Nextcloud он используется, чтобы внешние программы, запущенные cron, могли продолжать работу после завершения процесса cron. Для модуля службы раздел не требуется [Install].
Создайте /etc/systemd/system/nextcloudcron.timerрасписание. Оно запускается через пять минут после загрузки системы, а затем ожидает пять минут после каждой активации службы:
[Unit]
Description=Run Nextcloud cron.php every 5 minutes
[Timer]
OnBootSec=5 min
OnUnitActiveSec=5 min
Unit=nextcloudcron.service
[Install]
WantedBy=timers.target
Перезагрузите systemd, чтобы он считывал файлы юнитов, затем включите и запустите таймер одной командой:
sudo systemctl daemon-reload
sudo systemctl enable --now nextcloudcron.timer
Включение запускает таймер при последующих загрузках; --nowон запускается немедленно. Не включайте саму службу как повторяющийся таймер. Таймер — это единица измерения, которая относится к timers.target. В текущем руководстве Nextcloud описаны эти настройки интервала и необходимая команда активации; в более старых версиях руководства был устаревший раздел установки службы, поэтому следуйте приведенному выше примеру с текущей единицей измерения.
Проверьте состояние таймера и следующий запланированный запуск:
systemctl status nextcloudcron.timer
systemctl list-timers nextcloudcron.timer
Таймер должен показывать состояние «ожидание» или «активно», а в списке должно отображаться время следующей активации. Затем проверьте последний запуск службы:
systemctl status nextcloudcron.service
journalctl -u nextcloudcron.service --since today
Таймер может оставаться активным даже при сбое каждого запуска службы, поэтому проверьте оба модуля. Если служба отсутствует или systemd отклоняет файл, запустите команду systemd-analyze verify /etc/systemd/system/nextcloudcron.service /etc/systemd/system/nextcloudcron.timer, исправьте обнаруженную ошибку синтаксиса или пути, а затем перезагрузите systemd. Если служба завершает работу неудачно, в журнале часто указывается недопустимый путь к PHP, неправильный пользователь, сбой или ошибка выполнения Nextcloud. Если у таймера нет следующего запуска, проверьте точное имя файла таймера, запустите команду daemon-reloadи убедитесь, что он был включен с помощью команды systemctl is-enabled nextcloudcron.timer.
После следующей активации таймера снова проверьте статус фоновых заданий Nextcloud. Он должен показывать недавнее время выполнения, а не устаревшее предупреждение. Если и таймер, и служба сообщают об успешном выполнении, но страница администратора по-прежнему выглядит устаревшей, проверьте журналы экземпляра и версию PHP, используемую веб-сервером; версия PHP для командной строки может отличаться от версии для веб-сервера. Эта настройка предназначена для планирования задач systemd на обычном хосте Linux. Контейнерные и виртуальные установки могут управлять cron через собственный супервизор служб, поэтому используйте поддерживаемый платформой метод вместо добавления хост-модулей, которые не могут получить доступ к файлам контейнера.
Проверьте режим cron в Nextcloud, восстановите работу службы systemd и таймера, а также убедитесь, что фоновые задачи запускаются после запуска системы и каждые пять минут.
Включите надежную блокировку файлов в Nextcloud, выберите подходящий бэкенд Redis или Valkey и убедитесь, что предупреждение исчезает без риска одновременного изменения файлов.
Устраните распространенные ошибки сканирования Nextcloud с помощью текущих обновлений, HTTPS и HSTS, точного доверия к обратному прокси-серверу и проверок на общедоступном сервере.
Настройте Nextcloud SSE для необходимого вам хранилища, защитите ключи шифрования и измерьте влияние на передачу данных и загрузку процессора перед шифрованием существующих файлов.
Подключите поиск файлов Nextcloud к Elasticsearch, проиндексируйте содержимое документов и выберите конфигурацию, соответствующую вашим потребностям в отношении сервера и безопасности.
Настройте Nextcloud так, чтобы он удалял удалённые файлы по истечении заданного периода хранения, надёжно планировал фоновые задачи и избегал команд, очищающих корзину каждого пользователя.
Запустите функцию восстановления OCC в Nextcloud в безопасных условиях, просмотрите изменения в базе данных и выясните, почему предупреждение может оставаться.
Разрешите загрузку файлов больших размеров через браузер Nextcloud, согласовав параметры PHP, Nginx или Apache, временного хранилища и тайм-аута, а также проверьте, какое ограничение блокирует файл.
Установите ограничение на объем памяти, фактически используемый Nextcloud для PHP, перезапустите нужную службу и подтвердите значение 512 МБ в разделе «Обзор администратора».
Подключите совместимый сегмент объектного хранилища в Nextcloud, используя его бэкэнд S3, с указанием правильной конечной точки, учетных данных, области доступа и этапов проверки.