背景
在很多时候我们是有这样的需求的,我们很多的代码不需要对外公开源码,比较适合将编译好的动态库做成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:inetpubwwwrootBaGet 这个物理路径下面。
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=".logsstdout" 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:WindowsSystem32driversetc 路径下打开hosts文件 添加IP地址和域名的映射,通过这样最后实现通过域名访问的问题。
在下一篇文章中我将来介绍如何通过 NugetPackageExplorer上传dll生成nupkg文件,并最终上传到部署好的nuget服务器上面,并且在VS中进行引用对应的nuget包。
动图欣赏