.NET 项目
.NET 项目用于部署基于 .NET 运行环境构建的应用,例如 ASP.NET Core Web/API、Blazor Server、gRPC 和 Worker Service 应用。 .NET 被视为一等公民项目类型,因此面板会将你的应用作为 systemd 服务进行管理,并可选择一步为其创建反向代理网站。
前置条件
- 安装 .NET 运行环境:应用 > 运行环境 > .NET
- 你的 .NET 项目的发布产物或源代码
TIP
你可以安装多个 .NET 版本。 创建项目时你需要选择使用哪个已安装的版本来运行它,因此不同项目可以并行运行在不同的 .NET 版本上。
创建 .NET 项目
- 进入 项目 页面并打开 .NET 选项卡
- 点击 创建项目
- 填写配置:
- 项目名称:例如
myapp。 它会用作systemd服务标识符,因此只能包含字母、数字、下划线和连字符。 - 项目目录:留空则默认为
/opt/ace/projects/<项目名称>,或点击文件夹按钮选择目录。 - .NET 版本:选择一个已安装的 .NET 版本。 列表中会显示诸如
.NET 8.0.100这样的条目;只有实际已安装的版本才会出现在这里。 - 框架:选择一个框架预设(参见下表)。 选择预设会自动填充 启动命令。
- 运行用户:默认为
www(你也可以选择root/nobody,或输入自定义用户)。 如果没有特殊需求,使用www即可。 - 启动命令:根据所选版本和框架自动填充,且完全可编辑。
- 项目名称:例如
- 可选择启用 反向代理 并填写 域名 和 项目端口,以自动创建一个反向代理网站(监听 80 端口,代理到
http://127.0.0.1:<项目端口>)供外部访问。 - 点击 创建。
框架预设
当你选择一个 .NET 版本和一个框架后,启动命令会以 dotnet<版本> <预设命令> 的形式生成。 例如,使用 .NET 8.0.100 和 ASP.NET Core Web 预设,命令会变成 dotnet8.0.100 run。
| 框架 | 生成的命令部分 |
|---|---|
| 自定义 | (为空 — 自行输入命令) |
| ASP.NET Core Web | run |
| ASP.NET Core API | run |
| Blazor Server | run |
| gRPC Service | run |
| Worker Service | run |
TIP
除 自定义 外的所有预设都使用 dotnet run,便于快速上手。 对于生产环境,建议先发布你的项目(dotnet publish)并直接运行生成的 DLL,例如 dotnet8.0.100 /opt/ace/projects/myapp/myapp.dll。 只需相应地编辑 启动命令 字段即可。 当你想从头输入命令时,选择 自定义。
启动命令示例
dotnet<版本> 中的版本号与你选择的已安装 .NET 版本一致(例如 dotnet8.0.100)。
# 从源代码运行(所有预设的默认行为)
dotnet8.0.100 run
# 运行已发布的应用(生产环境推荐)
dotnet8.0.100 myapp.dll
# 运行时内联指定 URL / 环境
dotnet8.0.100 myapp.dll --urls "http://0.0.0.0:5000"
# 设置环境变量
ASPNETCORE_ENVIRONMENT=Production dotnet8.0.100 myapp.dll管理项目
创建后,该项目会出现在 .NET 选项卡的列表中。 对于每个项目,你可以:
- 启动 / 停止 服务
- 重启 和 重载(仅在项目运行时显示)
- 查看实时 日志
- 编辑 项目(见下文)
- 删除 项目(带确认倒计时)
- 切换 开机自启 以启用或禁用服务开机自动启动
你也可以选中多个项目并使用批量 删除 按钮。
编辑
编辑 对话框会展示底层的 systemd 服务配置,包括工作目录、启动命令、运行用户、重启策略、环境变量、资源限制(内存 / CPU 配额)、安全加固选项(例如 NoNewPrivileges、ProtectHome、ProtectSystem)以及单元依赖。 更改会写回到服务单元文件。
设置默认 CLI 版本
如果你需要在终端中直接使用 dotnet 命令,请进入 应用 > 运行环境 > .NET,打开已安装的版本,然后点击 设为 CLI 默认版本。 这会将该版本的 dotnet 二进制文件链接到系统路径中,使命令行中的 dotnet 解析到它。
注意事项
- 创建项目前必须先安装 .NET 运行环境;否则将没有可供选择的版本。
- 应用日志会写入系统日志,可通过项目列表上的 日志 按钮查看。
- 对于 Web 应用,请确保你的应用监听你为反向代理配置的端口(并绑定到
0.0.0.0或127.0.0.1,而不是仅localhost),以便代理能够访问它。 - 在生产环境中,建议发布你的项目并运行 DLL,而不是使用
dotnet run,并使用环境变量或配置文件来管理设置,而不是硬编码它们。
