將.NET Core Web Api發布到Linux(CentOS 7 64)


將.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上發布成功了。

 

        容易踩坑的地方標注一下

        1.記得關閉防火牆

        2.如果是線上的服務器,請記得一定要開放對應端口。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM