從零開始構建私有npm倉庫

對于為何要搭建私有倉庫就不再過多贅述祟偷,三個關鍵詞剥扣,穩(wěn)定性宜鸯、私密性和安全性坎怪,接下來直接上干貨

介紹

  • verdaccio是一個開源的輕量的私有的npm proxy registry(npm代理資源庫)岖沛。
    安裝暑始、使用都非常簡單
    Verdaccio官網

開始安裝

官網提供了兩種類型的下載方式:

  • 使用docker鏡像安裝
  • 使用npm/yarn進行全局安裝;

方式一:docker鏡像安裝

  • 拉取 Verdaccio 的 docker 鏡像:
docker pull verdaccio/verdaccio
  • 在根目錄下創(chuàng)建 docker 文件
mkdir -p ~/docker/local
cd ~/docker/local
  • 從 git 拉取示例到 local 到目錄下
git clone https://github.com/verdaccio/verdaccio
cd ~/docker/local/docker-examples/v6
  • 移動配置文件
mv docker-local-storage-volume ~/docker/verdaccio
  • 設置文件夾權限
chown -R 100:101 ~/docker/verdaccio
  • 啟動鏡像
docker run -it -d --name verdaccio \
  -p 4873:4873 \
  -v ~/docker/verdaccio/conf:/verdaccio/conf \
  -v ~/docker/verdaccio/storage:/verdaccio/storage \
  -v ~/docker/verdaccio/plugins:/verdaccio/plugins \
  verdaccio/verdaccio

npm 方式安裝

  • 全局安裝 verdaccio
npm install -g verdaccio --unsafe-perm

加上 -–unsafe-perm 的原因是防止報 grywarn 權限的錯婴削。

  • 修改配置文件
    verdaccio 的特點是廊镜,你在哪個目錄運行,它的就會在對應的目錄下創(chuàng)建自己的文件馆蠕。目錄下默認有兩個文件:config.yaml 和 storage期升,htpasswd 是添加用戶之后自動創(chuàng)建的惊奇。

打開默認啟動的 config.yaml 文件:

vim /root/.config/verdaccio/config.yaml
auth:
  htpasswd:
    file: ./htpasswd
    # Maximum amount of users allowed to register, defaults to "+inf".
    # You can set this to -1 to disable registration.
    max_users: -1
uplinks:
  npmjs:
    url: https://registry.npmjs.org/
  cnpm:
    url: https://registry.npm.taobao.org
packages:
  "@aemp/*":
    access: $authenticated
    publish: $authenticated
    unpublish: $authenticated
  "@*/*":
    access: $all
    publish: $authenticated
    unpublish: $authenticated
    proxy: cnpm
  "**":
    access: $all
    publish: $authenticated
    unpublish: $authenticated
    proxy: cnpm
    

access 是訪問權限控制,總共有三種身份:所有人(all)播赁、匿名用戶(anonymous)颂郎、認證(登陸)用戶($authenticated)。

  • 對外開放 4873 端口
    verdaccio 繼承了 sinopia容为,端口號 4873 依然不變乓序。
firewall-cmd --state                 # 先查看防火墻狀態(tài),
service firewalld start              # 開啟防火墻:
firewall-cmd --zone=public --add-port=4873/tcp –permanent  # 開放4873端口
firewall-cmd --reload                # 重新載入
firewall-cmd --zone=public --query-port=4873/tcp    # 查看是否添加成功
  • 啟動 verdaccio
verdaccio
  • pm2 守護 verdaccio 進程
    安裝 pm2:
npm install -g pm2 --unsafe-perm
  • 使用 pm2 啟動 verdaccio:
pm2 start verdaccio
  • 查看 pm2 守護下的進程 verdaccio 的實時日志:
pm2 show verdaccio
  • nginx 配置
