如何搭建自己的Nuget服务器
如何搭建自己的Nuget服务器
背景
在很多时候我们是有这样的需求的,我们很多的代码不需要对外公开源码,比较适合将编译好的动态库做成Nuget包,然后在VisualStudio中通过Nuget包管理器来进行添加引用,而且通过这种方式能很好的进行代码的版本管理,从而使代码的结构更加的合理,本篇文章就如何搭建整个Nuget服务器来进行说明。
步骤
1 下载BatGet
在GitHub上面找到了这个开源项目的Asp.Net Core的源代码以及Release文件,这里直接下载发布好的Release文件,有了这个发布文件我们就能够将发布文件部署到IIS里面从而供内网进行访问了,下面就是如何部署到IIS上面了。
2 IIS部署程序
在部署之前确保计算机已经安装了IIS组件,如果没有安装,在控制面板--》程序--》启用或关闭Windows功能中添加Windows功能,具体勾选项根据自己的需要进行配置。
图一 启用IIS组件
安装完成后我们将可以在Windows管理中找到IIS管理器
图二 查看IIS管理工具
2.1 将下载好的文件放到计算机硬盘上
首先将下载好的BaGet包放到一个特定的位置,比如:C:\inetpub\wwwroot\BaGet 这个物理路径下面。
2.2 创建应用程序池 BaGetAppPool
这个直接参照下面的截图中的配置即可。
图三 创建应用程序池BaGetAppPool
2.3 创建网站 BaGetServer
这个是最关键的一步,按照下图中的步骤进行创建,记得需要保证身份验证OK,这里IP地址是本机的IP地址,端口可以选用80
图四 创建网站
图五 测试连接
2.4 其它设置
这一步根据实际的情况进行调整,比如一些常见的设置:目录浏览、MIME类型,这个根据自己实际的情况进行调整。
图六 其它常见设置
配置文件设置
这个部分作为单独的部分列出来,这个部分很重要,这里主要是BaGet文件夹里面的appsettings.json 和web.config,这两个文件非常重要,下面直接贴出相关的配置,后面再做相关的讲解。
1 web.config 配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
<?xml version= "1.0" encoding= "utf-8" ?> <configuration> <location path= "." inheritInChildApplications= "false" > <system.webServer> <handlers> <add name= "aspNetCore" path= "*" verb= "*" modules= "AspNetCoreModuleV2" resourceType= "Unspecified" /> </handlers> <modules> <remove name= "WebDAVModule" /> <remove name= "WebDAV" /> </modules> <aspNetCore processPath= "dotnet" arguments= ".\BaGet.dll" stdoutLogEnabled= "false" stdoutLogFile= ".\logs\stdout" hostingModel= "inprocess" /> </system.webServer> </location> <system.webServer> <httpErrors errorMode= "DetailedLocalOnly" /> </system.webServer> </configuration> |
这个里面最主要的就是<modules>下面的两个remove,必须要加上否则会报错。
2 appsettings.json 配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
{ "ApiKey" : "ACMR" , "Urls" : "http://*:80" , "PackageDeletionBehavior" : "HardDelete" , "AllowPackageOverwrites" : true , "Database" : { "Type" : "Sqlite" , "ConnectionString" : "Data Source=baget.db" }, "Storage" : { "Type" : "FileSystem" , "Path" : "" }, "Search" : { "Type" : "Database" }, "Mirror" : { "Enabled" : true , // Uncomment this to use the NuGet v2 protocol //"Legacy": true, "PackageSource" : "https://api.nuget.org/v3/index.json" }, // Uncomment this to configure BaGet to listen to port 8080. // See: https://docs.microsoft.com/en-us/aspnet/core/fundamentals/servers/kestrel?view=aspnetcore-3.1#listenoptionsusehttps //"Kestrel": { // "Endpoints": { // "Http": { // "Url": "http://localhost:8080" // } // } //}, "Logging" : { "IncludeScopes" : false , "Debug" : { "LogLevel" : { "Default" : "Warning" } }, "Console" : { "LogLevel" : { "Microsoft.Hosting.Lifetime" : "Information" , "Default" : "Warning" } } } } |
关于这个部分的配置,请参考官方文档查看每一项到底是什么意思。
注意事项
在整个部署的过程中有一点不太明白的地方是在添加网站的时候,如果设置了主机名例如:www.xxx.com后,一直报ErrorCode:462,最后放弃了主机名设置,采用了在 hosts文件中添加映射的方式来添加域名,具体设置如下:在 C:\Windows\System32\drivers\etc 路径下打开hosts文件 添加IP地址和域名的映射,通过这样最后实现通过域名访问的问题。
在下一篇文章中我将来介绍如何通过 NugetPackageExplorer上传dll生成nupkg文件,并最终上传到部署好的nuget服务器上面,并且在VS中进行引用对应的nuget包。
动图欣赏