Включаем Cron в Nextcloud на Ubuntu/Debian

Если Вы получаете предупреждение в админ панели NextCloud вида: “Последнее задание было выполнено X дней назад. Похоже, что-то не в порядке.




Соглавно документации и настроек, есть три варианта решения задачи:







AJAX – Выполнять одно задание с каждой загруженной страницей




По умолчанию Nextcloud использует метод планирования AJAX. Это самый простой, но не очень надёжный вариант. При каждом посещении пользователем web-страницы Nextcloud выполняется фоновое задание. Преимущество этого варианта в том, что он не требует ни каких дополнительных настроек. Недостатком этого механизма, что для его запуска требуется регулярное посещение страницы.




Webcron – cron.php зарегистрирован в службе webcron и будет вызываться каждые 5 минут по HTTP.




в этом варианте мы регистрируем адрес скрипта cron.php, который будет запускаться внешней веб-службой cron. Адрес скрипта если вы устанавливали без поддиректорий:




http[s]://ваш_сайт.ру/cron.php




(FQDN от англ. Fully Qualified Domain Name – полностью определённое имя домена)




Для настройки вы можете воспользоваться сервисом easycron.com или аналогичным. Чтобы использовать этот вариант автоматического выполнения фоновых задач на сервере, необходимо чтобы nextcloud сервер имел доступ к серверу через Интернет.




Cron – Использовать системный cron для вызова файла cron.php каждые 5 минут. cron.php должен исполняться из под пользователя “www”.




Наиболее предпочитаемый вариант – это использование функции cron в операционной системе. Этот метод позволяет выполнять запланированные задания без ограничений. Тут достаточно наличие выделенного сервера (VDS, VPS и т.д ) или доступ к системному Cron.




Чтобы запустить задание cron в Linux, нам необходимо узнать от какого пользователя работает веб-сервер. Проверяем с помощью sockstat какой сервис слушает порты 80 и 443. Необходимо установить программу:




sudo apt install sockstat




sockstat -l | grep -E "80|443"




root     nginx           2448     tcp4   *:80              *:*                       
root     nginx           2449     tcp4   *:80              *:*                       




или при помощи netstat




netstat -tulpn | grep -E ":80|:443"




tcp  0   0 0.0.0.0:80     0.0.0.0:*       LISTEN      2448/nginx: master




Итак, настраивать будем cron от пользователя www-data (актуально для Debian/Ubuntu), на запуск вызова сценария cron.php каждый 5 минут:




sudo crontab -u www-data -e




добавляем строку в конце




*/5 *  * * * php -f /var/www/nextcloud/cron.php




  • /var/www/nextcloud/cron.php – путь до веб-директории с nextcloud.




После данных изменений предупреждение из админ-панели пропадет.



[endtxt]




. . . .




2021-05-22T11:33:28
NextCloud