server {
    listen 443 ssl http2;
    server_name registry.xxx.com;
  
    # ssl
    ssl on;
    ssl_certificate cert.crt;
    ssl_certificate_key cert.key;
    ssl_session_timeout 5m;
    ssl_protocols TLSv1.2 TLSv1.1 TLSv1; #SSL協(xié)議
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;#SSL加密算法
    ssl_prefer_server_ciphers on;

    location / {
        proxy_set_header    Host $host;
        proxy_set_header    X-Real-IP $remote_addr;
        proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header    X-Forwarded-Proto $scheme;
        proxy_pass          http://127.0.0.1:4873/;
        proxy_read_timeout  600;
        proxy_redirect off;
     }

     location ~ ^/verdaccio/(.*)$ {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;
        proxy_set_header X-NginX-Proxy true;
        proxy_pass http://127.0.0.1:4873/$1;
        proxy_redirect off;
    }
}

用戶管理

  • 設置倉庫源
npm set registry http://localhost:4873
  • 添加用戶
npm adduser --registry http://localhost:4873

輸入 username坎背、password 以及 Email 即可

  • 登錄
npm login --registry http://localhost:4873
  • 上傳私有包
npm publish --registry http://localhost:4873

快來試試吧

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末替劈,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子得滤,更是在濱河造成了極大的恐慌陨献,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,378評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件懂更,死亡現(xiàn)場離奇詭異眨业,居然都是意外死亡,警方通過查閱死者的電腦和手機沮协,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評論 2 382
  • 文/潘曉璐 我一進店門龄捡,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人慷暂,你說我怎么就攤上這事聘殖。” “怎么了行瑞?”我有些...
    開封第一講書人閱讀 152,702評論 0 342
  • 文/不壞的土叔 我叫張陵奸腺,是天一觀的道長。 經常有香客問我蘑辑,道長洋机,這世上最難降的妖魔是什么坠宴? 我笑而不...
    開封第一講書人閱讀 55,259評論 1 279
  • 正文 為了忘掉前任洋魂,我火速辦了婚禮,結果婚禮上喜鼓,老公的妹妹穿的比我還像新娘副砍。我一直安慰自己,他們只是感情好庄岖,可當我...
    茶點故事閱讀 64,263評論 5 371
  • 文/花漫 我一把揭開白布豁翎。 她就那樣靜靜地躺著,像睡著了一般隅忿。 火紅的嫁衣襯著肌膚如雪心剥。 梳的紋絲不亂的頭發(fā)上邦尊,一...
    開封第一講書人閱讀 49,036評論 1 285
  • 那天,我揣著相機與錄音优烧,去河邊找鬼蝉揍。 笑死,一個胖子當著我的面吹牛畦娄,可吹牛的內容都是我干的又沾。 我是一名探鬼主播,決...
    沈念sama閱讀 38,349評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼熙卡,長吁一口氣:“原來是場噩夢啊……” “哼杖刷!你這毒婦竟也來了?” 一聲冷哼從身側響起驳癌,我...
    開封第一講書人閱讀 36,979評論 0 259
  • 序言:老撾萬榮一對情侶失蹤滑燃,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后颓鲜,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體不瓶,經...
    沈念sama閱讀 43,469評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 35,938評論 2 323
  • 正文 我和宋清朗相戀三年灾杰,在試婚紗的時候發(fā)現(xiàn)自己被綠了蚊丐。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,059評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡艳吠,死狀恐怖麦备,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情昭娩,我是刑警寧澤凛篙,帶...
    沈念sama閱讀 33,703評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站栏渺,受9級特大地震影響呛梆,放射性物質發(fā)生泄漏。R本人自食惡果不足惜磕诊,卻給世界環(huán)境...
    茶點故事閱讀 39,257評論 3 307
  • 文/蒙蒙 一填物、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧霎终,春花似錦滞磺、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至广凸,卻和暖如春阅茶,著一層夾襖步出監(jiān)牢的瞬間蛛枚,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工脸哀, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留坤候,地道東北人。 一個月前我還...
    沈念sama閱讀 45,501評論 2 354
  • 正文 我出身青樓企蹭,卻偏偏與公主長得像白筹,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子谅摄,可洞房花燭夜當晚...
    茶點故事閱讀 42,792評論 2 345

推薦閱讀更多精彩內容