Admin Core

Windows Server 部署指南

本指南详细介绍在 Windows Server 2022 上部署 ZhonTai 项目完整流程,包括环境配置、后端/前端项目发布、Nginx 配置及服务部署。

本指南详细介绍在 Windows Server 2022 上部署 ZhonTai 项目完整流程,包括环境配置、后端/前端项目发布、Nginx 配置及服务部署。


一、服务器准备

1.1 购买服务器

按需购买云服务器,可点击 云产品特惠 了解详情。

1.2 选择操作系统

选择 Windows Server 2022 作为服务器操作系统。

1.3 关闭自动更新

提示:建议关闭 Windows 自动下载更新功能。

  1. Win + R 打开运行对话框,输入 cmd,按 Ctrl + Shift + Enter 以管理员身份打开命令提示符
  2. 在命令行中输入 sconfig,按 Enter
  3. 选择 5(更新设置),按 Enter
  4. 选择 3(手动),按 Enter

二、环境安装

2.1 必需软件

软件 用途 下载地址
Google Chrome 浏览器 下载地址
Microsoft Edge 浏览器 下载地址
nginx 反向代理服务器 下载地址
Notepad++ 文本编辑器 下载地址
WinSW Windows 服务注册工具 下载地址
Beekeeper Studio 数据库管理工具 下载地址

2.2 数据库安装

下载 PostgreSQL (Windows zip 版本) 并完成安装。

2.3 .NET 运行时安装

在 Windows 上部署建议安装托管捆绑包(包括 .NET 运行时和 IIS 支持)。

安装步骤

  1. 访问 .NET 10.0 运行时下载页面,点击下载
  2. 在下载页面中选择 Windows 运行服务器应用,点击下载 Hosting Bundle

验证安装

1
2
3
4
5
# 查看已安装的运行时
dotnet --list-runtimes

# 查看已安装的 SDK
dotnet --list-sdks

注意:开发的 .NET 运行时版本必须与服务器安装的版本保持一致。


三、发布后端项目

Admin.Core 项目为例进行发布说明,项目模板生成的项目操作方法类似。

3.1 修改数据库实现包

  1. 在 Host 项目中找到依赖包配置,删除 SQLite 引用:

    1
    2
    <!-- 删除此行 -->
    <PackageReference Include="FreeSql.Provider.Sqlite" Version="3.5.308" />
  2. 添加 PostgreSQL 引用:

    1
    <PackageReference Include="FreeSql.Provider.PostgreSQL" Version="3.5.308" />
  3. 最终 ItemGroup 配置示例:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <ItemGroup>
    <!-- 其他数据库驱动(可选注释) -->
    <!-- <PackageReference Include="FreeSql.Provider.MySql" Version="3.5.308" /> -->
    <!-- <PackageReference Include="FreeSql.Provider.SqlServer" Version="3.5.308" /> -->
    <!-- <PackageReference Include="FreeSql.Provider.Oracle" Version="3.5.308" /> -->
    <!-- <PackageReference Include="FreeSql.Provider.Sqlite" Version="3.5.308" /> -->

    <PackageReference Include="DotNetCore.CAP.Dashboard" Version="10.0.1" />
    <PackageReference Include="DotNetCore.CAP.InMemoryStorage" Version="10.0.1" />
    <PackageReference Include="FreeSql.Provider.PostgreSQL" Version="3.5.308" />
    <PackageReference Include="Savorboard.CAP.InMemoryMessageQueue" Version="10.0.0" />
    </ItemGroup>

3.2 修改配置文件

  1. 修改 ConfigCenter/dbconfig.json 数据库配置(参考文档新建数据库)
  2. 修改 ConfigCenter/jwtconfig.json JWT 配置,重新生成 GUID 并修改 securityKey

3.3 发布项目

  1. 右键点击 Host 项目,选择 发布
  2. 配置发布选项(根据实际情况调整)

3.4 运行项目

  1. 双击 ZhonTai.Host.exe 运行程序

提示:首次启动会创建数据库并初始化数据,完成后需关闭程序。

3.5 首次运行后配置

  1. 关闭程序后,修改 dbconfig.json

    1
    2
    3
    4
    5
    {
    "curd": false,
    "createDb": false,
    "syncStructure": false
    }
  2. 重新启动 ZhonTai.Host.exe,应显示以下日志:

    1
    2
    3
    4
    5
    6
    7
    Application startup
    ...
    ### CAP started!
    Overriding address(es) 'http://*:18010'.
    Binding to endpoints defined via IConfiguration and/or UseKestrel() instead.
    Now listening on: http://[::]:18010
    Now listening on: http://[::]:18011
  3. 根据 appconfig.apiUI.routePrefix 配置的路径访问:

    1
    http://localhost:18010/doc/admin

