SQL Server 安装指南

Posted on 2026-08-07 06:24  微蓝的天  阅读(14)  评论(0)    收藏  举报

Confluence Lite 部署指南

本文档介绍在 Windows 电脑上部署 Confluence Lite 的两种方式:Docker 部署(推荐)非 Docker 手动部署

目录


架构概览

浏览器 (http://localhost:8080)
      │
      ▼
┌──────────────┐      ┌──────────────┐      ┌──────────────┐
│   Nginx:80   │─────▶│  Express API │─────▶│  SQL Server  │
│  静态资源 +   │      │   :3001      │      │   :1433      │
│  API 反向代理 │      │  (Node.js)   │      │  (mssql)     │
└──────────────┘      └──────────────┘      └──────────────┘
  • 前端:React + Vite,构建产物由 Nginx 托管(端口 80)
  • 后端:Node.js + Express REST API(端口 3001),JWT 鉴权
  • 数据库:SQL Server 2022(端口 1433)

方式一:Docker 部署(推荐)

前提条件

软件 最低版本 说明
Docker Desktop 24.x+ 下载地址
磁盘空间 ≥ 4 GB 主要用于 SQL Server 镜像和数据库数据卷
内存 ≥ 4 GB SQL Server 最低需要 2 GB 内存

安装 Docker Desktop 后,确保在设置中启用 WSL 2(推荐)或 Hyper-V 后端。

第一步:获取项目代码

将项目文件夹 confluence-lite 复制到目标电脑上,假设放在 E:\deploy\confluence-lite

第二步:修改环境变量(重要)

部署前务必修改以下敏感信息:

文件 docker-compose.yml

需要修改 3 处密码:

# 1. SQL Server sa 密码(两处要一致)
MSSQL_SA_PASSWORD: "Your_Strong_Password123"          # 第 9 行
DB_PASSWORD: "Your_Strong_Password123"                # 第 28 行

# 2. JWT 签名密钥(换成随机长字符串)
JWT_SECRET: "change-me-to-random-string"              # 第 29 行

安全提示:JWT_SECRET 可以用以下命令随机生成:

powershell -Command "[Convert]::ToBase64String((1..32 | ForEach-Object { Get-Random -Maximum 256 }))"

第三步:启动服务

打开 PowerShell命令提示符,进入项目根目录:

cd E:\deploy\confluence-lite

# 构建镜像并启动所有服务
docker compose up -d --build

首次启动会下载镜像(SQL Server ~1.5GB,Node.js ~150MB,Nginx ~50MB),根据网速可能需要 5-15 分钟。

第四步:验证服务状态

# 查看各容器运行状态
docker compose ps

正常输出应显示 3 个容器均为 Up 状态:

NAME                    STATUS
confluence-sqlserver    Up (healthy)
confluence-backend      Up
confluence-frontend     Up

如果 confluence-sqlserver 长时间处于 starting 状态,说明 SQL Server 正在首次初始化,耐心等待 1-2 分钟即可。

第五步:访问系统

浏览器打开:

http://localhost:8080

首次使用点击「注册」创建账号,第一个注册的账号自动成为全局管理员。

修改访问端口

如果想改为其他端口(如 8088),只需修改项目根目录下的 .env 文件:

WEB_PORT=8088

然后重启服务:

docker compose down
docker compose up -d

数据备份

SQL Server 数据存储在 Docker 卷 sqlserver_data 中,建议定期备份:

# 备份:导出数据库为 SQL 脚本
docker compose exec sqlserver /opt/mssql-tools/bin/sqlcmd \
  -S localhost -U sa -P "Your_Strong_Password123" \
  -Q "BACKUP DATABASE [confluence_lite] TO DISK = N'/var/opt/mssql/backup.bak'"

# 从容器复制备份文件到宿主机
docker cp confluence-sqlserver:/var/opt/mssql/backup.bak ./backup_$(Get-Date -Format 'yyyyMMdd').bak

或者直接备份整个 Docker 卷:

docker run --rm -v confluence-lite_sqlserver_data:/data -v ${PWD}:/backup alpine tar czf /backup/sqlserver_backup.tar.gz -C /data .

停止与清理

# 停止所有服务(保留数据)
docker compose down

# 停止并删除所有数据(不可恢复!)
docker compose down -v

方式二:非 Docker 手动部署

如果不想安装 Docker,可以手动部署各个组件。

一键脚本部署(推荐)

项目根目录提供了 deploy.ps1 一键部署脚本,自动完成环境检测、配置、安装依赖、构建和启动。

前置条件:已安装 Node.js 18+,并参考下方第一步安装好 SQL Server 并创建数据库。

cd E:\deploy\confluence-lite

# 允许运行 PowerShell 脚本(如未设置过)
Set-ExecutionPolicy -Scope CurrentUser RemoteSigned

# 一键部署(交互式引导)
.\deploy.ps1

# 跳过前端构建(已构建过时可用)
.\deploy.ps1 -SkipBuild

# 跳过配置向导(已有 .env 时可用)
.\deploy.ps1 -SkipConfig

# 自定义后端端口
.\deploy.ps1 -Port 4000

脚本会按以下步骤执行:

  1. 检测 Node.js、npm、SQL Server 环境
  2. 交互式配置向导(数据库地址、密码、JWT 密钥)
  3. 安装后端依赖
  4. 安装前端依赖并构建
  5. 可选安装 pm2 管理后台进程(支持后台运行和开机自启)

手动分步部署

如果不使用脚本,也可以按以下步骤手动部署。

前提条件

软件 最低版本 下载
Node.js 18.x LTS nodejs.org
SQL Server 2022 Developer 下载 SQL Server 2022 DeveloperExpress 版
SQL Server Management Studio (SSMS) 任意版本 下载 SSMS(可选,方便管理数据库)
nginx 1.25+ nginx.org(Windows 版下载 zip 包即可)

第一步:安装并配置 SQL Server

1.1 安装 SQL Server

下载并运行 SQL Server 2022 Developer 安装程序:

  • 选择「基本」安装类型
  • 在「数据库引擎配置」步骤中,选择「混合模式(SQL Server 身份验证和 Windows 身份验证)」
  • 设置 sa 用户密码,请记下这个密码

1.2 启用 TCP/IP 协议

  1. 打开「SQL Server 配置管理器」(开始菜单搜索即可)
  2. 展开「SQL Server 网络配置」→ 点击「MSSQLSERVER 的协议」
  3. 右键「TCP/IP」→「启用」
  4. 双击「TCP/IP」→「IP 地址」选项卡
  5. 滚动到底部「IPAll」,将「TCP 端口」设为 1433
  6. 确定保存后,在左侧「SQL Server 服务」中右键「SQL Server (MSSQLSERVER)」→「重新启动」

1.3 创建数据库

打开 命令提示符PowerShell,使用 sqlcmd 创建数据库:

sqlcmd -S localhost -U sa -P "你的sa密码" -Q "CREATE DATABASE confluence_lite"

Windows 可能不自带 sqlcmd,也可以用 SSMS 图形化创建:连接服务器 → 右键「数据库」→「新建数据库」,名称填入 confluence_lite

第二步:部署后端

cd E:\deploy\confluence-lite\backend

2.1 配置环境变量

编辑 backend\.env 文件:

# 监听端口
PORT=3001

# SQL Server 连接信息
DB_HOST=localhost
DB_PORT=1433
DB_NAME=confluence_lite
DB_USER=sa
DB_PASSWORD=你设置的sa密码

# JWT 密钥(换成随机长字符串)
JWT_SECRET=换成随机长字符串

2.2 安装依赖并启动

# 安装依赖
npm install

# 生产模式启动
npm start

后端启动成功会显示:

Confluence Lite 后端运行在 http://localhost:3001

若需后台运行,可以使用 pm2

npm install -g pm2
pm2 start src/index.js --name confluence-backend
pm2 save
pm2 startup   # 设置开机自启

第三步:部署前端

3.1 安装依赖并构建

cd E:\deploy\confluence-lite\frontend
npm install
npm run build

构建产物在 frontend\dist\ 目录下。

3.2 配置 nginx

frontend\dist\ 目录复制到 nginx 的 html 目录,或修改 nginx 配置指向 dist 目录。

打开 nginx 安装目录下的 conf\nginx.conf,在 server 块中配置:

server {
    listen 8080;
    server_name _;

    # 修改为你的 dist 目录绝对路径
    root E:/deploy/confluence-lite/frontend/dist;
    index index.html;

    client_max_body_size 55m;

    location /api/ {
        proxy_pass http://localhost:3001/api/;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }

    location / {
        try_files $uri $uri/ /index.html;
    }

    gzip on;
    gzip_types text/css application/javascript application/json;
}

3.3 启动 nginx

cd C:\nginx   # 替换为你的 nginx 安装目录
start nginx

浏览器访问 http://localhost:8080

无需 nginx 的简化方案:后端本身也能托管前端静态文件。如果你不想安装 nginx,可以跳过第三步的 3.2 和 3.3,直接将前端 dist 目录放在 frontend\dist(即 backend\..\frontend\dist),后端的 index.js 会自动检测并服务静态文件。这种模式下直接访问 http://localhost:3001 即可。

第四步:设置为 Windows 服务(可选)

如需开机自启动,推荐使用 pm2 管理 Node.js 进程:

npm install -g pm2

# 启动后端
cd E:\deploy\confluence-lite\backend
pm2 start src/index.js --name confluence-backend

# 设置开机自启
pm2 save
pm2 startup

部署后初始化

创建管理员账号

  1. 浏览器打开系统首页
  2. 点击「注册」
  3. 填写用户名、显示名称和密码
  4. 注册成功后自动获得全局管理员权限

第一个注册的用户即为全局管理员,可以管理所有空间和用户。

创建第一个空间

  1. 登录后点击左侧「+ 新建空间」
  2. 填写空间名称、Key(唯一标识,如 TEAMDEV
  3. 选择可见性(公开/私有)
  4. 在空间内即可创建页面(文档、看板、数据看板等)

常用运维操作

查看后端日志

Docker 部署

docker compose logs -f backend

手动部署

pm2 logs confluence-backend

重启服务

Docker 部署

docker compose restart

手动部署

pm2 restart confluence-backend

数据库备份

Docker 部署

docker compose exec sqlserver /opt/mssql-tools/bin/sqlcmd \
  -S localhost -U sa -P "Your_Strong_Password123" \
  -Q "BACKUP DATABASE [confluence_lite] TO DISK = N'/var/opt/mssql/backup.bak'"

docker cp confluence-sqlserver:/var/opt/mssql/backup.bak ./backup.bak

手动部署(使用 SSMS 图形化操作或 sqlcmd):

sqlcmd -S localhost -U sa -P "你的sa密码" `
  -Q "BACKUP DATABASE [confluence_lite] TO DISK = N'E:\backups\confluence_lite.bak'"

升级版本

获取新代码后:

Docker 部署

docker compose down
docker compose up -d --build

数据库表结构会在后端启动时自动迁移,已有数据不会丢失。

手动部署

# 后端
cd backend
npm install
pm2 restart confluence-backend

# 前端
cd frontend
npm install
npm run build

常见问题

Q1: Docker 启动后 SQL Server 容器一直在重启

SQL Server 需要至少 2 GB 内存。确保 Docker Desktop 设置中分配了足够的内存(Settings → Resources → Memory ≥ 4GB)。

Q2: 浏览器打开后页面空白

按 F12 打开开发者工具 → Console,查看是否有报错:

  • 502 Bad Gateway:后端未启动完成,等待 1-2 分钟后刷新
  • CORS 错误:检查 nginx 代理配置是否正确
  • 数据库连接失败:检查 SQL Server 是否正常运行,密码是否配置正确

Q3: better-sqlite3 编译失败(Docker 构建时)

后端的 Dockerfile 已内置编译依赖(python3、make、g++),正常情况不会失败。如果在特殊 CPU 架构上构建较慢,耐心等待即可。

Q4: SQL Server 端口被占用

如果本机已经安装了 SQL Server 并使用 1433 端口,修改 docker-compose.yml 的端口映射:

ports:
  - "14330:1433"   # 改为其他端口

Q5: 如何彻底重置(清空所有数据重新开始)

Docker 部署

docker compose down -v
docker compose up -d --build

手动部署

-- 连接数据库后执行
DROP DATABASE confluence_lite;
CREATE DATABASE confluence_lite;

然后重启后端服务即可,数据库表结构会自动重新创建。

Q6: 想用 HTTPS 访问怎么办?

推荐在 nginx 前套一层反向代理(如 Caddy、Nginx Proxy Manager),由它们处理 HTTPS 证书,系统本身无需任何改动。本地使用无需配置 HTTPS。

Q7: 看板导入 SQLite 文件报错

上传的 SQLite 文件大小限制为 100 MB,且必须是有效的 SQLite 格式。如果用 Navicat 导出的 .sql 文本文件是不支持的,请导出为 .db.sqlite 格式。

博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3