开源营销自动化并不意味着必须将数据交给 SaaS 供应商。Mautic 让邮件营销活动、联系人追踪和潜在客户培育都掌握在你自己手中。在 Ubuntu 24.04 上运行比登录 HubSpot 需要更多精力,但回报是能够完全控制你的技术栈、成本和客户数据。你可以决定何时更新、如何扩展以及你的信息存储在哪里。

在开始之前,请将域名指向你的服务器,并确保你的 Ubuntu 24.04 实例至少拥有 2 GB 的内存。Mautic 并不轻量;当 PHP 重建大型细分受众或处理营销活动逻辑时,会消耗大量内存。如果你计划向数千名联系人发送邮件,4 GB 的内存会让体验更加流畅。

构建 LEMP 基础

Mautic 需要 LEMP 技术栈:Nginx、MySQL 和 PHP。在 Ubuntu 24.04 上,默认的 PHP 版本是 8.3,这与当前的 Mautic 版本配合良好。首先更新软件包列表,然后安装 Nginx 和 MySQL Server。之后,安装 PHP-FPM 以及 Mautic 所需的具体扩展:

  • php-fpm
  • php-mysql
  • php-imap
  • php-curl
  • php-gd
  • php-xml
  • php-mbstring
  • php-zip
  • php-intl
  • php-bcmath

每个扩展都有其实际用途。IMAP 扩展用于读取退信消息和退订回复。GD 用于处理缩略图的图像处理。Mbstring 和 Intl 用于管理不同语言的字符集和翻译。BCMath 为潜在客户评分和货币计算提供精确的数学运算。不要跳过任何一个,否则安装程序会在中途报错。

如果已经安装了 Apache,请将其卸载。两个 Web 服务器都会占用 80 和 443 端口。同时运行它们会导致难以调试的静默失败。使用 apt remove apache2 紧接着执行 apt autoremove 可以彻底避免这种烦恼。

优化 PHP 和数据库

Mautic 的安装程序和后台任务非常消耗内存。打开位于 /etc/php/8.3/fpm/php.ini 的 PHP-FPM 配置文件,将内存限制(memory limit)提高到 512 MB。将上传大小设置为 50 MB,以便你可以导入联系人列表和资源包而不会触及限制。保存后,重启 PHP-FPM 以应用更改。同时,请调高 post_max_size 以匹配你的上传限制;否则,即使 upload_max_filesize 设置正确,PHP 也会拒绝大型 multipart 表单提交。

接下来,创建一个专用的 MySQL 数据库和用户。数据库名称可以随你喜欢,但请将用户名和密码保存在密码管理器中。Mautic 将每一次联系人操作、营销活动决策和邮件打开事件都存储在这些表中,因此为单一用途的账户授予广泛的权限,可以在服务器上其他部分遭到破坏时限制风险暴露。

安装 Mautic 及其工具

下载最新的 Mautic 稳定版并将其解压到 /var/www/html/mautic。将目录所有者设置为 www-data,以便 Web 服务器可以写入缓存文件、日志和本地配置更新。在 Ubuntu 上,这意味着运行 chown -R www-data:www-data /var/www/html/mautic

你还需要在服务器上安装 Composer 和 npm。Composer 用于解析 PHP 依赖项,即使你从预构建的发布存档中部署,稍后在添加 Marketplace 插件或运行手动更新时也会需要 Composer。如果你打算自定义主题或从源码构建前端资源,那么 npm 也非常重要。现在就准备好这两个工具,可以避免在项目演进时手忙脚乱。

配置 Nginx 并加强安全性

你的 Nginx 虚拟主机应将根目录指向 /var/www/html/mautic,并将 index.php 作为默认索引。将 PHP 请求路由到 PHP-FPM 打开的 Unix socket,通常位于 /run/php/php8.3-fpm.sock。一个稳健的 server block 应包含一个回退到 front controller 的 try_files 指令,以及一个拒绝访问以点(.)开头的隐藏文件的 location 块。Mautic 自带了适用于 Apache 的 .htaccess 文件,但 Nginx 会忽略它们,因此在虚拟主机中设置明确的拒绝规则可以保护你的日志和临时目录的私密性。

在运行基于 Web 的安装程序之前,请获取 TLS 证书。使用带有 Nginx 插件的 Certbot 来获取免费的 Let's Encrypt 证书,并自动将你的 HTTP 流量重写为 HTTPS。Mautic 处理登录凭据和联系人数据;没有任何理由通过明文传输这些信息。

Cron 任务是引擎

这一步是不可或缺的。如果没有定时任务,Mautic 只是一个毫无作用的仪表板。应用程序将营销活动操作、邮件发送和细分重新计算排队在数据库中,然后依靠命令行来处理它们。

为 Mautic 用户设置 cron 作业以处理这些后台任务:

  • 更新细分 (segments)
  • 运行营销活动 (campaigns)
  • 发送邮件
  • 获取退信 (bounces)

在实践中,这意味着以不同的间隔调用 Mautic 的控制台命令。细分重建可以每小时运行一次。营销活动触发器和邮件队列处理通常需要更短的时间间隔,根据数据量的大小,每五到十五分钟运行一次。通过 IMAP 获取退信应保持足够的频率,以确保您的发件人信誉不会因未处理的垃圾邮件投诉而受损。请密切关注您的 syslog 或 cron 输出,以确认任务在没有内存错误的情况下完成。

使用平台

一旦安装程序完成且 cron 开始正常运行,请登录仪表板。界面围绕三个核心构建模块展开:联系人 (contacts)、细分 (segments) 和营销活动 (campaigns)。

使用拖放式营销活动构建器来设计邮件工作流。一名新订阅者进入流程,等待一天,收到欢迎消息,并根据其是否点击了链接进行分支处理。与此同时,当潜在客户 (leads) 访问定价页面或打开产品公告时,积分 (Points) 系统会悄悄地为他们评分。您可以决定触发销售电话的高意向潜在客户 (hot lead) 的阈值。

细分根据您定义的规则自动对联系人进行分组。您可以将过去 30 天内打开过营销活动的所有人进行细分,或者隔离特定国家的联系人。位于落地页 (landing pages) 上的表单会直接将数据喂给这些细分。将这些组件连接起来,您就拥有了一个能够对行为做出反应的自动化培育序列 (nurture sequence),而不是向整个列表群发同样的消息。

部署后的实际工作

在 Ubuntu 24.04 上搭建 Mautic 仅仅是个开始。在每次更新之前,请备份您的数据库和 /var/www/html/mautic 目录。安装新插件时,请查看 PHP 错误日志。在扩大联系人列表规模后,请测试 cron 输出,因为一个在处理一千个联系人时仅需几秒钟完成的任务,在处理五万个联系人时可能会超时。

自托管是用托管式 SaaS 的便利性来换取对营销数据的自主权。没有供应商锁定,没有按联系人计费的意外惊喜,也没有第三方挟持您的分析数据。您拥有服务器、数据库以及与受众的关系。对于愿意维护一台 Linux 服务器和一些 cron 表达式的团队来说,这种交换通常是非常值得的。