.Net 5.0 WebAPI 发布至 Linux 系统
〇、前言
本文主要介绍了在 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
=======================================================================================
关注我】。(●'◡'●)
如果,您希望更容易地发现我的新博客,不妨点击一下绿色通道的【因为,我的写作热情也离不开您的肯定与支持,感谢您的阅读,我是【Jack_孟】!
本文来自博客园,作者:jack_Meng,转载请注明原文链接:https://www.cnblogs.com/mq0036/p/18391895
【免责声明】本文来自源于网络,如涉及版权或侵权问题,请及时联系我们,我们将第一时间删除或更改!