四、发布前端项目

4.1 构建项目

方式一:点击 NPM 脚本 下的 build 脚本

方式二:按 Ctrl + 反引号(`)打开命令窗口,执行:

1
pnpm run build

4.2 发布文件

构建成功的文件位于 dist 目录内。


五、Nginx 部署

5.1 安装 Nginx 服务

5.1.1 配置 WinSW

  1. WinSW-x64.exe 复制到 nginx 安装目录,重命名为 nginx-service.exe
  2. nginx-service.exe 所在目录下新建 nginx-service.xml 配置文件:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<service>
<id>nginx</id>
<name>nginx service</name>
<description>nginx 反向代理服务器</description>
<logpath>logs</logpath>
<log mode="roll-by-size-time">
<sizeThreshold>10240</sizeThreshold>
<keepFiles>8</keepFiles>
<pattern>yyyyMMdd</pattern>
<autoRollAtTime>00:00:00</autoRollAtTime>
</log>
<onfailure action="restart" delay="10 sec"/>
<onfailure action="none" />
<executable>%BASE%\nginx.exe</executable>
<startarguments>-p %BASE%</startarguments>
<stopexecutable>%BASE%\nginx.exe</stopexecutable>
<stoparguments>-p %BASE% -s stop</stoparguments>
</service>

更多 WinSW 配置请参考 官方文档

5.1.2 安装服务

  1. nginx-service.exe 所在目录下,以管理员身份打开命令提示符
  2. 执行以下命令安装并启动服务:
1
2
3
4
5
# 安装服务
nginx-service.exe install

# 启动服务
nginx-service.exe start

5.1.3 WinSW 常用命令

操作 命令
安装服务 nginx-service.exe install
卸载服务 nginx-service.exe uninstall
停止服务 nginx-service.exe stop
启动服务 nginx-service.exe start

5.2 Nginx 配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
worker_processes  1;

events {
worker_connections 4096;
}

http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;

upstream ws_server {
server 127.0.0.1:17010;
}

upstream admin_server {
server 127.0.0.1:18010;
}

server {
listen 80;
server_name localhost;

# 开启 gzip 压缩
gzip on;
gzip_min_length 1k;
gzip_comp_level 9;
gzip_types text/plain application/javascript application/x-javascript
text/css application/xml text/javascript
application/x-httpd-php image/jpeg image/gif image/png;
gzip_vary on;
gzip_disable "MSIE [1-6]\.";

# 前端静态文件配置
location / {
# 静态资源缓存策略
if ($request_filename ~* .*\.(?:htm|html)$) {
add_header Cache-Control "private, no-store, no-cache, must-revalidate, proxy-revalidate";
}
root /web/ui/admin/dist;
index index.html index.htm;
try_files $uri $uri /index.html;
}

# WebSocket 反向代理
location /ws {
proxy_pass http://ws_server;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}

# API 及静态资源代理
location ~* ^/(api|ws|upload|images|swagger|swagger-resources)/ {
include uwsgi_params;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_pass http://admin_server;
}

# 错误页面配置
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}

六、服务部署

6.1 NSSM 安装接口服务

NSSM(Non-Sucking Service Manager)可将任何可执行程序包装为 Windows 服务,支持进程守护和自动重启功能。

6.1.1 下载与安装 NSSM

  1. 访问 NSSM 官网下载页面
  2. 下载 nssm-2.24.zip 并解压到指定目录(如 D:\tools\nssm
  3. 建议将 nssm.exe 所在路径添加到系统环境变量 PATH

6.1.2 NSSM 常用命令

操作 命令
安装服务 nssm install <服务名>
修改服务 nssm edit <服务名>
启动服务 nssm start <服务名>
停止服务 nssm stop <服务名>
重启服务 nssm restart <服务名>
删除服务 nssm remove <服务名>(加 -confirm 跳过确认)
查看状态 nssm status <服务名>

6.1.3 安装 .NET API 服务

准备发布文件:将 .NET API 发布文件放置于 D:\publish\myapi 目录

安装服务

  1. 在 NSSM 目录下(若已添加环境变量,可在任意位置),以管理员身份打开命令提示符

  2. 执行安装命令:

    1
    nssm install MyCompany.MyApi
  3. 在弹出的 NSSM 配置窗口中填写配置:

    配置项 说明 示例值
    Application Path dotnet.exe 所在路径 C:\Program Files\dotnet\dotnet.exe
    Application Startup directory 应用接口 DLL 所在目录 D:\publish\myapi
    Application Arguments 应用接口 DLL 文件名 MyApi.dll
    Service name 服务名称 MyCompany.MyApi
    Details Display name 显示名称 MyCompany.MyApi
    Details Discription 描述信息 公司模块接口
  4. 点击 Install service 按钮完成安装

6.1.4 启动与验证服务

方式一:使用 NSSM 命令

1
nssm start MyCompany.MyApi

方式二:使用 Windows 服务管理器

  1. Win + R,输入 services.msc 并回车
  2. 找到 MyCompany.MyApi,右键选择 启动

6.1.5 高级配置(可选)

  • 日志输出:在 I/O 配置项中指定 stdoutstderr 日志文件路径(如 D:\logs\myapi\stdout.log
  • 服务依赖:在 Dependencies 中添加依赖服务名称(如 ZhonTai.Admin

6.1.6 常见问题排查

问题一:服务启动后立即停止

  • 检查 dotnet.exe 路径是否正确
  • 双击启动 MyApi.exe,在命令行中查看运行日志是否正常
  • 检查 NSSM 配置的日志文件

问题二:访问 18010 端口失败

  • 确认服务已成功启动
  • 检查 AppConfig.jsonAppConfig.urls 配置是否为 http://*:18010
  • 检查防火墙入站规则

6.2 WinSW 安装接口服务

6.2.1 配置 WinSW

  1. WinSW-x64.exe 复制到 publish/MyApi.dll 所在目录,重命名为 myapi-service.exe
  2. 在同一目录下新建 myapi-service.xml 配置文件:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<service>
<id>mycompany-myapi</id>
<name>mycompany myapi</name>
<description>*公司*项目接口</description>
<logpath>../logs</logpath>
<log mode="roll-by-size-time">
<sizeThreshold>10240</sizeThreshold>
<keepFiles>8</keepFiles>
<pattern>yyyyMMdd</pattern>
<autoRollAtTime>00:00:00</autoRollAtTime>
</log>
<onfailure action="restart" delay="10 sec"/>
<onfailure action="none" />
<executable>MyApi.dll</executable>
<stopexecutable>MyApi.dll</stopexecutable>
<autoRefresh>true</autoRefresh>
</service>

6.2.2 安装并启动服务

  1. myapi-service.exe 所在目录下,以管理员身份打开命令提示符

  2. 执行以下命令:

    1
    2
    3
    4
    5
    # 安装服务
    myapi-service.exe install

    # 启动服务
    myapi-service.exe start

七、IIS 部署

7.1 安装 IIS

  1. 打开 服务器管理器
  2. 点击 管理添加角色和功能
  3. 选择 基于角色或基于功能的安装,点击 下一步
  4. 选择目标服务器,点击 下一步
  5. 服务器角色 页面勾选 Web 服务器 (IIS)
  6. 功能 页面选择相关功能(如 .NET Framework、ASP.NET),点击 下一步
  7. Web 服务器角色 (IIS) 页面:
    • 安装基本功能
    • 若使用消息推送中的 WebSocket 功能,需额外勾选:
      • Web 服务器应用程序开发WebSocket 协议
  8. 点击 下一步,确认安装选择后点击 安装

7.2 后端部署

  1. 在 IIS 中右键 网站,选择 添加网站
  2. 配置网站参数(参考项目实际配置)
  3. 访问 API 接口文档地址:
    1
    http://localhost:16010/doc/admin/index.html

7.3 前端部署

  1. 在 IIS 中右键 网站,选择 添加网站
  2. 配置网站参数(参考项目实际配置)
  3. 访问前端网站地址:
    1
    http://localhost:9010

八、常见问题

页面访问正常,刷新 404 错误

如遇页面刷新后出现 404 错误,请参考 页面访问正常-刷新 404 错误修复方案


九、服务管理速查表

NSSM 命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 安装服务
nssm install <服务名>

# 启动服务
nssm start <服务名>

# 停止服务
nssm stop <服务名>

# 重启服务
nssm restart <服务名>

# 删除服务
nssm remove <服务名> -confirm

WinSW 命令

1
2
3
4
5
6
7
8
9
10
11
# 安装服务
<服务名>-service.exe install

# 启动服务
<服务名>-service.exe start

# 停止服务
<服务名>-service.exe stop

# 卸载服务
<服务名>-service.exe uninstall

温馨提示:部署过程中遇到问题,请优先检查日志文件和服务状态确认配置是否正确。

#Windows #Windows/环境配置 #中台 #中台/搭建项目框架 #配置文件