Linux系统通过Verdaccio搭建Npm私服

Linux系统使用Verdaccio搭建NPM私服
对积累并封装一套公共组件库或自定义脚手架,工具极大加速我们的业务开发进程
但是对于代码安全和隐私的考虑,不能将这些内容上传到公开的npm仓库中
可以利用Verdaccio工具在服务器上搭建一个Npm私服,更好的管理内部共享的代码

Verdaccio简介

Verdaccio 开源、轻量级、易于配置的npm私服解决方案
基于Node.js和Express.js构建,提供和官方npm仓库相似的使用体验
通过Verdaccio可以轻松在本地或远端搭建一个私有的npm仓库,实现包的快速访问、版本控制、权限管理等功能
Verdaccio存在一个内置的数据库来存放所有的npm包
提供默认的鉴权机制:htppasswd

Verdaccio通过htpasswd文件存放所有npm用户,鉴权、添加/删除的时候通过对文件的读写来实现
Verdaccio提供上行链路功能,安装Verdaccio仓库中不存在的包时,可配置向上游仓库下载

参考

vi文件搜索 /搜索内置
yum install tree

systemctl status firewalld -- 检查防火墙状态是否开启

systemctl enable firewalld -- 开启防火墙

firewall-cmd --zon=public --add-port=80/tcp --permanent -- 开发端口号

 // --zone表示处于哪个防火墙区域,--add-port表示增加一个端口规则,80/tcp表示开放的端口为80号端口,--permanent表示开放端口的规则永久生效。

firewall-cmd --reload -- 使开发端口的规则生效

开发redis端口

firewall-cmd --zone=public --add-port=6379/tcp --permanent

开发数据库端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent

firewall-cmd --reload

解决Linux端口占用问题:https://www.jb51.net/server/31902282m.htm

  • 案例
  867  netstat -anp | grep 888
  868  netstat -anp | grep 4873
  869  lsof -i :4873
  870  yum install lsof
  871  lsof -i :4873
  872  kill -9 4805
  873  lsof -i :4873

构建私服的好处

  1. 可以离线使用
  2. 提高包的安全性,使用私有npm仓库可以更好的管理包,避免在使用公共的npm包的时候出现漏洞
  3. 提高包的下载速度,使用私有npm仓库,可以将经常使用的npm包缓存到本地,从而提高包的下载速度,减少包的下载事件
    有利于团队内部开发和持续集成、部署等场景

Verdaccio的安装和使用

两种部署方式

第一种Docker部署方式

1. 目录结构
[root@lavm-h7edovikqi opt]# ll
total 12
drwxr-xr-x 3 root root 4096 May 29 14:37 compose_nginx
drwx--x--x 4 root root 4096 May 29 14:33 containerd
drwxr-xr-x 5 root root 4096 Jun  2 23:54 verdaccio
[root@lavm-h7edovikqi opt]# tree verdaccio
verdaccio
├── config
│   └── config.yaml
├── docker-compose.yml
├── plugins
└── storage
/config/config.yaml
# path to a directory with all packages
storage: ./storage
# path to a directory with plugins to include
plugins: ./plugins

# https://verdaccio.org/docs/webui
web:
  title: Verdaccio

auth:
  htpasswd:
    file: ./htpasswd
uplinks:
  npmjs:
    url: https://registry.npmjs.org/
packages:
  '@*/*':
    # scoped packages
    access: $all
    publish: $authenticated
    unpublish: $authenticated
    proxy: npmjs

  '**':
    access: $all

    # allow all known users to publish/publish packages
    # (anyone can register by default, remember?)
    publish: $authenticated
    unpublish: $authenticated

    # if package is not available locally, proxy requests to 'npmjs' registry
    proxy: npmjs

server:
  keepAliveTimeout: 60

listen: 0.0.0.0:4873

middlewares:
  audit:
    enabled: true


log: { type: stdout, format: pretty, level: http }

docker-compose.yml
version: "3"

services:
    verdaccio:
        image: verdaccio/verdaccio
        container_name: "verdaccio"
        networks:
          - node-network
        environment:
          - VERDACCIO_PORT=4873
        ports:
          - "4873:4873"
        volumes:
          - "./storage:/verdaccio/storage"
          - "./config:/verdaccio/conf"
          - "./plugins:/verdaccio/plugins"
networks:
    node-network:
      driver: bridge

执行 docker-compose -d up 开启verdaccio服务

posted @ 2024-06-03 00:27  Felix_Openmind  阅读(53)  评论(0编辑  收藏  举报