惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Microsoft Azure Blog
Microsoft Azure Blog
有赞技术团队
有赞技术团队
IT之家
IT之家
博客园 - 聂微东
Jina AI
Jina AI
Hugging Face - Blog
Hugging Face - Blog
Last Week in AI
Last Week in AI
Apple Machine Learning Research
Apple Machine Learning Research
WordPress大学
WordPress大学
小众软件
小众软件
爱范儿
爱范儿
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
V
Visual Studio Blog
雷峰网
雷峰网
酷 壳 – CoolShell
酷 壳 – CoolShell
阮一峰的网络日志
阮一峰的网络日志
宝玉的分享
宝玉的分享
博客园 - 三生石上(FineUI控件)
大猫的无限游戏
大猫的无限游戏
博客园 - Franky
量子位
月光博客
月光博客
博客园 - 【当耐特】
博客园 - 叶小钗

博客园 - 信息技术的风采

一次 RFID 快速传感速率问题排查复盘:同一个 exe,为什么 VS Debug 快、双击运行慢? 三层内链内容建设方法:从软文堆砌到主题集群 GitHub 主仓库同步到部署仓库,再对接 Vercel:一次完整的部署与排障实录 MD5哈希生成:原理、应用与在线工具指南 Cursor与Claude 3.7开发体验差异分析 ModBus功能码异常和功能码错误代码 解决在VirtualBox中的Windows 10系统无法双向复制的问题 前端BootstrapTable组件不同使用方法的效率各有差异 使用VS2017开发APP中使用VUE.js开发遇到打包出来的android文件 在低版本的android(4.3)中无法正常使用 如何使cmd窗口正确显示utf-8编码的文字 Linux 安装 git 使用 .net WEBAPI 返回 application/json类型导致 IE8 提示下载 关于 C#的一些记录 关于tinymce的一些记事 个人使用uploadify插件遇到的一些问题 ASP.NET中Session的个人浅谈 QL Server 创建用户时报错:15023 用户,组或角色'XXX'在当前数据库中已存在? 运行cmd时提示你可能没有适当的权限访问该项目 使用Flash Builder 4.6出现 新建配置 失败 java.lang.NullPointerException错误 CMD命令进入某个目录 使用 CKEditor编辑插件
使用Nexus搭建Nuget服务以及生成nuget包遇到的一些坑
信息技术的风采 · 2023-10-11 · via 博客园 - 信息技术的风采

前言

可以部署Nuget包的工具有两个:一个是我要推荐的Nexus,另外一个是BaGet。
因为这边还有同事需要使用 Maven,最后考虑使用Nexus兼容 Nuget和Maven。下面介绍Nexus3.60的安装使用以及 Nuget包的生成的一些步骤.
我这边安装Nexus的环境是

CentOS Linux release 7.2.1511
阿里云虚拟服务器 1个CPU + 2G内存 + 40G硬盘
JAVA OpenJDK 1.8.0_382

这里要介绍的是sonatype Nexus, 是一款私有仓库的解决,目前支持多种私有仓库的搭建,比如Maven, yum, npm私有库等等,详情请参考下图:

image

更多详情可访问官方网站:https://www.sonatype.com/nexus/repository-oss-download

github项目: https://github.com/sonatype/nexus-public

从Nexus 3开始,Nexus已经支持 Docker仓库的创建,Nuxus2 是不支持Docker 镜像仓库的

参考官方安装文档:https://help.sonatype.com/repomanager3/installation

下载 SonarType Nexus 3.60.

大家可以在官网下载 上找最新的下载,如果由于一些原因无法下载可以从该分享上下载

文件名称:nexus-3.60.0-02-unix.tar.gz
链接:https://pan.baidu.com/s/1WVKmnyfLT50U2HC_Gs5Ayw?pwd=g1h1
提取码:g1h1

将该文件传到服务器上即可

安装过程

我这边是使用root账户登录到操作系统

创建用户

出于安全考虑, 建议不要使用管理员身份运行或任何有sudo权限的用户来运行Nexus. 建议创建一个新用户来运行Nexus, 例如nexus

sudo adduser nexus

文件解压缩

