其他分享
首页 > 其他分享> > 内网使用BaGet搭建NuGet包服务器

内网使用BaGet搭建NuGet包服务器

作者:互联网

一、NuGet包服务器搭建背景     近期公司内部实施网络安全项目,将网络划分为两部分:外网及内网,研发均在内网办公,内网无法访问外网,内网与外网实现物理隔离。     这就产生一个问题:源码依赖第三方包,无法从Nuget网站获取,最终编译失败。因此需要搭建一个内网包服务器,将项目依赖的第三方包都上传到包服务器,从而解决包依赖问题。     过去常用的包服务器是Nuget Server ,目前有基于.net core3.1的BaGet,最新版是v0.4.0-preview2,经过实际使用发现BaGet具有搭建速度快,稳定,功能基本够用的特点,符合当前需求,于是决定使用BaGet。   二、搭建BaGet     BaGet源码地址: https://github.com/loic-sharma/BaGet     BaGet编译包地址:https://github.com/loic-sharma/BaGet/releases/download/v0.4.0-preview2/BaGet.zip       1、下载BaGet编译包:BaGet.zip,解压至:D:\Tools\BaGet。     在命令行中执行:dotnet  baget.dll     出现如下提示信息,说明程序已启动,地址为:http://localhost:5000。   info: Microsoft.Hosting.Lifetime[0]       Now listening on: http://localhost:5000 info: Microsoft.Hosting.Lifetime[0]       Now listening on: https://localhost:5001 info: Microsoft.Hosting.Lifetime[0]       Application started. Press Ctrl+C to shut down. info: Microsoft.Hosting.Lifetime[0]       Hosting environment: Production info: Microsoft.Hosting.Lifetime[0]       Content root path: D:\Tools\BaGet       2、由于BaGet是基于.NET Core 3.1构建,因此需要安装.NET Core 3.1运行时,下载地址:https://dotnet.microsoft.com/zh-cn/download/dotnet/3.1/runtime,下载后在服务器(操作系统为Windows Server 2019)上安装.NET Core 3.1运行时       3、.NET Core程序有多种部署方式,为确保程序能随机器开机启动,选择使用nssm将BaGet做成Windows服务。nssm下载地址:http://www.nssm.cc/download     (1)nssm使用命令行才能查看主界面:在命令行窗口中定位到nssm.exe根目录,执行nssm install,显示如下:  

 

     (2)将相关参数填入

 

     (3)点击按钮Install service,执行成功后在服务中可以查看到BaGet服务已安装

 

三、上传nuget包     1、使用NuGetPackageExplorer或nuget命令     2、BaGet目前无上传功能,如果支持批量上传则能大大简化nuget包上传工作,提高包上传效率   四、VS添加内网包服务器地址  

 

    至此,编译项目,从包服务器拉取项目依赖包,项目编译通过。   五、优化VS配置包源     进一步的,如果按照这种设置,将存在如下问题:     (1)每台研发机器均要配置一遍     (2)包服务器IP如果有变更,仍要重新配置       能否0配置就实现?     针对问题(1):解决办法是使用VS默认包源:https://api.nuget.org/v3/index.json     针对问题(2):解决办法是将内网IP映射为nuget外网域名,使用域名访问,这样访问就不依赖于固定IP,实现访问解耦,因内网无法访问外网,故不存在域名冲突问题,该方案需要DNS支持       注意:     本文BaGet安装环境为Windows Server 2019,具备DNS功能,但需要手动安装,具体DNS域名映射,创建正向解析与反向解析网上有很多资料,本文不再详细介绍配置过程。   六、总结     本文从实际工作需要出发,搭建NuGet服务器,明确选型为BaGet,到搭建完成解决实际问题。最后使用中存在的包源配置问题、包源IP耦合问题给出进一步优化措施,最终通过使用域名代替IP以及DNS域名映射解决。      

标签:info,nssm,BaGet,Hosting,NuGet,服务器,内网
来源: https://www.cnblogs.com/maomu/p/16608243.html