1、cnpm概述

cnpm是企业内部搭建npm镜像和私有npm仓库的开源方案。它同时解决了现有npm架构的一些问题。

2、为什么企业需要私有NPM

确保npm服务快速、稳定:对于企业来说,上线生产系统的时候,需要花半小时甚至更久等待npm模块依赖安装完毕,是不可接受的。部署镜像后,可以确保高速、稳定的npm服务。

发布私有模块:官方的npm上的模块全部是开源的。一些与企业业务逻辑相关的模块可能不适合开源。这部分私有的模块放在私有NPM仓库中,使用起来各种方便。

控制npm模块质量和安全:npm上的模块质量参差不齐,搭建私有仓库,可以更严格地控制模块的质量和安全,只有经过审核的模块才允许被加入私有仓库。

3、cnpm的特点

压缩包等文件从数据库中分离,放在CDN上,减轻了数据库的压力,提高了访问速度。

使用MySQL替换了CouchDB,更容易部署。同时由于大部分开发者更熟悉MySQL,因此架设起来更方便。

CDN和MySQL都可以方便地扩展。

4、部署cnpm

获取代码

git clone git://github.com/fengmk2/cnpmjs.org.git
  • 创建mysql库
create database cnpmjs;
use cnpmjs;
source docs/db.sql【db.sql位于cnpmjs.org/docs/db.sql】
• 修改配置
vim /cnpmjs.org/config/index.js
 
cnpm提供两个端口:7001和7002,其中7001用于NPM的注册服务,7002用于Web访问。
bindingHost为安装cnpm的服务器ip地址,也就是在浏览器中只能通过访问http://192.168.48.57来访问cnpm以及获取npm的注册服务。
 
按照之前创建的数据库来进行配置
4、安装依赖
进入/cnpmjs.org,执行make install
如果安装过程中报错,可能需要升级node和npm,目前我安装成功的环境为:
[root@centos6 config]# node -v
v4.3.0
[root@centos6 config]# npm -v
2.14.12
大家可以升级到我这个版本来安装
5、启动服务
node --harmony_generators dispatch.js
或者
nohup node --harmony_generators dispatch.js &
或者
node dispatch.js
或者
nohup node dispatch.js &
如果启动过程中报这个错:
[root@centos6 config]# node --harmony_generators dispatch.js
node: bad option: --harmony_generators

说明node版本不支持--harmony_generators选项,可以换成“node dispatch.js”或者“nohup node dispatch.js &”来启动。

其中nohup为在后台启动。

6、测试是否启动成功