將.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.如果是線上的服務器,請記得一定要開放對應端口。