首页 > 系统相关 >.Net 5.0 WebAPI 发布至 Linux 系统

.Net 5.0 WebAPI 发布至 Linux 系统

时间:2024-09-01 22:48:15浏览次数:12  
标签:5.0 WebAPI service CentOS 自启动 Linux dotnet

阅读目录


回到顶部

〇、前言

本文主要介绍了在 CentOS 7 上部署 WebAPI 项目的过程。

先安装 .net 5.0 的环境,再创建一个示例项目并发布至 CentOS 上,同时列明了一些注意的点;最后将 dotnet 命令添加到系统自启动服务。

回到顶部

一、Linux 环境准备

1.1 CentOS 7.x 在线安装 .net 5.0

第一行命令是添加包源,第二行命令是安装.Net Core版本的包
首先,配置仓库:
sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm
然后,执行安装命令,二者其一:

  sudo yum install dotnet-sdk-5.0 -y
  sudo dnf install dotnet-runtime-5.0 -y
  # 使用 dnf 命令时,会出现报错【sudo: dnf: command not found】
  # 这个错误表明你的系统中没有安装 dnf 包管理器,可以手动安装 dnf 的支持:sudo yum install dnf

1.2 CentOS 8.x 在线安装 .net 5.0

直接执行命令:
sudo dnf install dotnet-sdk-5.0

1.3 查看是否安装成功

