内网使用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