简介
在 .NET 平台上开发 C# 应用程序只是成功的一半。要让您的项目可供互联网用户访问,必须将其正确部署到服务器上。VPS(虚拟专用服务器)是中小型企业和独立开发者的理想解决方案:它以实惠的价格提供对环境的完全控制。本文将介绍在运行 Linux(Ubuntu 22.04)的 VPS 上部署 C# 应用程序的完整过程。您将学习如何准备服务器、发布应用程序、配置 Nginx 反向代理以及通过 systemd 确保自动启动。
1. 准备 VPS 并安装 .NET 运行时
1.1. 连接到服务器
购买 VPS 后,您将获得一个 IP 地址和 root 密码。通过 SSH 连接:
ssh root@your-server-ip建议立即创建一个单独的用户以确保安全:
adduser appuserusermod -aG sudo appusersu - appuser1.2. 安装 .NET 运行时
为了让 C# 应用程序在服务器上运行,需要 ASP.NET Core 运行时。添加 Microsoft 存储库并安装包:
wget https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb -O packages-microsoft-prod.debsudo dpkg -i packages-microsoft-prod.debsudo apt-get updatesudo apt-get install -y aspnetcore-runtime-8.0验证安装:
dotnet --list-runtimes您应该看到一行包含 ASP.NET Core 8.0.0 版本的信息。
2. 发布应用程序并上传到服务器
2.1. 在本地机器上发布
在安装了 Visual Studio 或 .NET CLI 的计算机上,打开项目并执行发布命令:
dotnet publish -c Release -o ./publish此命令会创建一个 publish 文件夹,其中包含运行应用程序所需的所有文件(如果使用框架依赖部署 (FDD),则包括运行时依赖项)。
2.2. 上传到 VPS
使用 scp 或 sftp 将 publish 文件夹复制到服务器。在本地机器上,执行:
scp -r ./publish appuser@your-server-ip:/home/appuser/myapp现在,在服务器上验证文件是否已就位:
ls -la /home/appuser/myapp3. 配置 systemd 以实现自动启动
为了确保应用程序在系统启动时启动并在失败后自动重启,请创建一个 systemd 单元。
3.1. 创建服务文件
使用 root 权限创建文件 /etc/systemd/system/myapp.service:
sudo nano /etc/systemd/system/myapp.service插入以下内容:
[Unit]Description=My ASP.NET Core ApplicationAfter=network.target
[Service]WorkingDirectory=/home/appuser/myappExecStart=/usr/bin/dotnet /home/appuser/myapp/YourAppName.dllRestart=alwaysRestartSec=10KillSignal=SIGINTSyslogIdentifier=myappUser=appuserEnvironment=ASPNETCORE_ENVIRONMENT=ProductionEnvironment=ASPNETCORE_URLS=http://localhost:5000
[Install]WantedBy=multi-user.target将 YourAppName.dll 替换为您的 .dll 文件的实际名称(通常与项目名称匹配)。
3.2. 启动并启用服务
sudo systemctl daemon-reloadsudo systemctl start myappsudo systemctl enable myapp检查状态:
sudo systemctl status myapp如果配置正确,您将看到状态 active (running)。应用程序现在正在本地接口上的 5000 端口监听。
4. 配置 Nginx 作为反向代理
为了使应用程序在标准端口(80/443)上从外部访问并添加 SSL 证书,请安装并配置 Nginx。
4.1. 安装 Nginx
sudo apt updatesudo apt install nginx -y