使用Nexus搭建Nuget服务以及生成nuget包遇到的一些坑

前言

可以部署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, 超过会报错,导致可以生成,但下载使用的时候会报错(但该程序包不包含任何与该框架兼容的程序集引用或内容文件

参考

posted @ 2023-10-11 16:41  信息技术的风采  阅读(366)  评论(0编辑  收藏  举报