From e5e2e9aed103076eaed3419a5e08438e55e9a65d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=AD=8F=E6=85=A7=E5=A9=B7?= <14091808+dont-like-lamian-noodles@user.noreply.gitee.com> Date: Mon, 25 Nov 2024 13:26:15 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AC=94=E8=AE=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...24\347\224\250\351\203\250\347\275\262.md" | 142 ++++++++++++++++++ 1 file changed, 142 insertions(+) create mode 100644 "\351\255\217\346\205\247\345\251\267/20241120-\345\272\224\347\224\250\351\203\250\347\275\262.md" diff --git "a/\351\255\217\346\205\247\345\251\267/20241120-\345\272\224\347\224\250\351\203\250\347\275\262.md" "b/\351\255\217\346\205\247\345\251\267/20241120-\345\272\224\347\224\250\351\203\250\347\275\262.md" new file mode 100644 index 0000000..8cee8ed --- /dev/null +++ "b/\351\255\217\346\205\247\345\251\267/20241120-\345\272\224\347\224\250\351\203\250\347\275\262.md" @@ -0,0 +1,142 @@ +# 将 .NET 应用部署到服务器并使用 Nginx 反向代理 + +## 1. 准备工作 + +在开始之前,请确保你的服务器上已经安装了以下内容: + +- **.NET SDK 和运行时**:确保服务器上安装了 .NET 的运行时,至少需要安装与项目相匹配的版本(如 .NET 8)。 +- **Nginx**:用作反向代理,确保服务器上已经安装 Nginx。 + +### 安装 .NET SDK + +如果你的服务器还没有安装 .NET,可以使用以下命令进行安装(以 Debian 为例): + + + +## Debian 12 + +使用 APT 进行安装可通过几个命令来完成。 安装 .NET 之前,请运行以下命令,将 Microsoft 包签名密钥添加到受信任密钥列表,并添加包存储库。 + +打开终端并运行以下命令: + +```bash +wget https://packages.microsoft.com/config/debian/11/packages-microsoft-prod.deb -O packages-microsoft-prod.deb +sudo dpkg -i packages-microsoft-prod.deb +rm packages-microsoft-prod.deb +``` +上面运行完后更新一下 +```apt update``` + +### 安装 SDK + +.NET SDK 使你可以通过 .NET 开发应用。 如果安装 .NET SDK,则无需安装相应的运行时。 若要安装 .NET SDK,请运行以下命令: + +```bash +sudo apt-get update && \ + sudo apt-get install -y dotnet-sdk-8.0 +``` + +### 检查版本 + +使用命令,如果有返回说明安装成功 + +```bash +dotnet --version +``` + +### 安装 Nginx(已安装的话省略) + +可以使用以下命令在 Debian 上安装 Nginx: + +```bash +sudo apt update +sudo apt install nginx +``` + +安装完成后,你可以使用以下命令检查 Nginx 是否安装成功: + +```bash +systemctl status nginx +``` + +## 3. 上传应用到服务器 + +使用 `scp` 或任何文件传输工具,将发布的文件上传到服务器。例如,你可以使用 `scp` 命令将文件夹上传到服务器的 `/var/www/my` 目录: + +```bash +scp -r ./publish/* root@xx.xxx.xx:/var/www/my +``` + +### 说明: +- `root` 是服务器的用户名,`xx.xxx.xx` 是你的服务器的 IP 地址。 +- 上传的文件将存放在服务器的 `/var/www/my` 目录中。 + +## 5. 配置 Nginx 反向代理 + +Nginx 将用作反向代理服务器,将外部请求转发给你在后台运行的 .NET 应用。首先,编辑 Nginx 配置文件: + +```bash + cd /etc/nginx/conf.d/my.conf +``` + +添加以下配置: + +简略配置 + +```nginx +server { + listen 80; # 监听80端口 (如果80端口被静态网页使用就换8080或者其他端口) + server_name 你的域名或者IP; + + location / { + proxy_pass http://localhost:5000; # 假设你的 .NET 应用监听在 5000 端口 + } +} +``` + +详细配置 + +```nginx +server { + listen 80; # 监听80端口 + server_name 你的域名或者IP; + + location / { + proxy_pass http://localhost:5000; # 假设你的 .NET 应用监听在 5000 端口 + 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; + } +} +``` + +### 解释: +- `listen 80;`:Nginx 会监听 80 端口(即 HTTP)。 +- `server_name your_domain_or_ip;`:这里替换为你的域名或者 IP 地址。 +- `proxy_pass http://localhost:5000;`:将请求转发到本地 5000 端口(假设你的 .NET 应用在该端口上监听)。 + +## 6. 测试 Nginx 配置并重新加载 + +测试 Nginx 配置是否正确: + +```bash +sudo nginx -t +``` + +如果没有错误,重新加载 Nginx 配置: + +```bash +sudo systemctl reload nginx +``` + +## 8. 完成部署 + +现在,.NET 应用已经通过 Nginx 反向代理部署到服务器上,运行后就可以通过域名或 IP 地址访问。 + +### 总结: +- 我们首先将 .NET 应用发布并上传到服务器。 +- 使用 `systemd` 配置后台运行应用,确保应用在服务器重启后能自动启动。 +- 配置 Nginx 作为反向代理,将外部请求转发给 .NET 应用。 + +通过这些步骤, .NET 应用已经成功部署到服务器,并能够通过 Nginx 进行访问。 \ No newline at end of file -- Gitee