在VPS上部署C#应用程序:从A到Z的分步指南

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

引言:为什么VPS是您的C#应用程序的理想之选

\n

在.NET生态系统中使用C#进行开发,为创建Web应用程序、API和微服务提供了强大的工具。然而,编写代码只是成功的一半。为了让您的应用程序可供用户访问,必须将其部署到服务器上。虚拟专用服务器(VPS)让您能够完全控制环境,这对于生产环境至关重要。在本指南中,我们将逐步介绍如何在运行Ubuntu的VPS上,从零开始部署一个完全可运行的C#应用程序。您将学习如何安装.NET运行时、配置Nginx反向代理服务器、将应用程序作为systemd服务运行,并确保其自动重启。

\n\n

服务器准备与必要软件安装

\n

1. 连接到VPS并进行基本设置

\n

在获得VPS的访问权限(IP地址、用户名和密码或SSH密钥)后,通过终端进行连接:

\n
ssh root@您的服务器IP
\n

更新软件包数据库并安装curl(下载.NET时需要):

\n
apt update && apt upgrade -y\napt install curl -y
\n\n

2. 安装.NET SDK/运行时

\n

微软建议通过官方仓库安装.NET。我们将添加该仓库并安装SDK(用于构建)或运行时(仅用于运行)。对于生产服务器,通常运行时已足够,但为了方便部署,我们将安装SDK:

\n
wget https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb\ndpkg -i packages-microsoft-prod.deb\napt update\napt install -y dotnet-sdk-8.0
\n

验证安装:

\n
dotnet --version
\n\n

3. 安装Nginx和Git

\n

Nginx将充当反向代理,将来自80端口的请求转发到您的应用程序。Git用于克隆代码仓库:

\n
apt install -y nginx git\nsystemctl enable nginx\nsystemctl start nginx
\n\n

准备并发布C#应用程序

\n

1. 创建或克隆项目

\n

例如,我们直接在服务器上创建一个简单的ASP.NET Core Web API应用程序(在实际项目中,您会克隆一个仓库):

\n
mkdir /var/www/myapp\ncd /var/www/myapp\ndotnet new webapi --name MyApp\ncd MyApp
\n\n

2. 发布应用程序(独立部署)

\n

为了使应用程序无需在服务器上安装SDK即可运行,我们将其发布为独立模式:

\n
dotnet publish -c Release -r linux-x64 --self-contained true -o /var/www/myapp/publish
\n

标志 --self-contained true 会将所有.NET依赖项包含在publish文件夹中。替代方案是 --self-contained false(需要安装运行时)。

\n\n

3. 测试运行

\n

检查应用程序是否启动(默认端口为5000):

\n
cd /var/www/myapp/publish\n./MyApp --urls "http://0.0.0.0:5000"
\n

在浏览器中打开 http://您的IP:5000 — 您应该会看到API的响应。停止该进程(按Ctrl+C)。

\n\n

将Nginx配置为反向代理

\n

1. 站点配置

\n

为Nginx创建一个配置文件:

\n
nano /etc/nginx/sites-available/myapp
\n

粘贴以下代码(将 your_domain_or_ip 替换为您的域名或IP):

\n
server {\n    listen 80;\n    server_name your_domain_or_ip;\n\n    location / {\n        proxy_pass http://localhost:5000;\n        proxy_http_version 1.1;\n        proxy_set_header Upgrade $http_upgrade;\n        proxy_set_header Connection keep-alive;\n        proxy_set_header Host $host;\n        proxy_cache_bypass $http_upgrade;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Forwarded-Proto $scheme;\n    }\n}
\n\n

2. 激活配置

\n
ln -s /etc/nginx/sites-available/myapp /etc/nginx                

博客

书籍推荐