引言
开发一个C#应用程序只是成功了一半。要让您的项目能够被互联网用户访问,必须将其部署到服务器上。虚拟专用服务器(VPS)是托管.NET应用程序的理想解决方案,因为它让您能够完全控制运行环境,并可以根据特定需求进行配置。
在本文中,我们将逐步讲解如何将C#应用程序(ASP.NET Core)完整部署到运行Linux(Ubuntu 22.04)的VPS上。您将学习如何准备服务器、安装必要软件、发布应用程序以及配置Web服务器以支持其运行。所有步骤均附有代码示例和命令。
1. 准备VPS并安装.NET SDK
第一步是准备服务器。我们将使用Ubuntu 22.04 LTS,因为它是最流行且最稳定的服务器操作系统之一。通过SSH连接到VPS:
ssh user@your-server-ip登录后,更新软件包列表并安装必要的依赖项:
sudo apt updatesudo apt upgrade -ysudo apt install wget apt-transport-https software-properties-common -y现在添加Microsoft存储库并安装.NET SDK。对于.NET 8,请运行:
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 updatesudo apt install dotnet-sdk-8.0 -y验证安装:
dotnet --version如果看到版本号(例如8.0.100),则表明安装正确。
重要提示: 如果您的应用程序使用数据库(例如PostgreSQL或SQLite),请安装相应的软件包。对于PostgreSQL:
sudo apt install postgresql postgresql-contrib -y2. 发布并将应用程序上传到服务器
现在让我们准备要部署的应用程序本身。在您的本地计算机(进行开发的地方)上,在项目根目录打开终端,并以Release模式发布:
dotnet publish -c Release -o ./publish此命令将创建一个publish文件夹,其中包含运行应用程序所需的所有文件。现在您需要将此文件夹上传到VPS。使用SCP或SFTP。SCP示例:
scp -r ./publish user@your-server-ip:/home/user/myapp其中myapp是您的应用程序在服务器上存储的文件夹名称。
上传后,连接到服务器并将文件移动到更合适的位置,例如/var/www/myapp:
sudo mkdir -p /var/www/myappsudo cp -r /home/user/myapp/* /var/www/myapp/不要忘记设置文件夹的正确权限:
sudo chown -R www-data:www-data /var/www/myappsudo chmod -R 755 /var/www/myapp3. 配置systemd以实现自动启动
为确保您的应用程序在系统启动时自动运行,并在出现故障时重新启动,我们将创建一个systemd服务。创建一个配置文件:
sudo nano /etc/systemd/system/myapp.service插入以下内容(将路径和用户名替换为您自己的):
[Unit]Description=My ASP.NET Core ApplicationAfter=network.target
[Service]WorkingDirectory=/var/www/myappExecStart=/usr/bin/dotnet /var/www/myapp/YourApp.dllRestart=alwaysRestartSec=10KillSignal=SIGINTSyslogIdentifier=myappUser=www-dataEnvironment=ASPNETCORE_ENVIRONMENT=ProductionEnvironment=DOTNET_PRINT_TELEMETRY_MESSAGE=false
[Install]WantedBy=multi-user.target保存文件(Ctrl+O,然后回车)并退出(Ctrl+X)。现在重新加载systemd并启动服务:
sudo systemctl daemon-reloadsudo systemctl start myappsudo systemctl enable myapp检查状态: