.net core Api 部署到Linux

一.環境介紹

  • 1..net開發環境:asp.net core 3.1
  • 2.Linux環境:CentOS Linux release 7.9.2009 (Core)
  • 3.Swagger: Swashbuckle.AspNetCore6.0
  • 4.開發工具:VS2019,xShell7,xFtp7

二.搭建API

2.1使用vs2019新建一個API項目

2.2安裝Swagger

選擇上面的工具--》NuGet包管理器--》管理解決方案的管理包html

搜索Swashbuckle.AspNetCore,並安裝便可nginx

Swashbuckle.AspNetCore

2.3配置Swagger

找到項目的中Startup.cs 文件,修改內容以下:shell

代碼以下:json

public void ConfigureServices(IServiceCollection services)
        {

            services.AddSwaggerGen(options =>
            {
                options.SwaggerDoc("v1", new OpenApiInfo { Title = "My API", Version = "v1" });
                // 獲取xml文件名
                var xmlFile = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml";
                // 獲取xml文件路徑
                var xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile);
                // 添加控制器層註釋,true表示顯示控制器註釋
                options.IncludeXmlComments(xmlPath, true);
            });

            services.AddControllers();
        }

        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            //啓用中間件服務生成Swagger做爲JSON終結點
            app.UseSwagger(c=> {

                c.PreSerializeFilters.Add((doc,item)=> {

                    doc.Servers = new List<OpenApiServer>
                    {
                       new OpenApiServer{
                        Url=$"{item.Scheme}://{item.Host.Value}/{item.Headers["X-Forwarded-Prefix"]}"
                       }
                    };
                });
            });
            //啓用中間件服務對swagger-ui,指定Swagger JSON終結點
            app.UseSwaggerUI(c =>
            {
                c.ShowExtensions();
                c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1");
                c.DocExpansion(DocExpansion.None);
                c.RoutePrefix = string.Empty;  //若是跟目錄顯示SwaggerUI加上這句
            });
            app.UseHttpsRedirection();
            app.UseRouting();
            app.UseAuthorization();
            app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllers();
            });
        }

2.4設置生成的API文檔

首先啓動項目,以後會生成一個Demo1.xml文件,以下圖所示,單擊文件Demo.xml文件,修改複製到輸出目錄:若是較新則複製api

三.發佈API

3.1發佈程序

選擇項目名稱,右鍵選擇發佈瀏覽器

選擇文件夾,以後選擇下一步,選擇完成便可。服務器

點擊發布按鈕便可app

3.2上傳程序

使用Xftp軟件,把本地發佈的文件上傳到Linux系統中asp.net

到此,API已經建立,也上傳到服務器了。工具

四.啓動項目

使用Xshell工具,鏈接到咱們的Linux操做系統,使用cd path 命令進入到以前上傳的文件夾中。

進入目錄:cd /home/www/test
查看文件列表:ls

輸入命令:dotnet Demo1.dll,以下圖所示,這是成功的在Linux中啓動了咱們發佈的API項目。

192.168.6.130:把你Linux的IP替換個人這個192.168.6.130,在訪問

在你的瀏覽器中輸入:http://192.168.6.130:5000/index.html

到此,咱們就完成一個Asp.net core發佈的API,部署到Linux系統中,成功啓動運行。

五.總結

經過如上操做,也只是簡單粗糙的在Linux中啓動WebApi,讓我學習了.net core也是能夠跨平臺的,也是總結一下踩坑的經驗,好比說部署Api中若是有Swagger,正常的部署是沒法訪問,須要修改配置西信息查看2.3 Swagger配置,後面計劃繼續深刻,把API部署到Dokcer中,使用nginx來實現反向代理。雖然這些在工做中徹底用不到,就是想學習瞭解,這個技術能幫我解決什麼問題,只能瞭解更多,遇到問題纔能有多個解決方法。加油,乾飯人!

相關文章
相關標籤/搜索