将刚刚上传的压缩包文件复制到 /home/nexus 中

执行解压缩指令
解压缩:sudo tar -xvf /home/nexus/nexus-3.60.0-02-unix.tar.gz -C /home/nexus/nexus_Local
切换到nexus_Local文件夹中,然后修改用户文件所有者
sudo chown -R nexus:nexus /home/nexus/nexus_Local
ls -la查看用户所有者确认是否调整过来

解压缩后nexus_Local文件夹有两个文件夹,分别为:nexus-3.60.0-02 sonatype-work

配置nexus3(重点)

编辑 /home/nexus/nexus_Local/bin/nexus.rc sudo vi /home/nexus/nexus_Local/nexus-3.60.0-02/bin/nexus.rc

将文件内容(设置运行用户) #run_as_user="" 改成 run_as_user="nexus"

ps: 数据默认保存在 /home/nexus/nexus_Local/sonatype-work/nexus3中。上传的文件存在该文件夹下面 blobs/default/content 中,想详细研究的可以自己进里面查看

我这边服务器 cpu和内存较小。直接打开的话无法正常打开,会报内存不够的错误。复盘的时候忘截图了,这个问题还比较严重的,直接导致无法启动。(详细日志查看 /home/nexus/nexus_Local/sonatype-work/nexus3/log中日志)
设置方法如下:

  • 编辑 sudo vi /home/nexus/nexus_Local/nexus-3.60.0-02/bin/nexus.vmoptions

  • 修改前三行,这三个值不能设置的太小,太小一样会导致内存不够的错误。

-Xms128m
-Xmx512m
-XX:MaxDirectMemorySize=512m

设置服务端口

  • 编辑 sudo vi /home/nexus/nexus_Local/nexus-3.60.0-02/etc/nexus-default.properties

  • 修改 application-port=8081 将该值设置为需要设置的端口,默认是 8081

设置开机启动的nexus服务

新增一个nexus.service服务
sudo vi /etc/systemd/system/nexus.service

添加如下内容

[Unit]
Description=nexus service
After=network.target

[Service]
Type=forking
LimitNOFILE=65536
User=nexus
Group=nexus
#启动
ExecStart=/home/nexus/nexus_Local/nexus-3.60.0-02/bin/nexus start
#停止
ExecStop=/home/nexus/nexus_Local/nexus-3.60.0-02/bin/nexus stop
#启动用户
User=nexus
Restart=on-abort

[Install]
WantedBy=multi-user.target

刷新服务 sudo systemctl daemon-reload

设置开机启动 sudo systemctl enable nexus.service

启动nexus服务 sudo systemctl start nexus.service

启动完成后,尝试在服务器执行(我这边使用的是默认端口) curl http://127.0.0.1:8081 ,有 html 结尾的数据 返回说明配置成功

注意事项

  • 配置内存时 将该最大值调整成512m以上,否则无法正常启动

  • 将文件夹放置在 启动用户 文件夹下,并且该nexus一定要有owner权限,否则无法正常启动。一定不要放置在root用户下,否则会出现Permission Denied报错,是因为启动用户无该文件夹权限。

端口设置和防火墙

  • 注意设置本地端口和防火墙

  • 注意云服务器的出入站端口规则设置,否则无法访问

默认密码

配置完成后,正常访问nexus平台,使用浏览器打开平台后,使用admin用户登录,admin用户初始密码保存在/home/nexus/nexus_Local/sonatype-work/nexus3/admin.password 中,直接将该文件中的内容复制出来,然后登录成功后修改admin密码

nuget包生成

下载nuget工具(下载完成后记得在属性可能需要 解除锁定 才能用),然后将该文件复制到 C:\Windows\System32 中或者将该nuget.exe的文件路径设置到环境变量

生成nuget包教程参考这个

建议下载Nuget Package Explorer打包生成nuget包

可以使用命令行生成使用 nuget pack xxx.csprojnuget pack xxx.nuspec

包生成遇到的坑

版本号最多使用三位(例如:1.0.0),并版本号数字不大于1000, 超过会报错,导致可以生成,但下载使用的时候会报错(但该程序包不包含任何与该框架兼容的程序集引用或内容文件

参考