将.NET Core(2.1) Web Api发布到Linux(CentOS 7 64)

近来在学习linux相关的一些东西,然后正巧想试一下把core的应用程序发布到Linux,毕竟跨平台。尝试一下。以下是我在网上找到的资料做的一些整理。

需要准备的工具:Xshell,WinSPC,VM(我们这里暂时采用VM装一个CentOS 7的系统作为测试用例)

1.首先建立一个.net core 的web api 应用。这里选择.net core的版本选择的是2.1,建立好以后,会自动有一个控制器ValuesController,如图:

2.NuGet引入Swagger,   [Startup]代码如下:

 public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
} public IConfiguration Configuration { get; } // This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
//配置Swagger
//注册Swagger生成器,定义一个Swagger 文档
services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new Info
{
Version = "v1",
Title = "接口文档",
Description = "RESTful API"
});
// 为 Swagger 设置xml文档注释路径
var xmlFile = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml";
var xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile);
c.IncludeXmlComments(xmlPath);
});
} // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
//启用中间件服务生成Swagger
app.UseSwagger();
//启用中间件服务生成Swagger,指定Swagger JSON终结点
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("/swagger/v1/swagger.json", "Web App V1");
c.RoutePrefix = string.Empty;//设置根节点访问
});
app.UseMvc();
}
}

生成运行一下,得到以下结果:

2.将该项目发布,发布配置如下:

3.用VM装一个CentOS 7 64的系统(这里镜像文件太大,就没有传,自行网上找一个)。系统装完后设置好相关的凭证,账号密码。然后启动该虚拟机。

通过账号密码登录成功以后,执行指令 ifconfig,拿到该虚拟机的IP。然后就可以用Xshell,WinSPC工具连接该虚拟机。

