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

    动图欣赏

  • 相关阅读:
    这个Pandas函数可以自动爬取Web图表
    /lib64/libstdc++.so.6: version `CXXABI_1.3.8' not found (required by /usr/local/python3.6/lib/python3.6/site-packages/paddle/fluid/core_avx.so)
    kubernetes yaml详解
    centos 安装kubernetes
    初识kafka-connect
    Docker1:本地连接Docker中的mysql,实现数据同步
    git分支管理规范
    cat 配置告警规则
    Java的即时编译(Just In Time, JIT)及其优化
    java自定义实现一个缓存器
  • 原文地址:https://www.cnblogs.com/seekdream/p/14719115.html
Copyright © 2020-2023  润新知