0


.Net 5.0 WebAPI 发布至 Linux 系统

〇、前言

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

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

一、Linux 环境准备

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

第一行命令是添加包源,第二行命令是安装.Net Core版本的包
首先,配置仓库:

  1. sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm

然后,执行安装命令,二者其一:

  1. sudo yum install dotnet-sdk-5.0 -y
  2. sudo dnf install dotnet-runtime-5.0 -y
  3. # 使用 dnf 命令时,会出现报错【sudo: dnf: command not found】
  4. # 这个错误表明你的系统中没有安装 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。

  1. [root@localhost ~]# dotnet --info
  2. .NET SDK (reflecting any global.json):
  3. Version: 5.0.408
  4. Commit: da985e2a23
  5. Runtime Environment:
  6. OS Name: centos
  7. OS Version: 7
  8. OS Platform: Linux
  9. RID: centos.7-x64
  10. Base Path: /usr/share/dotnet/sdk/5.0.408/
  11. Host (useful for support):
  12. Version: 5.0.17
  13. Commit: 6a98414363
  14. .NET SDKs installed:
  15. 5.0.408 [/usr/share/dotnet/sdk]
  16. .NET runtimes installed:
  17. Microsoft.AspNetCore.App 5.0.17 [/usr/share/dotnet/shared/Microsoft.AspNetCore.App]
  18. Microsoft.NETCore.App 5.0.17 [/usr/share/dotnet/shared/Microsoft.NETCore.App]
  19. To install additional .NET runtimes or SDKs:
  20. https://aka.ms/dotnet-download
  21. [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 的配置放出来:

  1. public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
  2. {
  3. if (env.IsDevelopment())
  4. {
  5. app.UseDeveloperExceptionPage();
  6. }
  7. // 如下两行,原来在 if 里边,放到外边,就无论是什么环境都可加载 Swagger
  8. app.UseSwagger();
  9. app.UseSwaggerUI(c => c.SwaggerEndpoint("/swagger/v1/swagger.json", "WebAPI.WebApplication.Test v1"));
  10. app.UseRouting();
  11. app.UseAuthorization();
  12. app.UseEndpoints(endpoints =>
  13. {
  14. endpoints.MapControllers();
  15. });
  16. }

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

  1. {
  2. "$schema": "http://json.schemastore.org/launchsettings.json",
  3. "iisSettings": {
  4. "windowsAuthentication": false,
  5. "anonymousAuthentication": true,
  6. "iisExpress": {
  7. "applicationUrl": "http://localhost:25863",
  8. "sslPort": 0
  9. }
  10. },
  11. "profiles": {
  12. "IIS Express": {
  13. "commandName": "IISExpress",
  14. "launchBrowser": true,
  15. "launchUrl": "swagger",
  16. "environmentVariables": {
  17. "ASPNETCORE_ENVIRONMENT": "Development"
  18. }
  19. },
  20. "WebAPI.WebApplication.Test": {
  21. "commandName": "Project",
  22. "dotnetRunMessages": "true",
  23. "launchBrowser": true,
  24. // 配置路径参数,示例:http://localhost:5000/swagger
  25. // 路径上要加上 swagger 才能访问
  26. "launchUrl": "swagger",
  27. "applicationUrl": "http://localhost:5000",
  28. "environmentVariables": {
  29. // 环境变量配置,服务启动时,必须加上对应的环境变量"Development"
  30. "ASPNETCORE_ENVIRONMENT": "Development"
  31. }
  32. }
  33. }
  34. }

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

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

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

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

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

操作服务的相关命令:

  1. # 启动
  2. systemctl start xxx.service
  3. # 查看当前状态
  4. systemctl status xxx.service
  5. # 重新启动
  6. systemctl restart xxx.service
  7. # 查看所有已启动的服务
  8. systemctl list-units --type=service
  9. # 设置开机自启动
  10. systemctl enable xxx.service
  11. # 停止开机自启动
  12. systemctl disable xxx.service

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

*参考: CentOS8 下发布 .NET5 WebApi 流程记录!_51CTO博客_net core webapi *

*.net core入门38:linux上安装.net 5.0_linux 上离线安装net 5.0-CSDN博客 *

Centos7系统使用systemd配置dotnet项目开机自启动_centos7 systemctl开机自启动教程-CSDN博客

附:欢迎 WX 搜索“橙子家czzj”关注,第一时间收到博主最新文章。

标签: linux 服务器 .net

本文转载自: https://blog.csdn.net/zhengyang777/article/details/143234920
版权归原作者 橙子家czzj 所有, 如有侵权,请联系我们删除。

“.Net 5.0 WebAPI 发布至 Linux 系统”的评论:

还没有评论