将.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 classStartup2 {3 publicStartup(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 voidConfigureServices(IServiceCollection services)12 {13 services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);14 //配置Swagger15 //注册Swagger生成器,定义一个Swagger 文档
16 services.AddSwaggerGen(c =>
17 {18 c.SwaggerDoc("v1", newInfo19 {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 voidConfigure(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工具连接该虚拟机。
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上发布成功了。