搭建
搭建使用verdaccio插件
以下环境:centOS 7
1、安装node+npm
sudo yum -y install nodejs
或者官网直接下载包,解压之后软链bin下的执行文件到 /usr/bin下(比较靠谱)
# 在你想放node的地方创建文件夹nodejs,比如 /opt/nodejs
cd /opt/nodejs
# 去https://nodejs.org/dist/找到你想安装的版本linux的tar.xz包,右键复制链接地址
wget https://nodejs.org/dist/v16.4.2/node-v16.4.2-linux-x64.tar.xz
# 解压
xz -d node-v16.4.2-linux-x64.tar.xz
tar -xvf node-v16.4.2-linux-x64.tar
# 进入目录
cd node-v16.4.2-linux-x64
# 创建软连接
ln -s /opt/nodejs/node-v16.4.2-linux-x64/bin/node /usr/bin/node
ln -s /opt/nodejs/node-v16.4.2-linux-x64/bin/npm /usr/bin/npm
ln -s /opt/nodejs/node-v16.4.2-linux-x64/bin/npx /usr/bin/npx
# 测试
node -v
npm -v
2、安装verdaccio
npm i verdaccio -g
安装成功之后可启动verdaccio
verdaccio
如果出现command not found
的问题,可能是你的全局node_modules没有在配置进环境变量,输入以下命令即可解决。
echo -e "export PATH=$(npm prefix -g)/bin:$PATH" >> ~/.bashrc && source ~/.bashrc
启动verdaccio
时可以看到配置文件所在位置,vim 配置文件
底部加入listen:0.0.0.0:4873
即可
3、使用pm2
守护verdaccio
npm i pm2 -g
使用pm2
启动verdaccio
时,需要找到verdaccio的全路径
npm root -g # 获取全局node_modules位置 如:/opt/nodejs/node-v16.4.2-linux-x64/lib/node_modules
pm2 start /opt/nodejs/node-v16.4.2-linux-x64/lib/node_modules/verdaccio/bin/verdaccio
4、安装nginx
sudo yum install -y nginx
安装完成之后nginx -v
测试是否成功
开启机器的80端口,如果加https,则还需要开启443端口
# 打开`nginx.conf`
vim /etc/nginx/nginx.conf
# 在http内最下面添加
http{
...
server {
...
}
include /conf.d/*.conf; # 添加这一行,切记要分号!
...
}
保存后进入conf.d文件夹
vim /etc/nginx/conf.d/npm.xxxx.com.conf
添加如下内容
server {
listen 80;
listen 443 ssl;
server_name npm.xxxx.com;
# ssl配置与其他网站配置一样
ssl_certificate /etc/nginx/ssl/xxxx.com_combined.crt;
ssl_certificate_key /etc/nginx/ssl/xxxx.com.key;
ssl_ciphers 'xxxxxxxxx';
ssl_prefer_server_ciphers on;
access_log /data/log/nginx/npm.xxxx.com.access.log;
error_log /data/log/nginx/npm.xxxx.com.error.log;
# 下面是重点
location / {
# 真实发出请求的客户端IP
proxy_set_header X-Real-IP $remote_addr;
# 记录代理信息,每经过一级代理(匿名代理除外),代理服务器都会把这次请求的来源IP追加在X-Forwarded-For中
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# $host变量的值按照如下优先级获得:
# 请求行中的host.
# 请求头中的Host头部.
# 与一条请求匹配的server name.
proxy_set_header Host $host;
# 用于识别协议(HTTP 或 HTTPS),其中使用的客户端连接到代理或负载平衡器一个真实的标准报头
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://0.0.0.0:4873;
# off参数取消proxy_redirect从先前配置级别继承的指令的效果
proxy_redirect off;
}
}
最后,nginx -t
没问题的话,直接nginx -s reload
即可成功访问。(域名dns解析略过~)
删除发布的包
cd /home/**/verdaccio/storage
rm -rf /要删除的包名
刷新即可发现网页上已经没有了
网友评论