如何搭建自己的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 配置
<?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 配置
{
"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包。
动图欣赏


浙公网安备 33010602011771号