如何搭建自己的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包。

动图欣赏

 

posted @ 2021-04-29 19:44  Hello——寻梦者!  阅读(569)  评论(0编辑  收藏  举报