开启辅助访问 切换到窄版

打印 上一主题 下一主题

中年大叔学编程-.NetCoreWebApi发布到Linux中运行

[复制链接]
作者:@Xizi_NBIB5fVM 
版块:
嵌入式操作系统 linux 发布时间:2020-7-15 00:28:18
10070
楼主
跳转到指定楼层
| 只看该作者 回帖奖励 |倒序浏览 |阅读模式
相信很多朋友都知道.net core可以跨平台,之前在Windows上,我一般是使用IIS或者直接一个exe运行,当然还可以做成Windows服务的方式,那么开发好的WebApi发布至Linux上后,我们怎么运行呢?
这里我直接通过VS提供的模版创建一个简单的demo,并无任何业务代码,可以直接发布,按惯例我还是用命令来发布我们的
dotnet publish -r linux-x64 -c Release -o ./bin/output
现在直接将bin/output下面的文件上传到Linux服务器上,关于SSH工具的话,我一般用SSH Secure Shell、FinalShell、MobaXterm这个三款工具,用得比较多的还是属MobaXterm了。上传之后,记得给文件给以相应的权限,这里我直接简单粗暴的用chmod -R 777 目录,但是在执行./WebDemo的时候出现这个问题

在Github上有篇文章叫How to use .NET Core on RHEL 6 / CentOS 6和.NET Core Globalization Invariant Mode中有提到几种方式:

  • 下载安装ICU
  • 在项目文件中加入


  • 在runtimeconfig.json文件中加入
{"runtimeOptions": {"configProperties": {"System.Globalization.Invariant": true}}}这里我们就用简单点的方式吧,直接项目文件中加入配置,

重新发布之后把会项目中的配置信息写到runtimeconfig.json中,

我只需要将该文件复制即可,现在我们来继续执行./WebDemo,可以看到能执行成功

由于这里绑定的是localhost,不能提供远程访问,所以我们使用curl命令来看看是否启动成功

直接通过./WebDemo的方式是前台运行,如果当前的SSH连接超时或者工具直接断开,那么程序就会自动退出,这里我们调整一下启动方式nohup ./WebDemo &,这样一来,程序就是后台运行,即使SSH连接超时或者工具直接断开,进行依然在后台运行,以为这样就安全吗?虽然是后台运行,但是还是确保不了我们的程序能一直稳健运行,所以这里,我们可以借助PM2来实现进行守护,安装PM2之前需要先安装NodeJS,具体安装的方法请自行百度吧,我这里就直接通过执行npm install pm2 -g命令来安装PM2,
这里我还是用FinalShell吧,现在我们来启动WebDemo
pm2 start "./WebDemo" --name WebApiDemo
启动后,我们可以看到我们名为WebApiDemo的应用在PM2的状态是online,现在我们通过ps -ef|grep WebDemo去查找进程,然后杀掉,看看PM2的状态是什么样式的?

从图中,我们可以看到,最初的pid是555,在执行kill命令后,PM2检测到进程挂掉后,为我们重新启动了一个进程,pid为16125,这样一来的话,我们的应用就不会莫名其妙的挂掉了,即使挂掉了,也能很快自动启动起来。
关于更多的PM2信息,大家可以去官网查看详细的资料

另外,关于发布,之前在Winform中的那一套也是适用的,比如打包单体应用,依赖包优化,VS自带发布工具等

我只是记录我的学习过程,由于书读得少,可能很多地方表述或者是理解得不对,请轻喷并指正。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表