presence 2.0 准备发布了!
在发布之前,需要进行内部测试,所以我们需要部署一套测试环境。
后端的测试环境很容易就搭建完成了。但前端只是一个 js 包,理论上前端不需要测试环境,只需要打个包发给测试同学就可以了。但是我觉得应该尽量模拟真实的发包流程,所以我决定使用 verdaccio 搭建一个 npm 私服。
说干就干,让运维同学给我准备了一台 Ubuntu 服务器,开始搭建环境。
verdaccio 是意大利语绿色的意思,verdaccio 的颜色刚好是绿色。verdaccio 是一个轻量级的 npm 注册中心,支持本地安装。是搭建 npm 私服的首选技术方案。
由于很久没有装过 verdaccio 了,一些事物可能发生了些变化,所以写篇文章记录下来,方便后面查看。
Nodejs 安装
首先使用 ssh 进行登陆。
ssh username@ip -p port
接下来安装 Nodejs,因为 verdaccio 是基于 Nodejs 开发的,所以需要 Nodejs 的环境。
安装 Nodejs 有很多种方式。
- apt install nodejs,这种方式安装下来的 Nodejs 版本是 10.x,Verdaccio 至少需要 Nodejs 12.x +。然后我们再通过 npm i -g n 安装 n,再通过 n 来升级 Nodejs 版本。
- 使用 nvm。
- 二进制安装,直接从 Nodejs 官网下载二进制压缩包安装,然后配置 profile 文件。
- 通过 nodesource 脚本更新 Nodejs 版本到 apt。
由于网络原因和系统原因,前三种方式都不适合我的情况。
下面介绍第四种方式。
首先更新 apt。
sudo apt update sudo apt upgrade
更新之后安装 curl。
sudo apt install -y curl
通过 curl 请求 nodesource 的脚本,并执行它。
sudo curl -fsSL https://deb.nodesource.com/setup_16.x | sudo -E bash -
运行成功后,再来安装 nodejs。
sudo apt install -y nodejs
安装完成后,nodejs 的版本为 16.18.1。
node -v v16.18.1
设置 npm 源
接下来进行装包,发现直接卡住。
npm i -g verdaccio
然后我在 github 上面查到了这个 issues。github.com/npm/cli/iss…
于是我开始测试 register.npmjs.org 的连接情况,发现连不通。
设置为淘宝镜像源。
npm config set registry https://registry.npm.taobao.org
现在 npm 源的问题也解决了。
之后可以使用 nrm 来管理 npm 的源。
sudo npm i -g nrm
启动 verdaccio
解决好网络问题后,继续安装 verdaccio。
npm i -g verdaccio
安装完成之后直接运行 verdaccio。
verdaccio
不出意外就启动起来了。可以通过 http://localhost:4873 来访问 verdaccio。
向外网暴露端口
接下来需要向外网暴露端口。
配置 verdaccio
首先来修改 verdaccio 的配置文件。在第一次启动 verdaccio 时,会创建一个 ~/users/.config/verdaccio/config.yaml 文件。
找到 listen 的配置,把监听的 ip 和端口设置为 0.0.0.0:4873,大概在 150 行左右。
listen: - 0.0.0.0:4873
这样才可以向外网暴露端口。
修改完之后,重新启动 verdaccio。
域名也可以在这里配置。
除了配置 listen 以外,还需要配置 unlinks,大约在 65 行,把 npmjs url 的值改为淘宝的镜像源,否则影响发包。
uplinks: npmjs: url: https://registry.npm.taobao.org/
配置防火墙
只配置 verdaccio 是不够的,还需要配置防火墙。
我使用的是 firewall-cmd。
首先添加对外暴露的端口 4873。
firewall-cmd --add-port=4873/tcp --permanent
然后刷新防火墙配置。
firewall-cmd --reload
现在可以通过外网访问了。
使用 pm2 后台启动 verdaccio
通过 SSH 启动的 verdaccio,一旦会话断开服务也会停掉。
可以通过守护进程命令 nohup 来启动,防止挂掉。简单粗暴而且有效。
pm2 也是一种不错的方式,这里我使用了 pm2 来管理后台进程。
首先安装 pm2。
npm i -g pm2
安装成功后运行下面的命令启动 verdaccio。
pm2 start verdaccio
发包
首先使用 nrm 添加一下私服的源。
nrm add name ip:port
然后创建一个用户。
npm adduser
输入用户名、密码、邮箱就创建好了。
创建好用户之后,会自动登录。
登录之后找到要发布的包,运行npm publish
,发布成功!
回到 verdaccio 网页中,刷新页面,就可以看到发布的包了!