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

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

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

开始课程

引言:为什么VPS是C#应用程序的理想解决方案?

使用C#和.NET平台进行开发早已不再是Windows服务器的专属。随着.NET Core(以及现在的.NET 5/6/7/8)的发布,开发人员能够在Linux上运行其应用程序,从而可以访问价格低廉且性能卓越的VPS服务器。在VPS上部署C#应用程序不仅能节省预算,还能完全控制基础设施:从操作系统的选择到安全配置。

在本指南中,我们将介绍在远程服务器上部署ASP.NET Core应用程序的完整流程。您将学习如何准备服务器、配置Nginx反向代理服务器、通过Kestrel启动应用程序以及使用SSL证书保护它。所有步骤都附有代码示例和控制台命令。



1. 服务器准备与安装.NET运行时

选择操作系统并通过SSH连接

为了在VPS上部署C#应用程序,建议使用Ubuntu 22.04 LTS或Debian 11发行版。租用服务器后,通过SSH连接到它:

ssh root@您的_服务器_IP

更新包管理器并安装必要的工具:

apt update && apt upgrade -yapt install curl wget git -y


安装.NET SDK或运行时

要运行已准备好的应用程序,只需安装ASP.NET Core运行时。如果您计划直接在服务器上编译代码,请安装SDK。添加Microsoft存储库并安装.NET 8:

wget https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb -O packages-microsoft-prod.debdpkg -i packages-microsoft-prod.debapt updateapt install aspnetcore-runtime-8.0 -y

验证安装:

dotnet --list-runtimes

输出应包含带有ASP.NET Core 8.0.x版本的行。



2. 应用程序的准备与发布

为生产环境配置项目

在您的ASP.NET Core项目中,打开Program.cs文件,确保应用程序监听正确的URL。为了通过Kestrel运行,我们设置端口5000:

var builder = WebApplication.CreateBuilder(args);builder.WebHost.UseUrls("http://0.0.0.0:5000");var app = builder.Build();app.MapGet("/", () => "Hello from VPS!");app.Run();

另外,在appsettings.json中添加日志部分和数据库连接字符串(如果使用)。



发布应用程序(独立式或框架依赖式)

选择发布方式。独立式包含所有依赖项,如果服务器上没有.NET运行时,这很方便。框架依赖式需要已安装的运行时。在项目文件夹中执行命令:

dotnet publish -c Release -o ./publish

完成后,publish文件夹中将出现所有必要文件。将它们打包:

tar -czf app.tar.gz ./publish


上传到服务器

使用SCP或SFTP传输归档文件。通过SCP的示例(在本地机器上执行):

scp app.tar.gz root@您的_IP:/var/www/myapp/

在服务器上解压归档文件:

mkdir -p /var/www/myapptar -xzf /var/www/myapp/app.tar.gz -C /var/www/myapp/


3. 配置Kestrel并创建systemd服务

通过Kestrel启动应用程序

Kestrel是ASP.NET Core的内置Web服务器。为了测试运行,执行:

cd /var/www/myapp/publishdotnet YourAppName.dll

应用程序应在端口5000上启动。通过curl http://localhost:5000检查。如果一切正常,停止进程(Ctrl+C)。



创建systemd单元文件

为了使应用程序在系统启动时自动启动并在崩溃时重新启动,我们创建一个systemd服务。创建文件:

nano /etc/systemd/syst                

博客

书籍推荐