Надежное выполнение фоновых задач ownCloud с помощью таймера Systemd.

Если на странице администратора ownCloud отображается сообщение о том, что фоновые задачи не выполняются, очистка по очереди и другие запланированные задачи могут выполняться с задержкой до тех пор, пока кто-нибудь не посетит сайт. На сервере Linux, управляемом systemd, настройте режим фоновых задач ownCloud для Cron и используйте таймер для запуска occ system:cronот имени учетной записи веб-сервера. В текущей документации ownCloud Server рекомендуется использовать системный cron для регулярной фоновой работы, и в частности, отмечаются таймеры systemd как еще один способ планирования команд.

Данное руководство предназначено для ownCloud Server Classic, установленного непосредственно на хосте Linux. Оно не применимо к ownCloud Infinite Scale, который имеет другую архитектуру, или к официальному образу ownCloud Docker, который уже использует cron внутри. Для Docker следуйте описанным в образе настройкам, вместо создания второго таймера на хосте. См. текущую документацию по фоновым заданиям ownCloud Server .

Перед изменением расписания проверьте команду.

Служба systemd определяет команду для выполнения; таймер периодически запускает эту службу. Сначала подтвердите путь установки ownCloud и учетную запись HTTP-сервера. В приведенных ниже примерах используются /var/www/owncloudи www-data, распространенные в Debian и Ubuntu. В других дистрибутивах Linux могут использоваться wwwrun, apache, или другая учетная запись.

Чтобы отличить неработающую команду от неработающего расписания, выполните команду ownCloud вручную от имени этой учетной записи:

sudo -u www-data /usr/bin/php -f /var/www/owncloud/occ system:cron

Измените путь к исполняемому файлу PHP occв соответствии с вашим сервером. ownCloud рекомендует использовать system:cronдля фоновых задач; старые руководства по планированию cron.phpмогут ссылаться на устаревшее поведение. Текущая команда может завершиться без вывода сообщения об успехе, поэтому echo $?сразу после этого проверьте ее статус завершения с помощью команды: 0означает, что команда завершилась успешно. Если возвращается ошибка, сначала исправьте путь, установку PHP CLI, права доступа, подключение к базе данных или ошибку ownCloud. Таймер будет многократно запускать одну и ту же команду, которая завершилась с ошибкой, если вы пропустите эту проверку.

Переведите ownCloud в режим Cron.

В настройках администратора ownCloud откройте раздел «Фоновые задания» или «Cron» и выберите «Cron» . Вы также можете настроить планировщик из каталога установки с помощью следующей команды:

cd /var/www/owncloud
sudo -E -u www-data php occ background:cron

Это включает режим Cron; запланированная команда остается неизменной occ system:cron. В руководстве ownCloud указано, что эта команда эквивалентна выбору Cron на странице администратора. Cron предпочтительнее для сервера, которому необходимо надежно обрабатывать задания, поскольку AJAX зависит от посещений страниц и может приводить к ожиданию выполнения задач в периоды низкой активности. Для небольшого личного экземпляра AJAX может быть проще, но он менее предсказуем.

Создайте службу systemd и таймер.

Создайте учетную запись, /etc/systemd/system/owncloudcron.serviceиспользуя свой реальный HTTP-аккаунт и путь к ownCloud:

[Unit]
Description=ownCloud background jobs

[Service]
Type=oneshot
User=www-data
WorkingDirectory=/var/www/owncloud
ExecStart=/usr/bin/php -f /var/www/owncloud/occ system:cron

Type=oneshotСообщает systemd, что команда выполнена до конца, а затем завершает работу. Указание полного пути к PHP позволяет избежать зависимости от ограниченных возможностей, PATHдоступных системным службам. Рабочий каталог помогает ownCloud разрешать относительные пути. Убедитесь, что учетная запись службы соответствует владельцу файлов ownCloud и доступа к данным. Не запускайте задание от имени root.

Далее создайте /etc/systemd/system/owncloudcron.timer:

[Unit]
Description=Run ownCloud background jobs every 15 minutes

[Timer]
OnBootSec=5min
OnUnitActiveSec=15min
Unit=owncloudcron.service

[Install]
WantedBy=timers.target

В руководстве ownCloud рекомендуется 15-минутный интервал для стандартного примера cron, а в качестве альтернативного планировщика признаются таймеры systemd. Этот таймер запускается через пять минут после загрузки системы, а затем планирует дальнейшие запуски через 15 минут после активации службы. Если для вашей рабочей нагрузки требуется другой интервал, измените его OnUnitActiveSecобдуманно и учтите время, необходимое для завершения каждого запуска. Избегайте настройки еще одной записи в crontab для той же команды; дублирующие планировщики могут запускать избыточные запуски и затруднять поиск и устранение неисправностей.

Дайте systemd команду перезагрузить определения юнитов, затем включите и запустите таймер:

sudo systemctl daemon-reload
sudo systemctl enable --now owncloudcron.timer

