.NETCore_项目启动设置域名以及端口

本文介绍了两种ASP.NET Core项目的启动配置方法。第一种是在命令窗口中使用WebHostBuilder进行项目启动,通过设置URLs参数来指定HTTP和HTTPS的端口。第二种是依赖于IIS启动项目,这种方式会在项目启动后自动在浏览器中打开并请求指定地址。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//第一种方式就是启动是一个命令窗口
public static IWebHostBuilder CreateWebHostBuilder(string[] args) => WebHost.CreateDefaultBuilder(args) .UseUrls("http://*:2019;https://*:2020") .UseStartup<Startup>();

 

第二种:依赖于IIS启动项目:启动后会在新开浏览器并且请求该地址

 

转载于:https://www.cnblogs.com/ingstyle/p/11386715.html

<think>嗯...用户直接截断了系统指令中关于数学公式排版的说明,直接抛出了一个具体的技术部署问题。看来用户是个开发者,正在银河麒麟系统上处理离线部署场景——这个组合有点挑战性啊,netcore7+vue2+国产操作系统+无网络环境。用户提到"参考站内引用"但实际没有提供任何引用源,可能是误操作。不过从ta急切询问详细步骤来看,估计正在现场实施,情绪可能比较焦虑。需要特别注意步骤的完整性和可操作性,特别是离线环境下的依赖处理。上次对话历史里用户询问过数学公式规范,这次突然转向国产系统部署,应该是不同项目需求。需要特别注意离线环境下的依赖传递问题:银河麒麟基于Ubuntu但证书管理不同,vue2的node_modules离线处理容易踩坑,而netcore7的runtime依赖树在ARM架构下可能更复杂...最关键的是三个技术栈的离线整合:nuget包如何处理?node二进制包如何适配麒麟?以及nginx配置要怎样避开在线证书校验?用户要的"详细步骤"必须包含依赖收集清单、环境变量设置和可能的权限问题解决方案。对了,还得提醒用户注意麒麟系统的安全策略——上次遇到个案例就是SELinux阻止了dotnet执行权限。在离线环境下调试这种问题会非常痛苦,最好预先给出检测命令。</think> 好的,在银河麒麟操作系统上**离线部署** .NET 7 + Vue 2 项目的详细步骤如下。该过程分为两大主要部分:**准备离线环境**和**部署执行**。 --- ### **一、 准备离线环境 (在可联网机器上操作)** 这是最关键的一步,需要预先下载好所有依赖和运行时。 1. **下载 .NET 7 SDK & Runtime (离线包):** * 访问 Microsoft 官方 .NET 下载页面:[https://dotnet.microsoft.com/en-us/download/dotnet/7.0](https://dotnet.microsoft.com/en/us/download/dotnet/7.0) * 找到 **`Linux`** 部分,根据银河麒麟系统的架构(通常是 `x64` 或 `arm64`)下载: * **SDK (安装包):** `dotnet-sdk-7.0.XXX-linux-{arch}.tar.gz` * **ASP.NET Core Runtime (安装包):** `aspnetcore-runtime-7.0.XXX-linux-{arch}.tar.gz` * **.NET Runtime (可选,如果项目中包含控制台应用):** `dotnet-runtime-7.0.XXX-linux-{arch}.tar.gz` * 将下载的 `tar.gz` 文件保存到 U 盘或离线传输介质。 2. **下载 Node.js & npm (离线包):** * 访问 NodeSource 仓库 ([https://github.com/nodesource/distributions#installation-instructions](https://github.com/nodesource/distributions#installation-instructions)) 或 Node.js 官网 ([https://nodejs.org/en/download/](https://nodejs.org/en/download/))。 * 选择兼容 Linux (x64/arm64) 的 **`.tar.xz`** 格式(如 `node-v16.20.2-linux-{arch}.tar.xz`)。Vue 2 通常需 Node.js 12.x 或更高版本,建议选择 **LTS (如 v16.x, v18.x)**。 * 将下载的 `.tar.xz` 文件保存到离线传输介质。 3. **打包前端 Vue 2 项目依赖:** * 在可联网的、**与目标离线环境操作系统和架构一致**的开发机或虚拟机上: * 安装 Node.js/npm (版本需一致)。 * 进入 Vue 2 项目根目录 (`package.json` 所在目录)。 * 运行 `npm install` 安装所有依赖。 * 运行 `npm run build` 构建生产环境静态文件(结果在 `dist` 目录)。将整个 `dist` 目录拷贝到离线传输介质。 * **关键 - 离线缓存 `node_modules`:** * `npm cache clean --force` (可选,清除旧缓存) * `npm config get cache` (查看缓存目录位置,默认 `~/.npm`) * 将整个 `~/.npm` 目录**打包成 `.tar.gz` 文件** (`tar czvf npm_cache.tar.gz ~/.npm`)。 * 将 `npm_cache.tar.gz` 文件拷贝到离线传输介质。 4. **打包后端 .NET 7 项目 (独立部署 - 推荐):** * 在可联网的、**与目标离线环境操作系统和架构一致**的开发机上: * 进入 .NET 项目根目录 (`.csproj` 文件所在目录)。 * 运行发布命令生成独立、不依赖系统级运行时、包含所有必要依赖的部署包: ```bash dotnet publish -c Release -r linux-{arch} --self-contained true ``` * `linux-{arch}`: 替换为银河麒麟的实际架构,如 `linux-x64` 或 `linux-arm64`。 * 生成的发布包默认在 `bin/Release/net7.0/linux-{arch}/publish/` 目录。 * 将整个 `publish` 目录拷贝到离线传输介质。 5. **准备 Web 服务器 (如 Nginx) 离线包:** * 在可联网的机器上下载银河麒麟系统对应架构的 Nginx RPM 包及其依赖(或直接使用银河麒麟仓库提供的离线 RPM 包集合)。也可下载 Nginx 源码包 (`nginx-xxx.tar.gz`)。 --- ### **二、 在银河麒麟离线环境中部署执行** 将上述准备好的所有文件和目录复制到银河麒麟目标机器上。 1. **安装 .NET 7 运行时环境:** ```bash # 创建安装目录 sudo mkdir -p /usr/share/dotnet # 解压下载的 .NET SDK & Runtime 到该目录 sudo tar zxvf dotnet-sdk-7.0.XXX-linux-{arch}.tar.gz -C /usr/share/dotnet sudo tar zxvf aspnetcore-runtime-7.0.XXX-linux-{arch}.tar.gz -C /usr/share/dotnet # 如果下载了Runtime也解压 sudo tar zxvf dotnet-runtime-7.0.XXX-linux-{arch}.tar.gz -C /usr/share/dotnet # 创建符号链接使 dotnet 命令全局可用 sudo ln -s /usr/share/dotnet/dotnet /usr/bin/dotnet # 验证安装 dotnet --info ``` 2. **安装 Node.js & npm:** ```bash # 解压下载的 Node.js 包到 /usr/local sudo tar Jxvf node-v16.20.2-linux-{arch}.tar.xz -C /usr/local # 创建符号链接 sudo mv /usr/local/node-v16.20.2-linux-{arch} /usr/local/node sudo ln -s /usr/local/node/bin/node /usr/bin/node sudo ln -s /usr/local/node/bin/npm /usr/bin/npm # 验证安装 node -v npm -v ``` 3. **还原前端 Vue 2 项目依赖 (利用离线缓存):** ```bash # 1. 将 dist 目录(生产静态文件)拷贝到部署目录,例如 /opt/myapp/frontend cp -r /path/to/dist /opt/myapp/frontend # 2. 还原开发/构建依赖 (如果需要修改代码或重新构建) # 将项目源码和 package*.json 复制到目录,如 /opt/myapp/frontend_src cp -r /path/to/vue-project /opt/myapp/frontend_src # 恢复 npm 缓存 tar zxvf npm_cache.tar.gz -C ~/ # 解压到当前用户主目录,重建 ~/.npm # 进入项目目录安装依赖 (npm 会使用本地缓存) cd /opt/myapp/frontend_src npm install # 后续如需要构建:npm run build ``` 4. **部署后端 .NET 7 项目:** ```bash # 将 publish 目录拷贝到部署位置,例如 /opt/myapp/backend cp -r /path/to/publish /opt/myapp/backend # 设置执行权限 chmod +x /opt/myapp/backend/YourAppName # YourAppName 是你的项目编译出的可执行文件名 # (可选) 配置为服务 (Systemd 示例, /etc/systemd/system/kestrel-myapp.service) [Unit] Description=.NET 7 MyApp Service running on Kestrel [Service] WorkingDirectory=/opt/myapp/backend ExecStart=/opt/myapp/backend/YourAppName Restart=always RestartSec=10 SyslogIdentifier=kestrel-myapp User={username} Environment=ASPNETCORE_ENVIRONMENT=Production Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false # 环境变量 PORT, URLs 等可以在此设置 [Install] WantedBy=multi-user.target # 启用并启动服务 sudo systemctl enable kestrel-myapp.service sudo systemctl start kestrel-myapp.service sudo systemctl status kestrel-myapp.service # 检查状态 ``` 5. **安装和配置 Nginx (作为反向代理):** * **方式一:源码安装** ```bash tar zxvf nginx-xxx.tar.gz cd nginx-xxx ./configure --prefix=/opt/nginx # 指定安装路径 make sudo make install ``` * **方式二:RPM 安装 (如果已准备好离线 RPM)** ```bash sudo rpm -ivh nginx-xxx.rpm # 安装下载的 Nginx 和依赖 RPM ``` * **配置 Nginx (示例 `/opt/nginx/conf/nginx.conf` 或 `/etc/nginx/nginx.conf`):** ```nginx server { listen 80; server_name your_domain_or_ip; location / { root /opt/myapp/frontend; # Vue 静态文件目录 try_files $uri $uri/ /index.html; # Vue 路由模式所需 index index.html index.htm; } location /api { # 假定API路径前缀是 /api proxy_pass http://localhost:5000; # Kestrel 服务地址 proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection keep-alive; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } ``` * **启动 Nginx:** ```bash # 如果源码安装 /opt/nginx/sbin/nginx -t # 测试配置 /opt/nginx/sbin/nginx # 启动 # 如果 RPM 安装 sudo systemctl start nginx sudo systemctl enable nginx ``` --- ### **三、 验证部署** 1. **验证 Kestrel 服务:** ```bash curl http://localhost:5000/api/healthcheck # 替换为你的测试API路径 ``` 2. **验证 Nginx + 静态文件:** * 在浏览器访问银河麒麟机器的 IP 地址或域名。 * 应看到 Vue 2 应用界面。 * 测试应用中的 API 调用是否正常(指向 Nginx 配置的 `/api` 路径)。 --- **关键注意事项:** * **架构一致性:** 准备环境**必须**与银河麒麟目标机器的 CPU 架构 (`x64`/`amd64` 或 `arm64`/`aarch64`) 完全一致! * **路径:** 所有目录路径请根据实际情况调整。 * **用户权限:** 确保运行 `.NET 应用`和操作文件目录的用户具有适当的权限。 * **防火墙:** 检查银河麒麟防火墙 (`firewalld`/`ufw`),确保开放 HTTP (80) 端口。 * **依赖更新:** 如需更新项目依赖,仍需在有网环境重新执行“**准备离线环境**”的打包步骤。 * **数据库:** 如项目依赖数据库,还需离线部署数据库(如 SQLite 文件可直接拷贝,PostgreSQL/MySQL 需下载安装包和初始数据)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值