查看当前版本:dotnet --version;
查看详情:dotnet --info。

  [root@localhost ~]# dotnet --info
  .NET SDK (reflecting any global.json):
  Version: 5.0.408
  Commit: da985e2a23
   
  Runtime Environment:
  OS Name: centos
  OS Version: 7
  OS Platform: Linux
  RID: centos.7-x64
  Base Path: /usr/share/dotnet/sdk/5.0.408/
   
  Host (useful for support):
  Version: 5.0.17
  Commit: 6a98414363
   
  .NET SDKs installed:
  5.0.408 [/usr/share/dotnet/sdk]
   
  .NET runtimes installed:
  Microsoft.AspNetCore.App 5.0.17 [/usr/share/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.NETCore.App 5.0.17 [/usr/share/dotnet/shared/Microsoft.NETCore.App]
   
  To install additional .NET runtimes or SDKs:
  https://aka.ms/dotnet-download
  [root@localhost ~]#
回到顶部

二、示例项目创建和发布

2.1 创建一个测试项目

下面简单创建一个测试项目:WebAPI.WebApplication.Test。

选项(Enable OpenAPI support)选中,默认添加对 swagger 框架的支持。

直接运行起来,看下目标效果:

http://localhost:58268/swagger/index.html

http://localhost:58268/WeatherForecast

2.2 发布步骤

选择发布至文件系统:

然后找到发布文件夹:(需要将此文件夹中的文件全部上传至 CentOS 服务器)

WebAPI.WebApplication.Test\bin\Release\net5.0\publish

上传至 CentOS 的 /home/webapi.test 文件夹中,备用。(上传方法就略过了

回到顶部

三、服务开启和配置自启动

3.1 服务开启

首先,在 Startup.cs 文件中将 Swagger 的配置放出来:

  public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
  {
  if (env.IsDevelopment())
  {
  app.UseDeveloperExceptionPage();
  }
  // 如下两行,原来在 if 里边,放到外边,就无论是什么环境都可加载 Swagger
  app.UseSwagger();
  app.UseSwaggerUI(c => c.SwaggerEndpoint("/swagger/v1/swagger.json", "WebAPI.WebApplication.Test v1"));
   
  app.UseRouting();
   
  app.UseAuthorization();
   
  app.UseEndpoints(endpoints =>
  {
  endpoints.MapControllers();
  });
  }

另外,文件 launchSettings.json,注意如下备注的两个配置项:

  {
  "$schema": "http://json.schemastore.org/launchsettings.json",
  "iisSettings": {
  "windowsAuthentication": false,
  "anonymousAuthentication": true,
  "iisExpress": {
  "applicationUrl": "http://localhost:25863",
  "sslPort": 0
  }
  },
  "profiles": {
  "IIS Express": {
  "commandName": "IISExpress",
  "launchBrowser": true,
  "launchUrl": "swagger",
  "environmentVariables": {
  "ASPNETCORE_ENVIRONMENT": "Development"
  }
  },
  "WebAPI.WebApplication.Test": {
  "commandName": "Project",
  "dotnetRunMessages": "true",
  "launchBrowser": true,
  // 配置路径参数,示例:http://localhost:5000/swagger
  // 路径上要加上 swagger 才能访问
  "launchUrl": "swagger",
  "applicationUrl": "http://localhost:5000",
  "environmentVariables": {
  // 环境变量配置,服务启动时,必须加上对应的环境变量"Development"
  "ASPNETCORE_ENVIRONMENT": "Development"
  }
  }
  }
  }

使用 dotnet 命令直接开启服务试试:

  dotnet /home/webapi.test/WebAPI.WebApplication.Test.dll -server.urls "http://*:5000" --environment Development

3.2 将服务配置为系统自启动

在 /etc/systemd/system/ 路径下,新增一个 webapi.test.service 文件,文件内容如下:

  # Unit 文件描述,webapi 为服务文件名
  [Unit]
  Description=weapi.test service
   
  # Service 配置参数
  [Service]
  Type=simple
  GuessMainPID=true
   
  # 自启动项目所在的位置路径
  WorkingDirectory=/home/webapi.test
  StandardOutput=journal
  StandardError=journal
   
  # 自启动项目的命令
  # 用 dotnet 启动,所以前面添加了 dotnet 的路径 /usr/bin/,后边就是 dotnet 命令的配置参数
  ExecStart=/usr/bin/dotnet /home/webapi.test/myProject.Test.dll --Urls=http://*:5000
  Restart=always
  RestartSec=30
   
  [Install]
  WantedBy=multi-user.target

操作服务的相关命令: 

  # 启动
  systemctl start xxx.service
  # 查看当前状态
  systemctl status xxx.service
  # 重新启动
  systemctl restart xxx.service
  # 查看所有已启动的服务
  systemctl list-units --type=service
   
  # 设置开机自启动
  systemctl enable xxx.service
  # 停止开机自启动
  systemctl disable xxx.service

最后,可以执行 reboot 命令,重启服务器后,对服务进行验证。

参考: https://blog.51cto.com/u_15050718/4565015   https://blog.csdn.net/u010476739/article/details/116710199     https://blog.csdn.net/Dominic_W/article/details/133277301                        

 

 

2024-09-01 22:43:22【出处】:https://www.cnblogs.com/hnzhengfy/p/18384107/webapi_centos

=======================================================================================

标签:5.0,WebAPI,service,CentOS,自启动,Linux,dotnet
From: https://www.cnblogs.com/mq0036/p/18391895

相关文章

  • Linux项目自动化构建清理工具-make/Makefile如何实现编译代码
     目录1、make和makefile有什么用?2、如何使用这两个工具:2.1创建mekefile文件2.2输入make指令2.3输入makeclean指令3、makefile文件如何编译程序什么是依赖关系和依赖方法:TIP:4、make和makefile怎么知道可执行程序是比较新的呢?认识一下时间:(ACM)5、.PHONY修饰目标文件......
  • 3.3.2 IPIPE对Linux中断使能与屏蔽的改造
    点击查看系列文章=》 InterruptPipeline系列文章大纲-CSDN博客        3.3第一行之hard_local_irq_disable()                 3.3.1 Linux中断的使能与屏蔽                        3.3.1.1 中断使能与屏蔽的三重......
  • GNU与Linux 的关系
    问题1:GNOME是什么?GNOME是一个自由且开放源代码的桌面环境,广泛用于基于Linux和其他类Unix操作系统的计算机上。GNOME(GNUNetworkObjectModelEnvironment)的设计目标是提供一个简单、易于使用且现代化的用户界面,让用户能够轻松管理和操作系统资源。主要特性:用户友好:GNOM......
  • 使用公钥登录 Linux 服务器
    使用公钥登录Linux服务器‍Linux上使用公钥登录在客户端上通过ssh-copy_id​将公钥写入到服务器的authorized_keys:[root@VM-4-11-centos~]#[email protected]/usr/bin/ssh-copy-id:INFO:Sourceofkey(s)tobeinstalled:"/root/.ssh/id_rsa.pub"/usr......
  • 记录elasticsearch-analysis-dynamic-synonym从8.7.0升级到8.15.0所遇到的问题
    记录elasticsearch-analysis-dynamic-synonym从8.7.0升级到8.15.0所遇到的问题一、问题伊始今天打算用elasticsearch最新版本来学点东西,发现安装es插件就遇到了许多问题,于是便通过此篇博客来记录问题的整个过程。去年我学习用的elasticsearch版本为8.7.0,当时GitHub有一个大佬直......
  • linux nginx 配置连接时间
    在Nginx中配置连接时间主要涉及到几个不同的参数,通常是指与客户端连接、请求和响应相关的时间设置。以下是一些关键配置项,适用于Nginx的nginx.conf文件或相应的虚拟主机配置文件。1.keepalive_timeout设置保持连接的时间。这个时间是指在客户端和服务器之间保持连接的超时时......
  • 使用公钥登录 Linux 服务器
    使用公钥登录Linux服务器‍Linux上使用公钥登录在客户端上通过ssh-copy_id​将公钥写入到服务器的authorized_keys:[root@VM-4-11-centos~]#[email protected]/usr/bin/ssh-copy-id:INFO:Sourceofkey(s)tobeinstalled:"/root/.ssh/id_rsa.pub"/usr......
  • 使用公钥登录 Linux 服务器
    使用公钥登录Linux服务器‍Linux上使用公钥登录在客户端上通过ssh-copy_id​将公钥写入到服务器的authorized_keys:[root@VM-4-11-centos~]#[email protected]/usr/bin/ssh-copy-id:INFO:Sourceofkey(s)tobeinstalled:"/root/.ssh/id_rsa.pub"/usr......
  • Linux目录详解
     一.树状目录结构图:二.树状目录结构介绍: 1./bin目录 /bin目录包含了引导启动所需的命令或普通用户可能用的命令(可能在引导启动后)。这些命令都是二进制文件的可执行程序(bin是binary--二进制的简称),多是系统中重要的系统文件。2./sbin目录 /sbin目......
  • Linux性能调优大作战:从零到英雄,手把手教你打造极速系统!让你的服务器快如闪电!
    第一章引言Linux系统性能调优在信息技术领域具有不可忽视的重要性。随着Linux操作系统的广泛应用,从桌面环境到大型服务器集群,其性能优化变得尤为关键。调优不仅可以提升系统的响应速度和吞吐量,还能降低资源消耗,从而延长硬件使用寿命,减少总体拥有成本。本文研究旨在深入探讨Li......