# 1. 进入数据库目录
cd database
# 2. 添加执行权限
chmod +x deploy-database.sh
# 3. 运行部署脚本
./deploy-database.sh# 1. 创建数据库(如果不存在)
createdb -U postgres cogniflow
# 2. 执行部署脚本
psql -U postgres -d cogniflow -f database/deploy.sql- PostgreSQL: 16.0+ (推荐 16.x 或更高版本)
- 操作系统: Linux / macOS / Windows
- 磁盘空间: 至少 500MB 可用空间
psql --version在项目根目录创建 .env 文件:
# 数据库配置
DATABASE_URL=postgresql://postgres:your_password@localhost:5432/cogniflow
DB_HOST=localhost
DB_PORT=5432
DB_NAME=cogniflow
DB_USER=postgres
DB_PASSWORD=your_password
# 服务器配置
PORT=3001
NODE_ENV=production
# JWT 配置
JWT_SECRET=your-super-secret-jwt-key-change-this-in-production
JWT_EXPIRES_IN=7d对于生产环境(如阿里云 ECS),使用以下配置:
# 在服务器上设置环境变量
export DB_NAME=cogniflow
export DB_USER=postgres
export DB_HOST=localhost
export DB_PORT=5432
export DB_PASSWORD=your_secure_password
# 然后运行部署脚本
./database/deploy-database.sh| 步骤 | 内容 | 说明 |
|---|---|---|
| 1 | 创建扩展 | uuid-ossp, pgcrypto |
| 2 | 创建表结构 | 10个核心表 |
| 3 | 创建触发器 | 自动更新 updated_at |
| 4 | 创建视图 | 用户统计、活跃度视图 |
| 5 | 插入初始数据 | 默认管理员账号 |
| 6 | 创建默认模板 | 日报、会议、月报模板 |
- users - 用户表
- user_settings - 用户配置
- items - 核心条目表(包含智能模板支持)
- user_templates - 智能模板表
- tags - 标签表
- activity_logs - 活动日志
- user_statistics - 用户统计
- system_logs - 系统日志
- sessions - 会话管理
- backups - 备份记录
部署完成后会创建默认管理员账号:
用户名: admin
密码: admin123
邮箱: admin@cogniflow.local
-- 修改管理员密码
UPDATE users
SET password_hash = crypt('new_password', gen_salt('bf', 10))
WHERE username = 'admin';系统会自动为所有用户创建 3 个默认模板:
- 触发词:
/日报 - 默认标签: 工作、日报
- 子任务:
- 总结今日完成的工作
- 记录遇到的问题
- 规划明日工作计划
- 触发词:
/会议 - 默认标签: 会议、工作
- 子任务:
- 记录会议议题
- 记录讨论要点
- 记录行动项
- 触发词:
/月报 - 默认标签: 工作、月报
- 子任务:
- 本月工作完成情况
- 重点成果与亮点
- 下月工作计划
错误信息: FATAL: database "cogniflow" does not exist
解决方案:
# 手动创建数据库
createdb -U postgres cogniflow错误信息: ERROR: permission denied to create extension
解决方案:
# 使用超级用户身份创建扩展
psql -U postgres -d cogniflow -c "CREATE EXTENSION IF NOT EXISTS \"uuid-ossp\";"
psql -U postgres -d cogniflow -c "CREATE EXTENSION IF NOT EXISTS \"pgcrypto\";"错误信息: ERROR: relation "users" already exists
解决方案: 脚本使用 IF NOT EXISTS,此警告可以忽略。如需重新部署:
# 方式一:删除并重建数据库(⚠️ 会丢失所有数据)
dropdb -U postgres cogniflow
createdb -U postgres cogniflow
psql -U postgres -d cogniflow -f database/deploy.sql
# 方式二:仅删除特定表
psql -U postgres -d cogniflow -c "DROP TABLE IF EXISTS users CASCADE;"错误信息: FATAL: password authentication failed
解决方案:
# 检查 pg_hba.conf 配置
sudo nano /etc/postgresql/16/main/pg_hba.conf
# 确保有以下行(根据实际情况调整)
local all postgres peer
host all all 127.0.0.1/32 md5
# 重启 PostgreSQL
sudo systemctl restart postgresql错误信息: could not connect to server: Connection refused
解决方案:
# 检查 PostgreSQL 是否运行
sudo systemctl status postgresql
# 启动 PostgreSQL
sudo systemctl start postgresql
# 检查端口占用
sudo netstat -tulpn | grep 5432# 完整备份
pg_dump -U postgres cogniflow > backup_$(date +%Y%m%d).sql
# 仅备份数据(不包括表结构)
pg_dump -U postgres --data-only cogniflow > data_backup.sql
# 备份特定表
pg_dump -U postgres -t users -t items cogniflow > users_items_backup.sql# 从备份文件恢复
psql -U postgres -d cogniflow < backup_20251103.sql# 连接到数据库
psql -U postgres -d cogniflow
# 查看所有表
\dt
# 查看表结构
\d users
# 查看表大小
\dt+
# 退出
\q部署完成后,执行以下查询验证:
-- 1. 检查用户表
SELECT username, role, created_at FROM users;
-- 2. 检查默认模板
SELECT trigger_word, template_name, icon FROM user_templates;
-- 3. 检查表数量
SELECT
schemaname,
COUNT(*) as table_count
FROM pg_tables
WHERE schemaname = 'public'
GROUP BY schemaname;
-- 4. 检查索引
SELECT
tablename,
COUNT(*) as index_count
FROM pg_indexes
WHERE schemaname = 'public'
GROUP BY tablename
ORDER BY index_count DESC;预期结果:
- 1 个管理员用户
- 3 个默认模板(每个用户)
- 10 个主要表
- 40+ 个索引
# 1. 安装 PostgreSQL
sudo apt update
sudo apt install postgresql postgresql-contrib
# 2. 配置 PostgreSQL
sudo -u postgres psql
ALTER USER postgres PASSWORD 'your_secure_password';
\q
# 3. 克隆项目(或上传文件)
cd /root/vibe-code-100-projects/cogniflow
# 4. 运行部署脚本
chmod +x database/deploy-database.sh
DB_PASSWORD=your_secure_password ./database/deploy-database.sh
# 5. 配置环境变量
cp .env.example .env
nano .env # 编辑数据库配置
# 6. 启动后端服务
cd server
npm install
npm run build
npm start
# 7. 启动前端服务(生产模式)
cd ..
pnpm install
pnpm run build
# 8. 配置 Nginx(已完成)
sudo nginx -t
sudo systemctl reload nginx- ✅ 初始版本发布
- ✅ 包含所有核心表结构
- ✅ 智能模板功能支持
- ✅ 自动化部署脚本
- ✅ 默认数据初始化
如遇到其他问题,请检查:
- 日志文件:
/var/log/postgresql/postgresql-16-main.log - 系统日志: 检查
system_logs表 - Nginx 日志:
/var/log/nginx/cogniflow-error.log
部署完成后,别忘了修改默认密码! 🔐