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中配置的域名即可,如下图所示

image
image
image
image
image

配置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)


测试邮件

image
image
image
image

# 触发邮件发送
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版本

image

如需支持请留言

posted @ 2025-08-05 09:56  Linux大魔王  阅读(26)  评论(0)    收藏  举报