Nextcloud存在一个后台任务功能,Nextcloud对其作用大概解释如下:
像Nextcloud这样的系统有时需要定期完成任务,而不需要用户交互或阻碍Nextcloud性能。为此,作为系统管理员,您可以定义在不需要用户交互的情况下执行的后台作业(例如,数据库清理)。
我们在管理员后台看到后台任务的执行方式有三种:AJAX、Webcron、Cron,默认选项为AJAX。
三种方式区别如下:
AJAX:调度方法是默认选项。不幸的是,它也是最不可靠的。每次用户访问Nextcloud页面时,都会执行一个后台作业。这种机制的优点是它不需要访问系统也不需要注册第三方服务。与Webcron服务相比,这种机制的缺点是它需要定期访问页面才能触发它。
Webcron: 通过在外部webcron服务(例如,easyCron)上注册Nextcloud cron.php脚本地址,可以确保定期执行后台作业。要在服务器上使用此类服务,您必须能够使用Internet访问服务器。
Cron: 使用操作系统cron功能是执行常规任务的首选方法。此方法可以执行预定作业,而不会受到Web服务器可能具有的固有限制。
然而,默认的AJAX方式虽然方便,但也是最不可靠的,每个页面加载后执行一个任务,性能将大打节扣。
而Webcron要依赖于外部webcron,实现起来复杂。
官方推荐的是Cron方式,通过执行定时任务,实现Nextcloud后台任务的执行。
以下将介绍如何实现Cron方式的后台任务:(以ubuntu18为例)
ssh连接服务器,root用户登录。
sudo -s
使用apach2的www-data用户建立定时任务。
crontab -e -u www-data
添加一条任务,每15分钟执行一次Nextcloud后台任务。下面nextcloud目录指的是nextcloud的web目录,可按实际情况修改,保存并退出。
*/15 * * * * php -f /nextcloud/cron.php
如果不行,请参照官方的文档:
For some configurations, it might be neccessary to append --define apc.enable_cli=1
to the cron command. Please refer to Memory caching (section APCu).
需要在*/15 * * * * php -f /nextcloud/cron.php
里加上--define apc.enable_cli=1,即:
*/15 * * * * php -f /nextcloud/cron.php
--define apc.enable_cli=1 (本人亲测可用!)
同时,也可以在命令行下执行一次cron.php校验一下,如没出现任何错误提示,证明命令是正确的。
sudo -u www-data php -f /nextcloud/cron.php
重启cron服务,使其生效。
service cron restart
最后,管理员登录Nextcloud后台,进入【设置】-【基本设置】,把后台任务设为Cron即可。
至此,已成功把Nextcloud后台任务方式设为Cron。
文章评论