系统环境
- 系统:Linux CentOS 7.9
- 安装宝塔面板并安装 Nginx1.18、MySql5.7、PHP7.4
- 必要 PHP 扩展:imap、intl、zip、xml、mcrypt、mailparse
- 必要 PHP 函数:
putenv
、imap_open
注意:数据库一定要 MySQL >= 5.7版本
1、安装宝塔
参考官网安装教程:https://www.bt.cn/new/download.html
1 | yum install -y wget && wget -O install .sh http: //download .bt.cn /install/install_6 .0.sh && sh install .sh ed8484bec |
2、宝塔安装PHP7.4 (【宝塔Linux】php7.4 安装 zip 扩展)
PHP7.4的安装路径为:/www/server/php/74
新建快捷方式:
1 2 3 4 | ln -sf /www/server/php/74/bin/php /usr/local/bin/php ln -sf /www/server/php/74/bin/phpize /usr/local/bin/phpize ln -sf /www/server/php/74/bin/php-config /usr/local/bin/php-config ln -sf /www/server/php/74/bin/composer /usr/local/bin/composer |
3、配置PHP7.4
- 必要 PHP 扩展:imap、intl、zip、xml、mcrypt、mailparse、fileinfo
- 必要 PHP 函数:
putenv
、imap_open
4、安装PHP扩展:zip
(1) 安装libzip
1 2 3 4 5 6 7 8 | 先删除旧版本 yum remove zip #下载编译安装 wget https: //nih .at /libzip/libzip-1 .2.0. tar .gz tar -zxvf libzip-1.2.0. tar .gz cd libzip-1.2.0 . /configure make && make install |
安装完成后,查看是否存在/usr/local/lib/pkgconfig目录,如果存在,执行如下命令来设置PKG_CONFIG_PATH:
1 | export PKG_CONFIG_PATH= "/usr/local/lib/pkgconfig/" |
(2) 安装ZipArchive
1 2 3 4 5 6 | cd /www/server/php/74/src/ext/zip /www/server/php/74/bin/phpize . /configure --with-php-config= /www/server/php/74/bin/php-config make && make install echo "extension = zip.so" >> /www/server/php/74/etc/php .ini echo "extension = zip.so" >> /www/server/php/74/etc/php-cli .ini # 注意:现在的PHP命令行模式,有自己单独的配置文件 |
(3) 重启php
5、配置PHP参数
1 2 3 4 5 | upload_max_filesize 300M post_max_size 350M memory_limit 400M max_execution_time 600 max_input_time 600 |
6、安装依赖包
1 2 3 4 | chown -R www:www /www/wwwroot/mautic .xxx.com cd /www/wwwroot/mautic .xxx.com su www composer install |
7、在宝塔后台,提交新建“空”数据库
安装步骤
1、配置站点
在宝塔后台添加站点、数据库、域名,然后添加 Nginx伪静态规则:
1 2 3 | location / { try_files $uri $uri/ /index .php?$query_string; } |
2、然后下载 Mautic 安装包,上传到网站根目录解压。
下载地址:https://github.com/mautic/mautic/tags
3、添加计划任务
1 2 3 4 5 6 7 8 9 10 | /usr/bin/php /www/wwwroot/mautic .xxx.com /bin/console mautic:segments:update /usr/bin/php /www/wwwroot/mautic .xxx.com /bin/console mautic:campaigns:update /usr/bin/php /www/wwwroot/mautic .xxx.com /bin/console mautic:campaigns:trigger /usr/bin/php /www/wwwroot/mautic .xxx.com /bin/console mautic:emails:send /usr/bin/php /www/wwwroot/mautic .xxx.com /bin/console mautic:email:fetch /usr/bin/php /www/wwwroot/mautic .xxx.com /bin/console mautic:social:monitoring /usr/bin/php /www/wwwroot/mautic .xxx.com /bin/console mautic:webhooks:process # 下载IP地址 /www/server/php/74/bin/php /www/wwwroot/mautic .woyoalliance.com /bin/console mautic:iplookup:download |
根据上面官方给出的 N 条计划任务,我们可以手动在宝塔面板后台手动添加计划任务 Shell 脚本(* * * * 表示每分钟执行 1 次)可以看下面我给出的宝塔计划任务截图。
4、Mautic 安装完成以后,需要登录 Mautic 后台更新 GeoIP 数据库,下面给出一个官方的教程地址,自行根据官方教程去注册获取 IP 数据库的授权秘钥。
官方教程地址:https://docs.mautic.org/en/setup/maxmind-license
下面给出一个 Mautic 后台更新 GeoIP 数据库成功的截图:
注意:把账号和密码用“:”分隔 填入即可,如:官方给的账号信息
Account ID
518888
License key
X5N0BHuYSsW6DPa1
5、跟踪代码不能使用
在布署了Mautic的跟踪代码的时候,加载404报错,或不能发送数据,这些也都是因为伪静态没设置好。
添加如下代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | location ~ /mtc .js { default_type "application/javascript" ; try_files $uri /index .php$is_args$args; } location ~ /mtracking .gif { default_type "application/javascript" ; try_files $uri /index .php$is_args$args; } location ~ /mtc/event { default_type "application/javascript" ; try_files $uri /index .php$is_args$args; } |
参考:
- 如何安装Mautic? 搭建一套免费的自动营销系统-Mautic开源自动营销系统实践(1)
- Mautic使用手册1: centos7 http部署 + 编译php 整合+ mautic 部署
- 使用Mautic的几个坑
- 宝塔面板 LNMP 环境下 Mautic 3.X 最新版开源 EDM 邮件行销系统安装教程
- 宝塔面板php7.3&7.4版本不支持ZipArchive手工安装扩展方法
另外一份Nginx配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 | location / { # try to serve file directly, fallback to app.php try_files $uri /index .php$is_args$args; } # redirect some entire folders rewrite ^/(vendor|translations|build)/.* /index .php break ; # Deny everything else in /app folder except Assets folder in bundles location ~ /app/bundles/ .* /Assets/ { allow all; access_log off; } location ~ /app/ { deny all; } # Deny everything else in /addons or /plugins folder except Assets folder in bundles location ~ /(addons|plugins)/.* /Assets/ { allow all; access_log off; } # location ~ /(addons|plugins)/ { deny all; } # Deny all php files in themes folder location ~* ^ /themes/ (.*)\.php { deny all; } # Don't log favicon location = /favicon .ico { log_not_found off; access_log off; } # Don't log robots location = /robots .txt { access_log off; log_not_found off; } # Deny yml, twig, markdown, init file access location ~* /(.*)\.(?:markdown|md|twig|yaml|yml|ht|htaccess|ini)$ { deny all; access_log off; log_not_found off; } # Deny all attempts to access hidden files/folders such as .htaccess, .htpasswd, .DS_Store (Mac), etc... location ~ /\. { deny all; access_log off; log_not_found off; } # Deny all grunt, composer files location ~* (Gruntfile|package|composer)\.(js|json)$ { deny all; access_log off; log_not_found off; } # Deny access to any files with a .php extension in the uploads directory location ~* /(?:uploads|files)/.*\.php$ { deny all; } # A long browser cache lifetime can speed up repeat visits to your page ,有些统计功能是.gif后置,需求去掉这个拦截 #location ~* \.(jpg|jpeg|gif|png|webp|svg|woff|woff2|ttf|css|js|ico|xml|js)$ { location ~* \.(webp|svg|woff|woff2|ttf|css|ico|xml)$ { access_log off; log_not_found off; expires 360d; } |
摘自:在Ubuntu 18.04服务器上安装Mautic的方法
Win10下,安装Composer报错
运行:
1 | composer install |
时,报错:
1 | SymfonyComponentDebugExceptionFatalThrowableError : Return value of SymfonyComponentProcessProcess::close() must be of the type integer, null returned |
解决方案:
1、修改PHP配置文件php.ini,找到 disable_functions 字段,删除 proc_get_status、proc_open、reallink 函数。
2、设置 sys_temp_dir 选项,如:
1 | sys_temp_dir = "d:\software\BtSoft\temp_sys\" |
参考:
工作中的备份
1. Nginx配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 | server { listen 80; listen 443 ssl http2; server_name mautic.xxx.com; index index.php index.html index.htm default.php default.htm default.html; root /www/wwwroot/mautic .xxx.com; #SSL-START SSL相关配置,请勿删除或修改下一行带注释的404规则 #error_page 404/404.html; ssl_certificate /www/server/panel/vhost/cert/mautic .xxx.com /fullchain .pem; ssl_certificate_key /www/server/panel/vhost/cert/mautic .xxx.com /privkey .pem; ssl_protocols TLSv1.1 TLSv1.2; ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5; ssl_prefer_server_ciphers on; ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; add_header Strict-Transport-Security "max-age=31536000" ; error_page 497 https: // $host$request_uri; #SSL-END #ERROR-PAGE-START 错误页配置,可以注释、删除或修改 #error_page 404 /404.html; #error_page 502 /502.html; #ERROR-PAGE-END #PHP-INFO-START PHP引用配置,可以注释或修改 include enable -php-74.conf; #PHP-INFO-END #REWRITE-START URL重写规则引用,修改后将导致面板设置的伪静态规则失效 include /www/server/panel/vhost/rewrite/mautic .xxx.com.conf; #REWRITE-END #禁止访问的文件或目录 #location ~ ^/(\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md) #{ # return 404; #} #一键申请SSL证书验证目录相关设置 #location ~ ^/.well-known/{ # allow all; #} #禁止在证书验证目录放入敏感文件 #if ( $uri ~ "^/\.well-known/.*\.(php|jsp|py|js|css|lua|ts|go|zip|tar\.gz|rar|7z|sql|bak)$" ) { #return 403; #} access_log /dev/null ; error_log /www/wwwlogs/test-mautic .xxx.com.error.log; location / { # try to serve file directly, fallback to app.php try_files $uri /index .php$is_args$args; } # redirect some entire folders rewrite ^/(vendor|translations|build)/.* /index .php break ; # Deny everything else in /app folder except Assets folder in bundles location ~ /app/bundles/ .* /Assets/ { allow all; access_log off; } location ~ /app/ { deny all; } # Deny everything else in /addons or /plugins folder except Assets folder in bundles location ~ /(addons|plugins)/.* /Assets/ { allow all; access_log off; } location ~ /(addons|plugins)/ { deny all; } # Deny all php files in themes folder location ~* ^ /themes/ (.*)\.php { deny all; } # Don't log favicon location = /favicon .ico { log_not_found off; access_log off; } # Don't log robots location = /robots .txt { access_log off; log_not_found off; } # Deny yml, twig, markdown, init file access location ~* /(.*)\.(?:markdown|md|twig|yaml|yml|ht|htaccess|ini)$ { deny all; access_log off; log_not_found off; } # Deny all attempts to access hidden files/folders such as .htaccess, .htpasswd, .DS_Store (Mac), etc... location ~ /\. { deny all; access_log off; log_not_found off; } # Deny all grunt, composer files location ~* (Gruntfile|package|composer)\.(js|json)$ { deny all; access_log off; log_not_found off; } # Deny access to any files with a .php extension in the uploads directory location ~* /(?:uploads|files)/.*\.php$ { deny all; } # A long browser cache lifetime can speed up repeat visits to your page #location ~* \.(jpg|jpeg|gif|png|webp|svg|woff|woff2|ttf|css|js|ico|xml|js)$ { location ~* \.(webp|svg|woff|woff2|ttf|css|ico|xml)$ { access_log off; log_not_found off; expires 360d; } } |
2.定时任务
任务名称:【Mautic自动营销系统】计划任务
执行周期:N分钟/5分钟
脚本内容:
1 2 3 4 5 6 7 | /www/server/php/74/bin/php /www/wwwroot/mautic .woyoalliance.com /bin/console mautic:segments:update /www/server/php/74/bin/php /www/wwwroot/mautic .woyoalliance.com /bin/console mautic:campaigns:update /www/server/php/74/bin/php /www/wwwroot/mautic .woyoalliance.com /bin/console mautic:campaigns:trigger /www/server/php/74/bin/php /www/wwwroot/mautic .woyoalliance.com /bin/console mautic:emails:send /www/server/php/74/bin/php /www/wwwroot/mautic .woyoalliance.com /bin/console mautic:email:fetch /www/server/php/74/bin/php /www/wwwroot/mautic .woyoalliance.com /bin/console mautic:social:monitoring /www/server/php/74/bin/php /www/wwwroot/mautic .woyoalliance.com /bin/console mautic:webhooks:process |