当前位置: 首页 > news >正文

在 Linux 上部署 .NET Core 应用并配置为开机自动启动

在本文中,我们将详细介绍如何在 Linux 系统上部署 .NET Core 应用程序,并配置为开机自动启动。以下是一步一步的详细部署过程,适用于将 .NET Core Web 应用部署到生产环境中。


1. 安装 .NET 运行时和 SDK

首先,确保 Linux 系统上安装了 .NET 运行时和 SDK。这是运行 .NET Core 应用的必备环境。

安装 .NET SDK/运行时

在 Ubuntu 或其他基于 Debian 的系统中,可以通过以下命令安装:

# 更新系统包
sudo apt update# 安装 .NET SDK
sudo apt install dotnet-sdk-9.0# 或者,仅安装 .NET 运行时(适用于生产环境)
sudo apt install dotnet-runtime-9.0
验证安装

使用以下命令检查安装是否成功:

dotnet --version

如果显示了 .NET 的版本号,说明安装成功。


2. 将应用程序复制到服务器
  1. 构建和发布应用程序

在本地开发机器上,首先需要构建并发布你的 .NET Core 应用程序。你可以使用以下命令:

dotnet publish -c Release -r linux-x64 --self-contained false

这将构建适用于 Linux 的发布版本,文件会位于 bin/Release/net9.0/linux-x64/publish/ 目录下。

  1. 上传应用程序

将发布后的应用程序文件夹(通常包括 .dll 文件、配置文件等)上传到目标 Linux 服务器。假设我们将文件上传到 /home/dotnet/yfweb/ 目录下。


3. 创建 Systemd 服务文件

为了让你的 .NET Core 应用在 Linux 上以服务的形式运行并支持开机自动启动,我们需要为应用创建一个 Systemd 服务文件

  1. 创建服务文件

/etc/systemd/system/ 目录下,创建一个新的服务文件 yfweb.service

sudo nano /etc/systemd/system/yfweb.service
  1. 服务文件内容

yfweb.service 文件中添加以下内容:

[Unit]
Description=YFWeb .NET Core Application
After=network.target[Service]
WorkingDirectory=/home/dotnet/yfweb
ExecStart=/usr/bin/dotnet /home/dotnet/yfweb/yf.webtest.dll
Restart=always
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=ASPNETCORE_URLS=http://0.0.0.0:5000[Install]
WantedBy=multi-user.target
解释:
  • [Unit] 部分定义了服务的描述和依赖关系。在这里,服务需要在网络配置完成后启动。

  • [Service] 部分定义了如何启动你的应用。ExecStart 行指定了如何启动 .NET Core 应用。WorkingDirectory 指定了工作目录,Restart=always 保证服务在崩溃时会自动重启。

  • [Install] 部分告诉 Systemd 在系统启动时如何处理这个服务。WantedBy=multi-user.target 表示该服务将作为多用户模式的一部分启动。

  1. 保存并退出:完成后,保存并关闭编辑器。


4. 重新加载 Systemd 配置

每次修改了服务文件,都需要让 Systemd 加载新的配置。执行以下命令:

sudo systemctl daemon-reload

5. 启用和启动服务
  1. 启用服务:让服务在开机时自动启动:

    sudo systemctl enable yfweb.service
    
  2. 启动服务:立即启动服务:

    sudo systemctl start yfweb.service
    
  3. 检查服务状态:查看服务是否正在运行:

    sudo systemctl status yfweb.service
    

    如果服务运行正常,状态应显示为 active (running)


6. 查看日志(如有问题)

如果服务没有成功启动,可以通过查看日志来调试问题。使用以下命令查看服务日志:

sudo journalctl -u yfweb.service --since "10 minutes ago"

这将显示过去 10 分钟内的日志信息,帮助你了解服务为何没有启动成功。


7. 手动运行应用程序(调试)

如果服务没有正常启动,可以手动运行应用程序,以检查是否存在任何问题。

  1. 手动运行应用程序

    cd /home/dotnet/yfweb
    dotnet yf.webtest.dll
    
  2. 常见问题

    • 确保 .NET Core 运行时的路径正确。可以通过 which dotnet 确认 /usr/bin/dotnet 是否是正确的路径。

    • 确保 .dll 文件存在并且有效。使用 ls 命令检查 /home/dotnet/yfweb/yf.webtest.dll 文件是否存在。

    • 如果 .NET Core 应用程序在本地运行时没有错误,但在 Systemd 中无法启动,可能是权限问题,确保 .dll 文件有足够的执行权限。


8. 停止、重启或禁用服务
  1. 停止服务

    sudo systemctl stop yfweb.service
    
  2. 重启服务

    sudo systemctl restart yfweb.service
    
  3. 禁用服务:如果不再希望服务在开机时自动启动,可以禁用它:

    sudo systemctl disable yfweb.service
    

总结

通过上述步骤,你可以成功地将 .NET Core 应用程序部署到 Linux 系统,并配置为开机自动启动。这个过程包含了从安装 .NET Core 运行时到创建 Systemd 服务文件,再到启动和调试服务的所有步骤。通过设置 Systemd 服务,你的应用将能够在 Linux 上以服务的形式稳定运行,并且在系统重启时自动启动。

如果在部署过程中遇到任何问题,可以通过查看日志来帮助排查。希望本文的步骤能帮助你顺利完成部署。如果有任何问题,欢迎随时向我咨询!

相关文章:

  • select、poll、epoll实现多路复用IO并对比差异
  • 家庭电脑隐身后台自动截屏软件,可远程查看
  • 十倍开发效率 - IDEA插件之 Maven Helper
  • QT常见输入类控件及其属性
  • SpringCloud小白入门+项目搭建
  • 秒杀抢购系统架构与优化全解:从业务特性到技术落地
  • 软考高级系统架构设计师-第13章 软件可靠性基础知识
  • 32-工艺品商城小程序
  • Redis 事件循环(Event Loop)
  • 无法右键下载文档?网页PDF下载方法大全
  • Opencv图像处理:模板匹配对象
  • 基于docker-java封装的工具类
  • Spring Boot 集成Poi-tl实现动态Word文档生成
  • Linux学习——TCP
  • C++ 相关系统软件简介与学习方法【最水的一期】
  • nuxt3前端开发以及nuxt3和nuxt2项目的详细差异点
  • Web前端:常用的布局属性
  • 2000-2017年各省天然气消费量数据
  • PHP伪协议读取文件
  • go语言优雅关机和优雅重启笔记
  • 对话地铁读书人|财务管理孟先生:老婆让我看《三体》
  • 又有多地推进产科整合
  • 人民日报头版:各地扎实开展学习教育,一体推进学查改
  • 思南读书会500期了,这是上海最具温度的阅读文化样本
  • 行拘!如此引流诱导违法犯罪不该被纵容
  • 接下来上海很热闹,天后天团轮番来开演唱会