4.在Linux上装.net core运行环境,如果是.net core 2.1 需执行两个命令 (地址:https://dotnet.microsoft.com/download/linux-package-manager/centos7/sdk-2.1.802)

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

  

sudo yum install dotnet-sdk-2.1

  

以上两个命令分别执行,如果有遇到y/n选择的,直接输入y敲回车即可。安装完成以后。输入命令 dotnet --version如果得到以下结果,则证明你的.net core环境已经搭建完毕:

5.利用工具WinSPC,需要输入虚拟机的地址和账号密码,连接上以后在root文件目录下建一个文件夹,这里有两种方式可以建立。

1(通过linux命令创建,创建一个名为web的文件夹)

mkdir web

2(直接手工在winSPC右键新建文件夹即可。

把发布好的.net core包直接手工粘贴到web目录下。通过命令cd web进入到目录后,再输入命令ls查询当前文件。如图

接下来就该启动这个复制过来的服务了,用linux命令 dotnet *.dll,这里的*代表的就是你的执行文件。如我上图所示的话,我的完整命令应该为:

出现以上提示,则证明该服务器已经启动成功了,通过这个地址,我们直接在本机试一下,能否访问。

出现以上结果,则证明我们这个core服务已经成功在Linux上发布成功了。

容易踩坑的地方标注一下

1.记得关闭防火墙

2.如果是线上的服务器,请记得一定要开放对应端口。

将.NET Core Web Api发布到Linux(CentOS 7 64)的更多相关文章

  1. .net core web api部署到Linux系统CentOS 7

    一.创建一个.net core web api 的Demo 完成后的项目结构如图 修改下监听端口 发布代码 二.发布到CentOS 7上并运行 下一步需要一定的虚拟机知识了,我这里使用了windows ...

  2. asp.net core web api 发布到iis失败 错误500.19

    找了很久,发现是没有装DotNetCore.2.0.0-WindowsHosting.exe的原因. 还是官方文档最给力.部署时遇到问题的朋友可以参考官方文档 https://docs.microso ...

  3. 循序渐进学.Net Core Web Api开发系列【7】:项目发布到CentOS7

    系列目录 循序渐进学.Net Core Web Api开发系列目录 本系列涉及到的源码下载地址:https://github.com/seabluescn/Blog_WebApi 一.概述 本篇讨论如 ...

  4. List多个字段标识过滤 IIS发布.net core mvc web站点 ASP.NET Core 实战:构建带有版本控制的 API 接口 ASP.NET Core 实战:使用 ASP.NET Core Web API 和 Vue.js 搭建前后端分离项目 Using AutoFac

    List多个字段标识过滤 class Program{  public static void Main(string[] args) { List<T> list = new List& ...

  5. 详解Net Core Web Api项目与在NginX下发布

    前言 本文将介绍Net Core的一些基础知识和如何NginX下发布Net Core的WebApi项目. 测试环境 操作系统:windows 10 开发工具:visual studio 2019 框架 ...

  6. 在docker中运行ASP.NET Core Web API应用程序

    本文是一篇指导快速演练的文章,将介绍在docker中运行一个ASP.NET Core Web API应用程序的基本步骤,在介绍的过程中,也会对docker的使用进行一些简单的描述.对于.NET Cor ...

  7. docker中运行ASP.NET Core Web API

    在docker中运行ASP.NET Core Web API应用程序 本文是一篇指导快速演练的文章,将介绍在docker中运行一个ASP.NET Core Web API应用程序的基本步骤,在介绍的过 ...

  8. .net core 微服务架构-docker的部署-包括网关服务(Ocelot)+认证服务(IdentityServer4)+应用服务(asp.net core web api)

    本文主要介绍通过Docker来部署通过.Net Core开发的微服务架构,部署的微服务主要包括统一网关(使用Ocelot开发).统一认证(IdentityServer4).应用服务(asp.net c ...

  9. 循序渐进学.Net Core Web Api开发系列【0】:序言与目录

    一.序言 我大约在2003年时候开始接触到.NET,最初在.NET framework 1.1版本下写过代码,曾经做过WinForm和ASP.NET开发.大约在2010年的时候转型JAVA环境,这么多 ...

随机推荐

  1. android 获取颜色 getColor 方法 deprecated 过期

    可以使用下面代码代替: ContextCompat.getColor(getContext(), R.color.post_list_content_color) 需要引入: compile 'com ...

  2. 故障解决 | win10没声音及找不到Realtek高清音频管理器

    重装 win10 系统后,电脑没声音,更新驱动以及万不得已下载驱动精灵都没有解决. 后来发现在“硬件和声音”中没有Realtek高清音频管理器,之后找到解决办法如下: 1. 找到Realtek高清音频 ...

  3. 题解 SP5271 XOINC - A Coin Game

    SP5271 XOINC - A Coin Game 双倍经验:P2964 [USACO09NOV]硬币的游戏A Coin Game O3做法(TLE):枚举i,j,k,即剩下i枚金币,上一轮选了j枚 ...

  4. 常用的MQ命令

    删除队列管理器 dltmqm QmgrName 启动队列管理器 strmqm QmgrName 如果是启动默认的队列管理器,可以不带其名字 停止队列管理器 endmqm QmgrName 受控停止 e ...

  5. .net core各种修改环境变量的方式

    除了修改系统变量,或者程序硬编码中修改,还有以下方法: 发布在IIS中,修改web.config <environmentVariables> <environmentVariabl ...

  6. opencv:形态学操作-开闭操作

    #include <opencv2/opencv.hpp> #include <iostream> using namespace cv; using namespace st ...

  7. HADOOP_SECURE_DN_USER has been replaced by HDFS_DATANODE_SECURE_USER

    这个问题可能是我第一个遇到吧,hadoop启动时WARNING: HADOOP_SECURE_DN_USER has been replaced by HDFS_DATANODE_SECURE_USE ...

  8. 动态调整线程数的python爬虫代码分享

    这几天在忙一个爬虫程序,一直在改进他,从一开始的单线程,好几秒一张图片(网络不好),,,到现在每秒钟十几张图片,,, 四个小时586万条数据,,,简直不要太爽 先上图 最终写出来的程序,线程数已经可以 ...

  9. CSS学习(7)继承、属性值的计算过程

    子元素会继承父元素的某些css属性 通常跟字体相关的属性都能被继承,具体的可以在mdn里查询是否是可继承属性 属性值的计算过程(渲染过程) 按照页面文档的树形目录结构进行依次渲染 前提条件:渲染的元素 ...

  10. py2

    函数相关的 # 生成器相关的# 例1 ll = sum(i for i in range(100000000)) #生成器占资源少 # 例2 def demo(): for i in range(4) ...