Mautic从5.1.0升级到5.2.7
目录
前奏
rambo@test3:~$ cat /etc/os-release
PRETTY_NAME="Ubuntu 22.04.5 LTS"
NAME="Ubuntu"
VERSION_ID="22.04"
VERSION="22.04.5 LTS (Jammy Jellyfish)"
rambo@test3:~$ grep -v ^# /etc/apt/sources.list | grep -v ^$
deb http://hk.archive.ubuntu.com/ubuntu/ jammy main restricted
deb http://hk.archive.ubuntu.com/ubuntu/ jammy-updates main restricted
deb http://hk.archive.ubuntu.com/ubuntu/ jammy universe
deb http://hk.archive.ubuntu.com/ubuntu/ jammy-updates universe
deb http://hk.archive.ubuntu.com/ubuntu/ jammy multiverse
deb http://hk.archive.ubuntu.com/ubuntu/ jammy-updates multiverse
deb http://hk.archive.ubuntu.com/ubuntu/ jammy-backports main restricted universe multiverse
deb http://security.ubuntu.com/ubuntu/ jammy-security main restricted
deb http://security.ubuntu.com/ubuntu/ jammy-security universe
deb http://security.ubuntu.com/ubuntu/ jammy-security multiverse
# 更新系统源
rambo@test3:~$ sudo apt update && sudo apt install -y vim wget curl net-tools software-properties-common unzip
安装
安装 PHP 和扩展(Mautic 5.1.0 要求 PHP 8.1/8.2)
这里用 PHP 8.1(官方要求 8.1 以上,5.1.0 发布时主要用 8.1 测试):
rambo@test3:~$ sudo add-apt-repository ppa:ondrej/php -y
rambo@test3:~$ sudo apt update
rambo@test3:~$ sudo apt install -y php8.1 php8.1-cli php8.1-common \
php8.1-mysql php8.1-xml php8.1-curl php8.1-imap \
php8.1-mbstring php8.1-zip php8.1-intl php8.1-bcmath
安装数据库(MySQL 8.0)
rambo@test3:~$ sudo apt install -y mysql-server mysql-client
rambo@test3:~$ sudo systemctl restart mysql && sudo systemctl enable mysql
# 设置 root 密码和安全选项
rambo@test3:~$ sudo mysql_secure_installation
Press y|Y for Yes, any other key for No: y
Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 0
Remove anonymous users? (Press y|Y for Yes, any other key for No) : y
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : n
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y
rambo@test3:~$ sudo mysql # 不用密码
查看 root 用户认证方式
mysql> SELECT user, host, plugin FROM mysql.user;
+------------------+-----------+-----------------------+
| user | host | plugin |
+------------------+-----------+-----------------------+
| debian-sys-maint | localhost | caching_sha2_password |
| mysql.infoschema | localhost | caching_sha2_password |
| mysql.session | localhost | caching_sha2_password |
| mysql.sys | localhost | caching_sha2_password |
| root | localhost | auth_socket |
+------------------+-----------+-----------------------+
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'NewStrongPassw0rd!';
mysql> FLUSH PRIVILEGES;
mysql> exit
rambo@test3:~$ mysql -u root -p
Enter password: # 使用上面的密码登录
# 创建数据库和用户
CREATE DATABASE mautic DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'mauticuser'@'localhost' IDENTIFIED BY 'StrongPassw0rd!';
GRANT ALL PRIVILEGES ON mautic.* TO 'mauticuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;
安装composer(PHP 包管理器)
rambo@test3:~$ cd /usr/local/bin
rambo@test3:/usr/local/bin$ sudo curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer
rambo@test3:/usr/local/bin$ composer -V
Composer version 2.8.10 2025-07-10 19:08:33
PHP version 8.1.33 (/usr/bin/php8.1)
Run the "diagnose" command to get more detailed diagnostics output.
禁用Apache2(纯用Nginx)
rambo@test3:~$ sudo systemctl stop apache2 && sudo systemctl disable apache2
=================================================================
sudo apt remove --purge apache2* -y
sudo apt autoremove -y
sudo apt autoclean
=================================================================
安装 Node.js 和 npm
Ubuntu 22.04 默认源里的 Node.js 版本较低,建议用官方 NodeSource 源安装最新 LTS 版本:
rambo@test3:~$ curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
rambo@test3:~$ sudo apt install -y nodejs
rambo@test3:~$ for i in node npm;do $i -v;done
v18.20.8
10.8.2
安装 Web 服务器(Nginx + PHP-FPM)
rambo@test3:~$ sudo apt install -y nginx php8.1-fpm
rambo@test3:~$ sudo systemctl restart nginx && sudo systemctl enable nginx
禁用默认站点
rambo@test3:~$ sudo unlink /etc/nginx/sites-enabled/default
下载Mautic5.1.0
rambo@test3:~$ cd /var/www
rambo@test3:/var/www$ sudo git clone --branch 5.1.0 https://github.com/mautic/mautic.git
rambo@test3:/var/www$ cd mautic
生成并配置 GitHub Token
登录你的 GitHub 账户,进入 GitHub Personal Access Token 页面 https://github.com/settings/tokens/new
创建一个 只读权限的 Token,勾选 repo 权限即可(如果只用公共仓库,可以不选权限)
rambo@test3:/var/www/mautic$ sudo -u www-data composer config --global --auth github-oauth.github.com ghp_v4jRTOxxxxxxxxxxxxxxLYZZ2taMqNM0QbxRi
rambo@test3:/var/www/mautic$ sudo mkdir /var/www/.npm
rambo@test3:/var/www/mautic$ sudo chown -R www-data:www-data /var/www/.npm
rambo@test3:/var/www/mautic$ sudo chown -R www-data:www-data /var/www/mautic
rambo@test3:/var/www/mautic$ sudo chmod -R 755 /var/www/mautic
rambo@test3:/var/www/mautic$ sudo -u www-data composer install --no-dev --optimize-autoloader
....
....
npm notice
> npx patch-package
patch-package 7.0.2
Applying patches...
at.js@1.5.4 ✔
chosen-js@1.8.7 ✔
> bin/console mautic:assets:generate
Production assets have been regenerated.
配置Nginx
rambo@test3:/var/www/mautic$ sudo vim /etc/nginx/sites-available/mautic
server {
listen 80;
server_name mautic.example.com;
root /var/www/mautic;
index index.php index.html;
charset utf-8;
location / {
try_files $uri /index.php$is_args$args;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~* \.(jpg|jpeg|gif|png|css|js|ico|svg)$ {
expires max;
log_not_found off;
}
}
rambo@test3:/var/www/mautic$ sudo ln -s /etc/nginx/sites-available/mautic /etc/nginx/sites-enabled/
rambo@test3:/var/www/mautic$ sudo nginx -t
rambo@test3:/var/www/mautic$ sudo systemctl reload nginx
在宿机的hosts中写好对应关系,然后在宿机上访问nginx中配置的域名即可,如下图所示





配置cronjob
rambo@test3:~$ crontab -u www-data -e
# 活动触发
*/5 * * * * www-data php /var/www/mautic/bin/console mautic:campaigns:trigger --quiet
# 分组更新
*/10 * * * * www-data php /var/www/mautic/bin/console mautic:segments:update --quiet
# 发送邮件/短信消息
*/10 * * * * www-data php /var/www/mautic/bin/console mautic:messages:send --quiet
# 广播邮件(定时群发)
*/15 * * * * www-data php /var/www/mautic/bin/console mautic:broadcasts:send --quiet
# 清理任务
0 2 * * * www-data php /var/www/mautic/bin/console mautic:maintenance:cleanup --quiet
测试数据准备
rambo@test3:~$ mysql -umauticuser -p
Enter password:
mysql> use mautic
mysql> SHOW COLUMNS FROM leads;
+-------------------------+-----------------+------+-----+---------+-------------------+
| Field | Type | Null | Key | Default | Extra |
+-------------------------+-----------------+------+-----+---------+-------------------+
| id | bigint unsigned | NO | PRI | NULL | auto_increment |
| owner_id | int unsigned | YES | MUL | NULL | |
| stage_id | int unsigned | YES | MUL | NULL | |
| is_published | tinyint(1) | NO | | NULL | |
....
....
# 测试联系人
mysql> INSERT INTO leads (id, is_published, points, firstname, lastname, email, date_added)
VALUES
(1, 1, 0, 'Test', 'User', 'test1@example.com', NOW()),
(2, 1, 0, 'Demo', 'Account', 'test2@example.com', NOW()),
(2, 1, 0, 'Alice', 'Smith', 'alice@example.com', NOW()),
(1, 1, 0, 'Bob', 'Lee', 'bob@example.com', NOW()),
(5, 1, 0, 'Charlie', 'Brown', 'charlie@example.com', NOW()),
(3, 1, 0, 'David', 'Kim', 'david@example.com', NOW());
释义:
is_published → 1 表示启用
points → 0 表示初始积分
date_added → 用 NOW() 填当前时间
mysql> select * from leads;
+----+----------+----------+--------------+---------------------+------------+-----------------+---------------+-------------+------------------+-------------+----------------+---------------------+--------+-------------+----------+--------------+-----------------+-------------------------+-------+-----------+----------+---------+----------+---------------------+-------+--------+----------+----------+------+-------+---------+----------+---------+------+------------------+------------------+-------------+---------+----------+------------+-----------+----------+-------+---------+------------------------+
| id | owner_id | stage_id | is_published | date_added | created_by | created_by_user | date_modified | modified_by | modified_by_user | checked_out | checked_out_by | checked_out_by_user | points | last_active | internal | social_cache | date_identified | preferred_profile_image | title | firstname | lastname | company | position | email | phone | mobile | address1 | address2 | city | state | zipcode | timezone | country | fax | preferred_locale | attribution_date | attribution | website | facebook | foursquare | instagram | linkedin | skype | twitter | generated_email_domain |
+----+----------+----------+--------------+---------------------+------------+-----------------+---------------+-------------+------------------+-------------+----------------+---------------------+--------+-------------+----------+--------------+-----------------+-------------------------+-------+-----------+----------+---------+----------+---------------------+-------+--------+----------+----------+------+-------+---------+----------+---------+------+------------------+------------------+-------------+---------+----------+------------+-----------+----------+-------+---------+------------------------+
| 1 | NULL | NULL | 1 | 2025-08-04 23:22:52 | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | 0 | NULL | NULL | NULL | NULL | NULL | NULL | Test | User | NULL | NULL | test1@example.com | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | example.com |
| 2 | NULL | NULL | 1 | 2025-08-04 23:22:52 | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | 0 | NULL | NULL | NULL | NULL | NULL | NULL | Demo | Account | NULL | NULL | test2@example.com | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | example.com |
| 2 | NULL | NULL | 1 | 2025-08-04 23:37:51 | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | 0 | NULL | NULL | NULL | NULL | NULL | NULL | Alice | Smith | NULL | NULL | alice@example.com | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | example.com |
| 1 | NULL | NULL | 1 | 2025-08-04 23:37:51 | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | 0 | NULL | NULL | NULL | NULL | NULL | NULL | Bob | Lee | NULL | NULL | bob@example.com | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | example.com |
| 5 | NULL | NULL | 1 | 2025-08-04 23:37:51 | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | 0 | NULL | NULL | NULL | NULL | NULL | NULL | Charlie | Brown | NULL | NULL | charlie@example.com | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | example.com |
| 3 | NULL | NULL | 1 | 2025-08-04 23:37:51 | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | 0 | NULL | NULL | NULL | NULL | NULL | NULL | David | Kim | NULL | NULL | david@example.com | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | example.com |
+----+----------+----------+--------------+---------------------+------------+-----------------+---------------+-------------+------------------+-------------+----------------+---------------------+--------+-------------+----------+--------------+-----------------+-------------------------+-------+-----------+----------+---------+----------+---------------------+-------+--------+----------+----------+------+-------+---------+----------+---------+------+------------------+------------------+-------------+---------+----------+------------+-----------+----------+-------+---------+------------------------+
6 rows in set (0.00 sec)
测试邮件




# 触发邮件发送
rambo@test3:~$ sudo -u www-data php /var/www/mautic/bin/console mautic:messages:send
Processing message queue
Messages sent: 0
释义:
这个输出 Messages sent: 0 说明命令执行成功了,只是当前队列里没有待发送的邮件或短信,所以发送数是0
确认你的邮件配置正常
登录 Mautic 后台 → Settings(齿轮) → Configuration → Email Settings
选择一个可用的邮件传输方式(SMTP、Sendmail、第三方 API 等)
点击 Test Connection 确认连接成功
升级到5.2.7
检查系统环境是否满足5.2.7要求
升级前准备
Mautic 5.2.7 官方要求:
PHP:8.1 或 8.2
MySQL:8.0+ 或 MariaDB 10.4+
Composer:2.x
Web 服务器:Apache/Nginx
检查:
rambo@test3:~$ php -v
PHP 8.1.33 (cli) (built: Jul 3 2025 16:15:48) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.33, Copyright (c) Zend Technologies
with Zend OPcache v8.1.33, Copyright (c), by Zend Technologies
rambo@test3:~$ mysql -V
mysql Ver 8.0.42-0ubuntu0.22.04.2 for Linux on x86_64 ((Ubuntu))
rambo@test3:~$ composer -V
Composer version 2.8.10 2025-07-10 19:08:33
PHP version 8.1.33 (/usr/bin/php8.1)
Run the "diagnose" command to get more detailed diagnostics output.
备份现有cronjob
停止 Mautic cronjob
防止升级过程中触发自动化任务:
rambo@test3:~$ sudo crontab -u www-data -e
# 暂时注释所有 mautic: 开头的行
升级执行
rambo@test3:~$ cd /var/www/mautic
# 清理缓存
rambo@test3:/var/www/mautic$ sudo php bin/console cache:clear
// Clearing the cache for the prod environment with debug false
[OK] Cache for the "prod" environment (debug=false) was successfully cleared.
# 查看当前版本
rambo@test3:/var/www/mautic$ git describe --tags
5.1.0
保留改动,先保存本地修改
查看当前改动
rambo@test3:/var/www/mautic$ git status
保存当前修改(stash)
rambo@test3:/var/www/mautic$ sudo -u www-data git stash push -m "before upgrade to 5.2.7"
切换到目标版本
rambo@test3:/var/www/mautic$ sudo -u www-data git checkout tags/5.2.7 -b upgrade-to-5.2.7
注:会报很多Permission denied的错误,这里我没处理
rambo@test3:/var/www/mautic$ git describe --tags
5.2.7
执行依赖安装
rambo@test3:/var/www/mautic$ sudo -u www-data composer install --no-dev --optimize-autoloader
执行数据库迁移:
rambo@test3:/var/www/mautic$ sudo php bin/console doctrine:migrations:migrate --no-interaction
rambo@test3:/var/www/mautic$ sudo php bin/console cache:clear
rambo@test3:/var/www/mautic$ sudo php bin/console mautic:plugins:reload
修复权限:
rambo@test3:/var/www/mautic$ sudo chown -R www-data:www-data /var/www/mautic
再刷新页面即可看到右下角看到的是5.2.7版本

如需支持请留言

浙公网安备 33010602011771号