启用SuiteCRM工作流(workflow)-权威指南

启用SuiteCRM工作流:SuiteCRM使用了许多工作流程可以在预定时间运行的程序,支持搜索索引,工作流,电子邮件通知,数据库维护等功能。完成安装Suite CRM后,需要手动启用 Scheduler作业。这是通过要求操作系统每分钟运行一个名为cron.php的脚本来完成的。反过来,这将根据其适当的时间表管理所有SuiteCRM作业。所有这些都可以在Admin / Schedulers屏幕上进行管理。

自定义CRM软件
自定义CRM软件

在Windows中,这是在系统的“任务计划程序”上设置的;在Linux和iOS(这是本文的重点)中,它是在crontab中设置的。在安装过程中,您将收到详细的说明,以及设置这些作业所需运行的特定命令。安装后,您仍然可以在Admin / Schedulers屏幕底部访问这些说明。

为确保您的Scheduler作业不会造成权限问题,标准做法是在Web服务器所运行的同一用户下运行它们。对于不同的配置,必须调整config.php中的allowed_cron_users数组。

我需要了解什么crontab基础知识?

在Linux中,每个用户可以有一个crontab。这甚至适用于无法登录Shell的用户,例如许多默认安装中的标准Web服务器用户(如www-datanobody)。在这些示例中,我将一直使用www-data,但是您可以将其更改为所需的任何用户。

要列出特定用户的crontab的内容,请使用类似以下命令的内容:

sudo crontab -l -u www-data

要编辑这些内容,请改用-e开关:

sudo crontab -e -u www-data

某些Linux版本(尤其是Ubuntu)具有另一个crontab,即系统级crontab。这是通过编辑文件来编辑的:

sudo nano /etc/crontab

请注意,此crontab中的注释说明它是系统范围的crontab。在这里,您可以指定要以任何用户身份运行的命令,因此,在其中有一个额外的列,您可以在其中说出该命令运行的用户,例如:

* * * * * www-data cd /var/www/html; php -f cron.php > /dev/null 2>&1

看到www-data那里吗?特定用户的crontab中不会包含该内容。该用户名列仅用于系统范围的crontab。

这些作业应在哪个用户下运行?

答案因系统而异。但是,一种标准的可接受解决方案是找出您的Web服务器在哪个用户下运行,并将该用户也用于cron作业。这简化了权限方案的设计,并基本上确保了访问同一数据库和文件的两个进程(Web应用程序和cron作业)不会彼此产生权限问题。

弄错了会严重影响您的安装。确保您的权限方案是这样的:一个进程可以写和写可写,另一个进程也可以读和写。

如果由于错误的crontab配置而以root身份运行cron作业一段时间,则在修复它后,请记住在整个SuiteCRM目录树上重置正确的所有权和权限,然后执行Quick Repair and Rebuild

以及如何确定我的Web服务器在哪个用户下运行?

您可以通过多种方法在线阅读有关内容。我将列出一些特定于SuiteCRM的信息:

  1. 在7.8.3及更高版本中,进入Admin / Schedulers并在屏幕底部看到crontab命令。
  2. 在7.8.3及更高版本中,请检查cron_allowed_usersconfig.php文件中的该部分,该部分应该在该位置。
  3. 在任何版本上,进入Admin / Diagnostics并仅选择phpinfo。生成该文件后,检查APACHE_RUN_USER其提供的值。(注意:不要从命令行运行php -i,这不是一回事)

config.php中的cron_allowed_users部分是什么?

本节中的信息仅适用于SuiteCRM 7.8.3和更高版本。

从2017年4月的SuiteCRM 7.8.3开始,引入了一种机制来限制允许运行cron作业的用户。早期版本不检查用户,而是让您以任何用户身份运行cron(因此,您需要确保它是正确的用户,而不是root)。

只有在被称为数组中列出用户cron_allowed_usersconfig.php(你的SuiteCRM安装的根目录)将被允许运行cron.php。任何其他用户将导致该脚本在每次启动时自行终止。

通常,您无需执行任何操作即可将有效用户添加到该阵列,因为SuiteCRM安装程序会自动为您执行此操作,并添加当前的Web服务器用户(如果尚未存在)。升级向导将执行相同的操作(这些自动添加的缺点是,如果您想使Web服务器用户脱离该阵列,则每次升级都将花费一些工作。但是,这种情况很少见)。

您可以添加多个允许的用户。root尤其不建议这样做,并且root即使运行运行安装程序的Web服务器用户也不会添加安装程序,如果确实需要,则必须手动进行添加。

config.php的相关部分可能如下所示:

'cron' =>
   array (
	 'max_cron_jobs' => 10,
	 'max_cron_runtime' => 30,
	 'min_cron_interval' => 30,
	 'allowed_cron_users' =>
	 array (
		0 => 'www-data',
	 ),
   ),

我应该在crontab中使用哪个命令?

基本思想是经常运行cron.php,它会处理所有事情。

使用上面给出的有关如何编辑正确的crontab以及应该是哪个用户的crontab的知识,将此命令添加到crontab的底部(以一般形式给出):

