安装与部署
环境要求
Q: DoraCMS 支持哪些 Node.js 版本?
A:
- 最低要求: Node.js 14.0.0
- 推荐版本: Node.js 18.20.0+
- 最新测试: Node.js 20.x
如果你使用的是旧版本,建议使用 nvm 升级:
# 安装 nvm
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
# 安装 Node.js 18
nvm install 18
nvm use 18
nvm alias default 18Q: 必须使用 pnpm 吗?可以用 npm 或 yarn 吗?
A:
- 推荐使用 pnpm: 项目采用 monorepo 架构,pnpm 对 workspace 支持最好
- 可以使用 npm: 但某些脚本可能需要调整
- 不推荐 yarn: 兼容性可能有问题
安装 pnpm:
npm install -g pnpmQ: 支持哪些操作系统?
A:
- ✅ macOS 10.15+
- ✅ Ubuntu 18.04+
- ✅ CentOS 7+
- ✅ Windows 10+ (推荐使用 WSL2)
Windows 用户建议使用 WSL2 或 Docker。
CLI 工具
Q: 如何安装 DoraCMS CLI?
A:
# 使用 pnpm(推荐)
pnpm add -g doracms-cli
# 使用 npm
npm install -g doracms-cli
# 验证安装
doracms --version详细使用说明请查看 CLI 工具文档。
Q: CLI 创建项目失败怎么办?
A: 检查以下几点:
1. 项目名称是否有效
# ✅ 有效的项目名称
doracms create my-project
doracms create my-cms-app
# ❌ 无效的项目名称
doracms create My-Project # 不能包含大写字母
doracms create my project # 不能包含空格
doracms create @my/project # 不能包含特殊字符2. 目标目录是否已存在
# 删除已存在的目录
rm -rf my-project
# 或使用不同的项目名称
doracms create my-project-v23. 网络连接是否正常
# 测试网络
ping registry.npmjs.org
# 使用镜像源
pnpm config set registry https://registry.npmmirror.com4. Node.js 版本是否符合要求
# 检查版本(需要 >= 18.0.0)
node --version
# 升级 Node.js
nvm install 18
nvm use 18Q: 如何更新 CLI 到最新版本?
A:
# 使用 pnpm
pnpm update -g doracms-cli
# 使用 npm
npm update -g doracms-cli
# 查看当前版本
doracms --versionQ: CLI 创建的项目如何启动?
A:
cd my-project
# 1. 配置环境变量
nano .env # 编辑数据库连接等配置
# 2. 安装依赖(如果创建时跳过了)
pnpm install
# 3. 启动项目
pnpm run dev:all # 完整全栈项目
# 或
pnpm run dev:server # 纯后端 API
# 或
pnpm run dev # 用户端项目Q: 如何在 CLI 创建的项目中添加或删除模块?
A:
编辑 server/config/modules.config.js 文件:
module.exports = {
business: {
// 启用广告模块
ads: {
enabled: true, // 改为 true 启用
// ...
},
// 禁用插件模块
plugin: {
enabled: false, // 改为 false 禁用
// ...
},
},
};修改后重启应用即可生效。
Q: CLI 支持哪些项目类型?
A:
CLI 支持三种项目类型:
完整全栈项目 (fullstack)
- 包含管理后台、用户中心和后端 API
- 适合企业内部 CMS、学习和演示
纯后端 API (backend-only)
- Headless CMS,只提供 API
- 适合移动应用、小程序后端
前后端分离 - 用户端 (user-separated)
- 包含用户中心和后端 API
- 适合博客、新闻站、社区论坛
详细说明请查看 CLI 工具文档。
Docker 部署
Q: 有完整的 Docker 部署指南吗?
A: 是的,参见 Docker 部署(部署模式、环境变量、Nginx/HTTPS)和 运维与排障(健康检查、日志、备份与排障)。FAQ 只保留速查型答案,避免与部署章节重复。
Q: Docker 启动失败如何快速排查?
A: 先看日志、再查端口,必要时重建。更多细节见 运维与排障。
docker compose logs -f # 查看错误
lsof -i :8080 # 检查端口占用
docker compose down && docker compose up -d --buildQ: 如何修改默认端口?
A: 在 docker-compose.yml 调整暴露端口,重启后生效。
services:
eggcms-app:
ports:
- "8080:8080" # 外部:内部Q: 如何查看日志/进入容器?
A: 常用命令如下,更多运维命令见 运维与排障。
docker compose logs -f eggcms-app
docker compose exec eggcms-app sh本地开发
Q: 依赖安装失败怎么办?
A: 常见问题:
1. 网络问题
# 使用淘宝镜像
pnpm config set registry https://registry.npmmirror.com
# 重新安装
rm -rf node_modules
pnpm install2. 权限问题
# 修改文件权限
sudo chown -R $USER:$USER .
# 重新安装
pnpm install3. Node 版本不兼容
# 检查 Node 版本
node --version
# 切换版本
nvm use 184. 缓存问题
# 清理 pnpm 缓存
pnpm store prune
# 清理所有依赖
pnpm clean
pnpm installQ: 启动报错 "Cannot find module"?
A:
# 重新安装依赖
pnpm install
# 如果还不行,清理后重装
pnpm clean
pnpm installQ: 端口被占用怎么办?
A:
macOS/Linux:
# 查找占用端口的进程
lsof -i :8080
# 杀死进程
kill -9 <PID>Windows:
# 查找占用端口的进程
netstat -ano | findstr :8080
# 杀死进程
taskkill /PID <PID> /F或修改配置文件:
编辑 server/config/config.local.js:
config.cluster = {
listen: {
port: 7002, // 改为其他端口
hostname: "127.0.0.1",
},
};数据库问题
Q: MongoDB 连接失败?
A: 检查以下几点:
1. MongoDB 是否启动
# macOS
brew services list
# Ubuntu
sudo systemctl status mongodb
# 启动 MongoDB
brew services start mongodb-community # macOS
sudo systemctl start mongodb # Linux2. 检查连接配置
// server/config/config.local.js
config.mongoose = {
client: {
url: "mongodb://127.0.0.1:27017/doracms", // 检查地址和端口
options: {
useNewUrlParser: true,
useUnifiedTopology: true,
},
},
};3. 检查防火墙
# 测试连接
mongosh mongodb://127.0.0.1:27017/doracms4. 查看 MongoDB 日志
# macOS
tail -f /usr/local/var/log/mongodb/mongo.log
# Linux
tail -f /var/log/mongodb/mongodb.logQ: MariaDB 连接失败?
A:
1. MariaDB 是否启动
# macOS
brew services list
# Ubuntu
sudo systemctl status mariadb
# 启动 MariaDB
brew services start mariadb # macOS
sudo systemctl start mariadb # Linux2. 检查连接配置
// server/config/config.local.js
config.sequelize = {
dialect: "mariadb",
host: "127.0.0.1",
port: 3306,
database: "doracms",
username: "root",
password: "your_password", // 检查密码
};3. 测试连接
mysql -h 127.0.0.1 -u root -p4. 检查用户权限
-- 创建数据库
CREATE DATABASE doracms CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- 创建用户并授权
CREATE USER 'doracms'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON doracms.* TO 'doracms'@'localhost';
FLUSH PRIVILEGES;Q: 数据库初始化失败?
A:
# MongoDB 初始化
pnpm run init:mongo
# MariaDB 初始化
pnpm run init:maria
# 如果失败,查看日志
DEBUG=* pnpm run init:mongo生产部署
Q: 如何配置生产环境?
A:
1. 创建生产配置文件
// server/config/config.prod.js
module.exports = () => {
const config = {};
// 安全配置
config.keys = process.env.APP_KEYS || "production-keys-change-me";
// 数据库配置
config.mongoose = {
client: {
url: process.env.MONGODB_URL,
options: {
poolSize: 20,
},
},
};
// 日志配置
config.logger = {
dir: "/var/log/doracms",
level: "INFO",
};
// CORS 配置
config.cors = {
origin: "https://your-domain.com",
credentials: true,
};
return config;
};2. 使用 PM2 管理进程
# 安装 PM2
npm install -g pm2
# 启动应用
cd server
pm2 start app.js --name doracms-server
# 设置开机自启
pm2 startup
pm2 save
# 查看日志
pm2 logs doracms-server
# 重启
pm2 restart doracms-server3. 配置 Nginx
server {
listen 80;
server_name your-domain.com;
# API 代理
location /api {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
# 前端静态文件
location / {
root /path/to/doracms-client/user-center/dist;
try_files $uri $uri/ /index.html;
}
}Q: 生产环境部署建议?
A:
性能优化:
- ✅ 使用 PM2 cluster 模式
- ✅ 配置 Nginx 缓存
- ✅ 启用 Gzip 压缩
- ✅ CDN 加速静态资源
安全配置:
- ✅ 配置 HTTPS
- ✅ 修改默认密钥
- ✅ 配置防火墙
- ✅ 定期备份数据
监控告警:
- ✅ PM2 监控
- ✅ 日志分析
- ✅ 性能监控
- ✅ 错误告警
Q: 如何备份数据?
A:
MongoDB 备份:
# 备份
mongodump --db doracms --out /backup/$(date +%Y%m%d)
# 恢复
mongorestore --db doracms /backup/20240101/doracmsMariaDB 备份:
# 备份
mysqldump -u root -p doracms > backup_$(date +%Y%m%d).sql
# 恢复
mysql -u root -p doracms < backup_20240101.sql自动备份脚本:
#!/bin/bash
# backup.sh
DATE=$(date +%Y%m%d)
BACKUP_DIR="/backup/$DATE"
mkdir -p $BACKUP_DIR
# 备份 MongoDB
mongodump --db doracms --out $BACKUP_DIR
# 删除 7 天前的备份
find /backup -type d -mtime +7 -exec rm -rf {} \;添加到 crontab:
# 每天凌晨 2 点备份
0 2 * * * /path/to/backup.sh常见错误
Q: "EACCES: permission denied"
A:
# 修改文件权限
sudo chown -R $USER:$USER .
# 或使用 sudo(不推荐)
sudo pnpm installQ: "Maximum call stack size exceeded"
A:
# 增加 Node.js 内存限制
export NODE_OPTIONS="--max-old-space-size=4096"
# 或在启动脚本中设置
node --max-old-space-size=4096 app.jsQ: "connect ETIMEDOUT"
A:
# 检查网络连接
ping registry.npmjs.org
# 使用代理
pnpm config set proxy http://proxy-server:port
pnpm config set https-proxy http://proxy-server:port
# 或使用镜像
pnpm config set registry https://registry.npmmirror.com获取帮助
如果以上方案都无法解决你的问题:
- 📖 查看 完整文档
- 🐛 提交 Issue
- 💬 加入 讨论区
- 📧 发送邮件到 doramart@qq.com