数据库与邮件配置
数据库配置
建库
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; // 生产环境必须注释或移除备份
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。
验证
- 注册一个测试账号,确认验证邮件能收到且不在垃圾箱
- 检查邮件头部
From域名与站点域名一致 - 查看服务器邮件日志确认无反复重试
定时任务(cron)
Elgg 依赖 cron 处理周期任务(邮件队列、过期清理):
*/5 * * * * www-data /usr/bin/php /var/www/elgg-site/public/cron/5min.php0 * * * * www-data /usr/bin/php /var/www/elgg-site/public/cron/hourly.php未配置 cron 时,邮件队列与清理任务不会按预期执行。