〇、前言

本文主要介绍了在 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                        

.Net 5.0 WebAPI 发布至 CentOS 7 系统的更多相关文章

  1. DS Scheduler 0.7 发布,Linux 调度系统 - 开源中国社区

    DS Scheduler 0.7 发布,Linux 调度系统 - 开源中国社区 DS Scheduler 0.7 发布,Linux 调度系统

  2. GJM : Taurus.MVC 2.0 开源发布:WebAPI开发教程 [转载]

    Taurus.MVC 2.0 开源发布:WebAPI开发教程 转载自http://www.cnblogs.com/cyq1162/p/6069020.html 因是新手  粘贴时有一个版权问题 本文原 ...

  3. ASP.NET Core 2.0 : 九.从Windows发布到CentOS的跨平台部署

    本文聊一下如何在Windows上用VS开发并发布, 然后将其部署到CentOS上.对于我们一些常在Windows上逛的来说,CentOS用起来还真有些麻烦.MSDN官方有篇文章大概讲了一下(链接),按 ...

  4. .Net Core 2.0发布到 CentOS

    上一篇 在CentOS 7中 使用 Nginx 反代 .Net Core 中创建的项目是创建的默认项目,现在我们来将我们开发的项目发布到 CentOs 中,反代还是使用 Nginx 1.创建一个 .N ...

  5. Asp.NetCore程序发布到CentOs(含安装部署netcore)--最佳实践(二)

    Asp.NetCore程序发布到CentOs(含安装部署netcore)--最佳实践(一) 接上一篇 3. Nginx配置反向代理 3.1 cnetos 安装nginx 首先,我们需要在服务器上安装N ...

  6. ASP.NET Core 3.0 WebApi中使用Swagger生成API文档简介

    参考地址,官网:https://docs.microsoft.com/zh-cn/aspnet/core/tutorials/getting-started-with-swashbuckle?view ...

  7. Spring.Net.FrameworkV3.0 版本发布了,感谢大家的支持

    Spring.Net.FrameworkV3.0 版本发布了,感谢大家的支持. Spring.Net.Framework,基于.NET的快速信息化系统开发.整合框架,为企业或个人在.NET环境下快速开 ...

  8. 意料之外,情理之中,Spring.NET 3.0 版本发布-

    意料之外,情理之中,Spring.NET 3.0 版本发布- 备受社区和企业开发者广泛关注的Spring.NET在上周发布了3.0版本,并且目前已经保持着持续的更新,让我们一起来看一看他究竟发布了哪些 ...

  9. webapi发布常见错误及解决方案

    webapi发布常见错误及解决方案 错误一: 错误:404 (Not Found) 解决方案: 在  <system.webServer>节点中添加如下模块: <modules ru ...

  10. 如何将dotnet core webapi发布到docker中…

    如何将dotnet core webapi发布到docker中 今天想起来撸一下docker,中途还是遇到些问题,但是这些问题都是由于路径什么的导致不正确,在这儿还是记录下操作过程,今天是基于wind ...

随机推荐

  1. linux 清理 pyinstaller 打包程序运行留下的临时文件

    前言 pyinstaller 打包的 python 二进制可执行程序运行的时候,会在 /tmp 目录下生成 _MEI* (*指的是随机数字)文件夹, 如果程序没有正常退出或者终止了,_MEI* 文件夹 ...

  2. SpringBoot 处理xss攻击

    添加依赖 <!-- xss跨站脚本攻击 --> <dependency> <groupId>net.dreamlu</groupId> <arti ...

  3. 在 DjangoStarter 中集成 TailwindCSS

    前言 好久没有更新技术文章了 这个月开箱和随笔倒是写了不少,又忙又懒的 基础的文章不太想写,稍微深入一点的又需要花很多时间来写 虽然但是,最终还是想水一篇 最近做了一个基于 wagtail 的项目,有 ...

  4. ProgressBar 进度控件

    在 VB.NET 中,你可以使用 ProgressBar 控件或者自定义的进度提示方法来实现这个功能.以下是一个示例代码,展示如何使用 ProgressBar 控件来显示导入情况: ' 创建一个 Pr ...

  5. Raid0创建

    实验步骤 步骤1: 确认硬盘 确认你的硬盘设备名. [root@servera ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 ...

  6. 题解:P10417 [蓝桥杯 2023 国 A] 第 K 小的和

    分析 这道题不是板子么. 先对序列排序,然后二分答案,设当前答案为 \(x\),枚举 \(a\) 中的数,然后二分查找 \(b\) 中不大于 \(x-a\) 的元素个数,累加判断是否不大于 \(k\) ...

  7. CF1282A 题解

    洛谷链接&CF 链接 题目简述 共有 \(T\) 组数据. 有一条数轴,要从 \(a\) 点跑到 \(b\) 点,在 \(c\) 点的地方有网络,覆盖区间为 \([c - r, c+ r]\) ...

  8. [春秋云镜] Initial

    [春秋云镜] Initial **整套网络环境拓扑:** ​​ 一.打进内网 开局一个ip:39.101.184.25,fscan扫一下 ​​ 存在thinkphp5.0.23的漏洞,可以rce,我们 ...

  9. 最好用的截图工具,提取自QQ(带以截图搜图、ocr文字识别,截长图,贴图,色号等功能)

    背景 现在登录QQ比较少,手机的QQ已经具备ocr识别功能,但是电脑上不登陆QQ,微信的简单截图功能又不能进行ocr识别,对于想提取的文字特别麻烦,需要找别的工具去提取.机缘发现网络上这款提取自QQ的 ...

  10. midjourney 入门操作

    midjourney 入门操作 settings面板 选择模型 当从 V6 切换到 Niji模型时,Current suffix会添加参数 default V6面板功能介绍 RAW Mode功能 -- ...