* * * * * cd /your/suitecrm/folder; php -f cron.php > /dev/null 2>&1

现在给出一些具体的典型示例。首先,Ubuntu Server,系统级crontab:

* * * * * www-data cd /var/www/html; php -f cron.php > /dev/null 2>&1

如果要编辑特定www-data用户crontab,请在该命令中省略用户名。

Bitnami提供的一种非常常见的安装。他们建议使用以下命令:

* * * * * su daemon -s /bin/sh -c "cd /opt/bitnami/apps/suitecrm/htdocs; /opt/bitnami/php/bin/php -f cron.php > /dev/null 2>&1"

当然,您也可以使用crontab的语法来降低其运行频率,这在频繁使用的系统中可能很重要。要每两分钟而不是每分钟运行一次,请更改第一列,如下所示:

*/2 * * * * cd /your/suitecrm/folder; php -f cron.php > /dev/null 2>&1

如果我无法编辑crontab怎么办?

如果您没有sudo权限来编辑某些crontab(在共享主机方案中可能会发生),请与您的虚拟主机技术支持联系以请求更改。您可以在此处将其引导至这些说明。

哪些php.ini设置适用于cron作业?

首先,回想一下,系统中通常至少有两个独立的PHP配置:一个在Web服务器内部运行,一个从命令行(CLI)运行。

Cron作业通常从CLI子系统运行,该子系统使用另一个php.ini文件。这意味着您必须timezone专门为cron作业配置诸如此类的内容以及其他详细信息。

要在系统中找到几个php.ini文件,可以使用

sudo find / -name php.ini 2>/dev/null

要查看您的CLI使用哪个php.ini文件,请键入

php -i | grep php.ini

如何确定作业确实在运行?

  1. Admin / Schedulers会显示每个作业的最新运行时间,以及它是否有错误。
  2. Linux的syslog正常日志记录在中启动的进程cron
  3. suitecrm.log只要您的日志级别覆盖了它,SuiteCRM 还将记录这些事件(您可以对其进行检查并从中进行更改Admin / System Settings)。
  4. 如果某些特定的Scheduler Job因错误而失败,suitecrm.log也是开始进行故障排除的地方,以及Web服务器的日志(通常称为php_errors.log)。

下面是重点

在管理员——系统管理——任务计划中,会有如下的提醒。

配置运行 SuiteCRM 的任务计划程序,需要使用此命令编辑 Web 服务器用户的 crontab 文件:
sudo crontab -e -u web2
并在用户 crontab 文件中添加以下行(可以指定 -c /path/to/php.ini 参数使用自定义的 php.ini 配置文件,适用于 php fastcgi 用户):
*    *    *    *    *     cd /var/www/clients/client1/web2/web; php -f cron.php > /dev/null 2>&1 

看完之后您应该明白,你还有什么配置没有做。

首先我们登陆到Linux服务器,运行上面提示的第一行命令:sudo crontab -e -u web2

运行完成后,提示:“no crontab for web2-using an empty one”,大致就是说针对web2这个虚拟空间没有crontab,需要我们创建一个,然后有提示我们选择哪个编辑器创建。

我们选择推荐的第二个编辑器“nano”,回车。自动成功创建了一个 crontab ,并且使用“nano”编辑器给我们打开了crontab配置文件,我们需要在文件中插入“*    *    *    *    *     cd /var/www/clients/client1/web2/web; php -f cron.php > /dev/null 2>&1”(在ubuntu 16中运行不生效)

备注:如上图所示,需要执行完“Ctrl+o”保存后,按回车键存储!!!存储完成后“Ctrl+X”推出。

然后保存,退出即可。退出后,进入如下命令行。此时工作流即可生效!!!

GNU nano使用保存退出的说明

文件编辑中常用快捷键:

  • ctrl+X 离开nano软件;
  • ctrl+O 保存文件 。
  • 复制一整行:Alt+6
  • 剪贴一整行:Ctrl+K
  • 粘贴:Ctrl+U

参考官方论坛链接:https://community.suitecrm.com/t/workflow-not-working-suitecrm-installed-on-centos-6-3-64bit/45019/37

root@isp:~# sudo crontab -e -u web2
no crontab for web2 - using an empty one

Select an editor.  To change later, run 'select-editor'.
  1. /bin/ed
  2. /bin/nano        <---- easiest
  3. /usr/bin/vim.basic
  4. /usr/bin/vim.nox
  5. /usr/bin/vim.tiny

Choose 1-5 [2]: 2
crontab: installing new crontab
root@isp:~# 

推荐阅读

  1. SuiteCRM 8.1.2 刚刚发布!
  2. SuiteCRM 8.1.1 & 7.12.6 发布
  3. 为了官方更好的技术服务,请捐赠SuiteCRM
  4. SuiteCRM 8.1发布-官方版本再更新!
  5. 苏格兰公司 SuiteCRM 再次获奖
  6. 安全和维护补丁:SuiteCRM 8.0.4 & 7.12.5 发布
  7. 将 SuiteCRM 升级到更新版本
  8. SuiteCRM 升级环境(PHP\MySQL\Apache)要求

发表评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注