daemon-reloadЭто необходимо после создания или редактирования файлов юнитов. Включение таймера приводит к его автоматическому запуску после последующих загрузок; --nowон запускает его в текущей сессии. Включайте юнит таймера, а не только службу.

Выясните, почему запуск был пропущен или не удался.

Проверьте, включен ли таймер и когда он запустится в следующий раз:

systemctl is-enabled owncloudcron.timer
systemctl list-timers --all owncloudcron.timer
systemctl status owncloudcron.timer

В списке таймеров должен отображаться включенный таймер с датой следующего включения. Если этого не происходит, подтвердите имя файла юнита, перезагрузите systemd и снова включите таймер. Если таймер показывает запуск, но работа ownCloud по-прежнему задерживается, проверьте службу и ее журналы:

systemctl status owncloudcron.service
sudo journalctl -u owncloudcron.service --since today

Проверьте наличие неправильного пути, недоступного каталога данных, отсутствующего расширения PHP или ошибки базы данных. Проверьте вручную точную команду в файле службы, чтобы www-dataмаксимально точно воспроизвести ситуацию. Также убедитесь, что вы использовали команду ownCloud occ system:cron, а не скопировали пример Nextcloud, который вызывает cron.php.

Убедитесь, что ownCloud обрабатывает задания.

После одного или двух интервалов таймера убедитесь, что служба успешно завершилась и запланирована последующая активация таймера. Затем проверьте статус фоновых заданий на странице администратора ownCloud. Отображаемое время последнего запуска должно увеличиться, а предупреждение Cron должно исчезнуть. Если systemd сообщает об успехе, но предупреждение остается, проверьте журнал приложений ownCloud и убедитесь, что веб-интерфейс подключен к тому же экземпляру и базе данных, которые используются при установке из командной строки.

Для официальных контейнеров ownCloud не устанавливайте эти хост-модули, если вы намеренно не отключили внутренний планировщик контейнера и текущая документация ownCloud по контейнерам не поддерживает вашу конфигурацию. Приведенная здесь конфигурация представляет собой решение на уровне хоста для классического ownCloud на systemd; имена служб, пути, версии PHP и поведение контейнера зависят от развертывания.

Оставить комментарий

Безопасное удаление версий файлов ownCloud с помощью команды occ.

Безопасное удаление версий файлов ownCloud с помощью команды occ.

Удалите все сохраненные версии файлов ownCloud Server Classic для одной учетной записи или всех пользователей и различайте полную очистку и истечение срока действия на основе срока хранения.

Подключение к мобильному приложению ownCloud отклонено? Проверьте URL-адрес и доступность.

Подключение к мобильному приложению ownCloud отклонено? Проверьте URL-адрес и доступность.

Чтобы отследить отказ в подключении к мобильному приложению ownCloud, проверьте URL-адрес сервера, сеть телефона, конечную точку HTTPS и журналы сервера в правильной последовательности.

Надежное выполнение фоновых задач ownCloud с помощью таймера Systemd.

Замените запуск заданий по требованию таймером systemd, который запускает поддерживаемую ownCloud команду occ system:cron каждые 15 минут.

Восстановление синхронизации ownCloud WebDAV путем поиска поврежденного маршрута.

Проследите за выполнением WebDAV-запроса через Apache, Nginx или обратный прокси-сервер, а затем подтвердите работоспособность синхронизации ownCloud с помощью аутентифицированного теста PROPFIND.

Настройте публичный URL-адрес Nextcloud, чтобы он мог быть доступен сам себе.

Устраните предупреждение Nextcloud об отсутствии исходящего адреса, установив канонический URL-адрес и проверив маршрутизацию DNS, HTTPS и обратного прокси-сервера непосредственно на самом сервере.

Настройка кэширования Nextcloud Redis в Ubuntu 24.04

Настройка кэширования Nextcloud Redis в Ubuntu 24.04

Настройка APCu и Redis через локальный Unix-сокет для кэширования и блокировки файлов в Nextcloud, с пошаговыми инструкциями для текущих и более старых версий Nextcloud.

Настройте автоматический запуск Cron в Nextcloud с помощью таймера Systemd.

Проверьте режим cron в Nextcloud, восстановите работу службы systemd и таймера, а также убедитесь, что фоновые задачи запускаются после запуска системы и каждые пять минут.

Удалите предупреждение Nextcloud о блокировке файлов с помощью Redis.

Включите надежную блокировку файлов в Nextcloud, выберите подходящий бэкенд Redis или Valkey и убедитесь, что предупреждение исчезает без риска одновременного изменения файлов.

Что нужно, чтобы получить рейтинг безопасности Nextcloud A+

Что нужно, чтобы получить рейтинг безопасности Nextcloud A+

Устраните распространенные ошибки сканирования Nextcloud с помощью текущих обновлений, HTTPS и HSTS, точного доверия к обратному прокси-серверу и проверок на общедоступном сервере.

Внедрите серверное шифрование Nextcloud с измеримым эффектом.

Настройте Nextcloud SSE для необходимого вам хранилища, защитите ключи шифрования и измерьте влияние на передачу данных и загрузку процессора перед шифрованием существующих файлов.