Наcтройка CRON в NextCloud

Задача:
---------------------------------------------------------------Настроить выполнение фоновых заданий в облачном хранилище Nextcloud
В логах nextcloud было найдено сообщение:
Последняя фоновая задача была выполнена 15 часов назад. Похоже, что-то не в порядке. Проверьте параметры выполнения фоновых задач
Соглавно документации и настроек, есть три варианта решения задачи:

AJAX – Выполнять одно задание с каждой загруженной страницей
По умолчанию Nextcloud использует метод планирования AJAX. Это самый простой, но одновременно с тем наименнее надёжный вариант. При каждом посещении пользователем web-страницы Nextcloud выполняется фоновое задание. Преимущество этого варианта в том, что он не требует ни каких дополнительных настроек. Недостатком этого механизма, что для его запуска требуется регулярное посещение страницы.
Webcron – cron.php зарегистрирован в службе webcron и будет вызываться каждые 5 минут по HTTP.
в этом варианте мы регистрируем адрес скрипта cron.php, который быдет запускаться внешней веб-службой cron. Адрес скрипта если вы устанавливали без поддиректорий:
http[s]://FQDN/cron.php
(FQDN от англ. Fully Qualified Domain Name – полностью определённое имя домена)
Для настройки вы можете воспользоваться сервисом easycron.com или аналогичным. Чтобы использовать этот вариант автоматического выполнения фоновых задач на сервере, необходимо чтобы nextcloud сервер имел доступ к серверу через Интернет.
Если вам не удалось найти webcron сервис, можете воспользоваться скриптами в Google Apps Script. Скрипт будет выглядить
function nextcloudcron() { try { UrlFetchApp.fetch('https://АДРЕС ВАШЕГО СЕРВЕРА/cron.php'); } catch (e) {} }
Чтобы проверить правильность ссылки, откройте в любом браузере ссылки и увидите один из двух вариантов.

Скриптами гугл вы практически не ограничены, можно запускать хоть каждую минуту, обрабатывать результат и сохранять статистику.
Cron – Использовать системный cron для вызова файла cron.php каждые 5 минут. cron.php должен исполняться из под пользователя “www”.
Наиболее предпочитаемый вариант – это использование функции cron в операционной системе. Этот метод позволяет выполнять запланированные задания без ограничений. Тут достаточно наличие выделенного сервера (VDS, VPS и т.д ) или доступ к системному Cron.
Чтобы запустить задание cron в системе *nix, нам необходимо узнать от какого пользователя работает веб-сервер. Проверяем с помощью sockstat какой сервис слушает порты 80 и 443.
root@cloud:/ # sockstat -l | grep -E "80|443" www nginx 808 6 tcp6 *:443 *:* www nginx 808 7 tcp4 *:443 *:* www nginx 808 8 tcp4 *:80 *:* www nginx 808 9 tcp6 *:80 *:* root nginx 807 6 tcp6 *:443 *:* root nginx 807 7 tcp4 *:443 *:* root nginx 807 8 tcp4 *:80 *:* root nginx 807 9 tcp6 *:80 *:* root rsync 780 4 tcp6 *:873 *:* root rsync 780 5 tcp4 *:873 *:* ntpd ntpd 755 24 udp6 fe80::1%lo0:123 *:* root@cloud:/ # sockstat -lw -p 443 -P tcp USER COMMAND PID FD PROTO LOCAL ADDRESS FOREIGN ADDRESS www nginx 808 6 tcp6 *:443 *:* www nginx 808 7 tcp4 *:443 *:* root nginx 807 6 tcp6 *:443 *:* root nginx 807 7 tcp4 *:443 *:* root@cloud:/ # sockstat -lw -p 80 -P tcp USER COMMAND PID FD PROTO LOCAL ADDRESS FOREIGN ADDRESS www nginx 808 8 tcp4 *:80 *:* www nginx 808 9 tcp6 *:80 *:* root nginx 807 8 tcp4 *:80 *:* root nginx 807 9 tcp6 *:80 *:*
Если вы используете систему linux, можете восползоваться командами
netstat -tulpn | grep :80 fuser 80/tcp fuser 443/tcp
Итак, настраивать будем cron пользователя www, на запуск вызова сценария cron.php каждый 5 минут:
crontab -u www -e
добавляем строку (кто испытывает трудности, смотрите как работает редактор vi)
*/5 * * * * php -f /var/www/nextcloud/cron.php
где /var/www/nextcloud/cron.php – путь до веб-директории nextcloud, файл cron.php находится в корне. Проверяем изменения:
root@cloud:/ # crontab -u www -l PATH=/usr/local/bin */15 * * * * php -f /usr/local/www/nextcloud/cron.php root@cloud:/ #
У меня путь другой. Для системы FreeBSD стандартный путь веб-диретории отличается.
Есть ещё вариант настройки через systemd, но нам он не подходит из-за использования FreeBSD. Для владельцев Linux документацию по настройке можно найти на официальном сайте.
Свежие комментарии