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

发布于:2025-04-21 ⋅ 阅读:(67) ⋅ 点赞:(0)

在本文中,我们将详细介绍如何在 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 上以服务的形式稳定运行,并且在系统重启时自动启动。

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


网站公告

今日签到

点亮在社区的每一天
去签到