文档章节

搭建NPM私服

 董松
发布于 2016/09/08 16:57
字数 570
阅读 113
收藏 0

由于网上文档所采用的NodeJS和CNPM版本过老,包括GitHub官网,都有或多或少的问题,最终经过折腾和整理形成这篇文档,文档中数据库选用MySQL,架设Nginx代理非必需。

1.安装NodeJS

mkdir -p /App/src
cd /App/src
wget https://nodejs.org/dist/v6.4.0/node-v6.4.0-linux-x64.tar.xz
tar Jxf node-v6.4.0-linux-x64.tar.xz
mv node-v6.4.0-linux-x64 /App/node
useradd node
echo 'export PATH=/App/node/bin:$PATH' >> /home/node/.bash_profile

2.安装CNPM服务端

su - node
git clone https://github.com/cnpm/cnpmjs.org.git
cd cnpmjs.org/
npm install

3.MySQL创建数据库并授权

CREATE DATABASE cnpmjs;
GRANT ALL ON cnpmjs.* ON cnpmjs@'127.0.0.1' IDENTIFIED BY 'Password';
FLUSH PRIVILEGES;

4.数据库导入数据

mysql -uroot cnpmjs < docs/db.sql

5.修改配置文件config/index.js

  • 启用集群模式,可选项
enableCluster: true,
  • 端口设置,registryPort为注册服务端口,webPort为Web访问端口,默认即可
registryPort: 7001,
webPort: 7002,
  • 管理员设置
admin: 'songsong@songsong.org',
  • 数据库配置
db: 'cnpmjs',
username: 'cnpmjs',
password: 'Password',
dialect: 'mysql',
host: '127.0.0.1',
port: 3306,
  • 绑定监听地址,可选项。若非本机需要访问,则添加符号//注释此行。亦可在本机架设Nginx做反向代理,则无须修改此行。
bindingHost: '127.0.0.1',
  • 注册主机名修改为对应IP地址或域名
registryHost: 'npm.songsong.org',
  • 开启私有模式,只允许管理员发布包,默认公有模式允许所有用户发布包。
enablePrivate: true,
  • 允许发布私有包必须具有的命名前缀
scopes: [ '@songsong.org' ],
  • 设置同步源,默认即可
sourceNpmRegistry: 'https://registry.npm.taobao.org',
  • 同步模式,none不同步只代理源公有模块;exist只同步已存在的模块;all同步所有模块。
syncModel: 'exist', 

6.启动CNPM服务

bin/nodejsctl start

7.添加Nginx反向代理,使用两个域名区分CNPM Web服务和注册服务,重载配置

  • Web服务
upstream npm.songsong.org
{
    server 127.0.0.1:7002 weight=10;
}

server
{
    listen       80;
    server_name  npm.songsong.org;
    index        index.html;

    location /
    {
        proxy_redirect off;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header REMOTE-HOST $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_connect_timeout 60;
        proxy_send_timeout 60;
        proxy_read_timeout 60;
        proxy_pass http://npm.songsong.org;
    }
}
  • 注册服务
upstream reg.npm.songsong.org
{
    server 127.0.0.1:7001 weight=10;
}

server
{
    listen       80;
    server_name  reg.npm.songsong.org;
    index        index.html;

    location /
    {
        proxy_redirect off;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header REMOTE-HOST $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_connect_timeout 60;
        proxy_send_timeout 60;
        proxy_read_timeout 60;
        proxy_pass http://reg.npm.songsong.org;
    }
}

8.安装CNPM客户端

npm install -g cnpm

9.设置CNPM客户端访问私服,两种方式效果一样

  • 命令行
cnpm set registry http://reg.npm.songsong.org
  • 修改配置文件~/.cnpmrc
registry=http://reg.npm.songsong.org

© 著作权归作者所有

下一篇: Mac系统优化
粉丝 9
博文 42
码字总数 22010
作品 0
朝阳
运维
私信 提问
想玩NPM私服吗?客官快进来看一看啊~

Cnpm,官方解释为Company npm。 由于团队需求,现在需要搭建一个npm私服,用来更方便地管理团队的组件库,并且更快速更稳定地提供服务,我踏上了搭建npm私服的道路。 首先,下载cnpmjs.org代...

路从今夜白丶
2018/11/14
0
0
使用verdaccio搭建npm私有仓库 - Better’s study fairyland

使用verdaccio搭建npm私有仓库 使用verdaccio搭建npm私有仓库 需求背景:平时在项目工作中可能会用到很多通用性的代码,比如,框架类、工具类以及公用的业务逻辑代码等等,通过打包发布到npm...

Better
02/14
0
0
如何设计npm包的开发和发布流程

最近在把公司内部用的一个库发布到内网的npm私服上,仅仅是发布的话是比较简单的,但这个库是由多个人一起维护的,而且npm私服只有一套,所以生产环境和开发环境,用的是同一个,那么,我们的...

小黎也
04/20
0
0
npm 私服工具verdaccio 搭建(一) (ps:欲使用sinopia搭建私服的一定要看过来)

吐个槽(关于为什么用verdaccio ) 先跟大家吐个槽,其实我本来是用sinopia搭建的私服,也知道大家也都倾向于sinopia来搭,毕竟它出道比较早,知名度比较高,但是sinopia的作者两年前就已经停...

yyzzhc999
2018/04/26
0
0
npm 私服工具verdaccio 搭建(二) (ps:欲使用sinopia搭建私服的一定要看过来)

引言 上篇文章我写了关于verdaccio私服在服务端的搭建过程,这篇文章我来分享一下客户端如何与私服连接,下载私服的包以及更新和发布公司内部封好的包。(ps:全文中的http://192.168.XX.50默...

yyzzhc999
2018/04/27
0
0

没有更多内容

加载失败,请刷新页面

加载更多

利用mybatis generator生成实体类、Mapper接口以及对应的XML文件

项目中通常会遇到数据的持久化,如果是采用mybatis的orm,就会涉及到生成xml的问题,刚好mybatis官网提供了这么个插件MyBatis Generator,效果简直是棒呆。 1. 首先需要在build.gradle文件中...

啊哈关关
今天
2
0
SpringSocial相关的知识点

使用SprigSocial开发第三方登录 核心类 ServiceProvider(AbstractOauth2ServiceProvider):主要负责实现server提供商(例如QQ,微信等共有的东西),默认实现类是AbstractOauth2ServiceProvider...

chendom
今天
3
0
Java并发之AQS详解

一、概述   谈到并发,不得不谈ReentrantLock;而谈到ReentrantLock,不得不谈AbstractQueuedSynchronizer(AQS)!   类如其名,抽象的队列式的同步器,AQS定义了一套多线程访问共享资源...

群星纪元
昨天
4
0
Fabric-sdk-java最新教程

Fabric Java SDK是Fabric区块链官方提供的用于Java应用开发的SDK,全称为Fabric-sdk-java,网上可用资料不多,本文列出了精心整理的针对Fabric Java SDK的最新精选教程。 如果希望快速掌握F...

汇智网教程
昨天
3
0
react 子组件监听props 变化

componentWillReceiveProps //已经被废弃 getDerivedStateFromProps// 推荐使用//如果条件不存在必须要返回null static getDerivedStateFromProps(props, current_stat...

一箭落旄头
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部