跳转到内容

数据库与邮件配置

数据库配置

建库

CREATE DATABASE elgg_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'elgg_user'@'localhost' IDENTIFIED BY '强密码';
GRANT ALL PRIVILEGES ON elgg_db.* TO 'elgg_user'@'localhost';
FLUSH PRIVILEGES;

字符集必须 utf8mb4——站点内容包含 emoji 或生僻字时,utf8mb3 会导致写入报错。

settings.php

安装向导生成的 config/settings.php 保存数据库连接。生产环境建议增加以下配置:

// 数据库连接保持默认即可;重点是不要把调试打开
// $CONFIG->debug = true; // 生产环境必须注释或移除

备份

Terminal window
mysqldump --single-transaction -u elgg_user -p elgg_db | gzip > elgg_db_$(date +%F).sql.gz

--single-transaction 避免锁表。每日执行一次并异地保留至少 7 天。

邮件配置

Elgg 默认使用 PHP mail(),在多数云服务器上送达率很差(IP 信誉与反向解析问题)。生产环境请直接上 SMTP。

方案一:PHPMailer 插件

安装 PHPMailer 集成插件,在后台填写 SMTP 参数。以腾讯企业邮箱为例:

参数 值
SMTP 主机 smtp.exmail.qq.com
端口 465
加密 SSL
认证 SMTP 账号 / 密码(或客户端专用密码)

方案二:独立邮件服务

对送达率有要求时,使用 Resend、阿里云邮件推送等事务邮件服务,配置发信域名 SPF/DKIM。

验证

  1. 注册一个测试账号,确认验证邮件能收到且不在垃圾箱
  2. 检查邮件头部 From 域名与站点域名一致
  3. 查看服务器邮件日志确认无反复重试

定时任务(cron)

Elgg 依赖 cron 处理周期任务(邮件队列、过期清理):

*/5 * * * * www-data /usr/bin/php /var/www/elgg-site/public/cron/5min.php
0 * * * * www-data /usr/bin/php /var/www/elgg-site/public/cron/hourly.php

未配置 cron 时,邮件队列与清理任务不会按预期执行。