将.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. 剪切文件或目录命令 - mv

    ①.命令名称:mv ②.英文原意:move ③.命令所在路径:/bin/mv ④.执行权限:所有用户 ⑤.功能描述:剪切文件.改名 ⑥.语法: mv[原文件或目录][目标目录] 例子:在 tmp目录下 ...

  2. css+div上下左右自适应居中

    主要记录自己日常积累的布局相关的东西,持续更新中. 1.登录框上下左右自适应居中 以前想要把登录表单始终放置在页面的中间,花了不少心思,一直以来用的解决方法都是用js,感觉有点麻烦不是很好,于是在网上 ...

  3. checkstyle配置规格说明

    参考文献:https://blog.csdn.net/yang1982_0907/article/details/18086693?utm_source=blogxgwz1 https://blog. ...

  4. OmniGraffle原型案例 | 某APP产品原型PDF文件分享之二

    1.从 App 首页进入商城 App底部 Tab有社区.商城,我们点击「商城」进入「乐宠商城」,下面简称商城.商城采用的是经典的宫格式导航设计(还有普通列表式.和瀑布流列表式.或两者皆有等),主要有搜 ...

  5. 利用Python数据分析基础

    一.Numpy的ndarray:一种多维数组 ndarray是一个通用的同构多维数据容器,其所有元素必须是相同的类型.每个数组都有一个shape(一个表示各维度的元组)和dtype(一个用于说明数据数 ...

  6. STL初探

    关于STL的一些东西 感言: 学C++不学STL函数库的人可能都是... 有点问题 头文件<algorithm>的一些东西 sort,快排: 这是个初学者必需掌握的东西,及其好用,因为方( ...

  7. mysql 实践(例题)

    MySQL安装见本博 安装成功后,开始菜单中找到 “MySQL 8.0 Command Line Client” 进行启动(启动后,可直接输入MySQL密码) 1. create database 数 ...

  8. sofa

    来源:http://fangpeng123456789.iteye.com/blog/2172745 sofa  app:       biz:业务实现层(业务类型)       common:    ...

  9. LCA 倍增算法模板

    . #include <cstring> #include <cstdio> #include <cstdlib> #include <algorithm&g ...

  10. js/jquery加入的select value显示不正确问题

    最近有需求,通过js添加select到表格中,虽然通过append加入的代码中select的value为2 但是实际显示出来的结果不对,百度之后没有找到答案,自己想了个办法 var selects = ...