Linux(Debian)下部署.NET Core网站的正确姿势

524 阅读2分钟

 1、概要

闲来无事写了一个基于.Net8的项目,之前都是在Window服务器上部署的。刚好最近在玩Debian系统,顺便试试.Net Core跨平台的部署,看着官方文档进行配置,还是比较顺利。 现在把我的实操的正确姿势分享一下,请各位对号入座。

2、环境背景

系统:Debian11

项目:基于.Net8的Asp.Net Core WebApi

3、WebApi创建与发布

3.1、创建

创建一个WebApi程序

企业微信截图_17316525137266.png

在Program.cs文件,修改以下两个地方

//注释环境配置,使得我们在生产环境可以看到Swagger页面
// 判断我们是否部署成功
//if (app.Environment.IsDevelopment())
//{
    app.UseSwagger();
    app.UseSwaggerUI();
//}
 
// 注释Https定向
//app.UseHttpsRedirection();

3.2、发布

发布为文件夹,并将publish文件夹打包压缩

企业微信截图_17316530145759.png

拷贝到服务器中/usr/文件夹中(按个人习惯)

企业微信截图_17316551142123.png

4、部署(重点来了)

登录Debian服务器,依次相关环境和依赖包

4.1、安装.Net Core环境

将 Microsoft 包签名密钥添加到受信任密钥列表,并添加包存储库,依次执行以下命令

//  下载Microsoft 包签名密钥
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

安装SDK, 因为我这里是用.net8,所以用8.0的sdk

sudo apt-get update && \
  sudo apt-get install -y dotnet-sdk-8.0

验证环境,输入dotnet --info

企业微信截图_17316577998454.png

4.2、防火墙配置

个人习惯,如果不需要可以忽略这一段

安装防火墙ufw

    sudo apt install ufw

开放22端口以及软件计划部署的端口(这里用5432)

    // 开放22端口,不然等下启动防火墙直接断了远程
    sudo ufw allow 22/tcp

    // 开放5432端口
    sudo ufw allow 5432/tcp

启动防火墙

    sudo ufw enable

    sudo systemctl start ufw

4.3、解压文件

切换到/usr/目录文件,依次执行以下命令

    // 安装解压包
    sudo apt install -y zip

    // 解压publish.zip
    sudo unzip publish.zip

    // 删除压缩包
    sudo rm publish.zip

    // 进入目录
    cd publish

4.4、部署运行

执行命令

    /**
    * WebAip.dll 是主程序dll的名称,注意大小写
    * 5432是指定的端口号
    */
    dotnet WebApi.dll --urls=http://*:5432

企业微信截图_17316565571921.png

执行成功,这样就可以访问你发布的项目了,可以访问swagger页面

企业微信截图_17316566602190.png

正常访问接口

企业微信截图_17316566979769.png

5、小结

其实稍微看下官方文档,就可以轻松部署了。下一步我会介绍如何守护进程,保证程序能够在后台运行,不需要每次都进行命令行启动