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

将.NET Core(2.1) Web Api发布到Linux(CentOS 7 64) 近来在学习linux相关的一些东西,然后正巧想试一下把core的应用程序发布到Linux,毕竟跨平台。尝试一下。以下是我在网上找到的资料做的一些整理。 需要准备的...

将.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]代码如下:

 

 

 1 public class Startup
 2     {
 3         public Startup(IConfiguration configuration)
 4         {
 5             Configuration = configuration;
 6         }
 7 
 8         public IConfiguration Configuration { get; }
 9 
10         // This method gets called by the runtime. Use this method to add services to the container.
11         public void ConfigureServices(IServiceCollection services)
12         {
13             services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
14             //配置Swagger
15             //注册Swagger生成器,定义一个Swagger 文档
16             services.AddSwaggerGen(c =>
17             {
18                 c.SwaggerDoc("v1", new Info
19                 {
20                     Version = "v1",
21                     Title = "接口文档",
22                     Description = "RESTful API"
23                 });
24                 // 为 Swagger 设置xml文档注释路径
25                 var xmlFile = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml";
26                 var xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile);
27                 c.IncludeXmlComments(xmlPath);
28             });
29         }
30 
31         // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
32         public void Configure(IApplicationBuilder app, IHostingEnvironment env)
33         {
34             if (env.IsDevelopment())
35             {
36                 app.UseDeveloperExceptionPage();
37             }
38             //启用中间件服务生成Swagger
39             app.UseSwagger();
40             //启用中间件服务生成Swagger,指定Swagger JSON终结点
41             app.UseSwaggerUI(c =>
42             {
43                 c.SwaggerEndpoint("/swagger/v1/swagger.json", "Web App V1");
44                 c.RoutePrefix = string.Empty;//设置根节点访问
45             });
46             app.UseMvc();
47         }
48     }

 

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

 

 

 

 

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上发布成功了。

 

本文标题为:将.NET Core Web Api发布到Linux(CentOS 7 64)