由于网上文档所采用的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_profile2.安装CNPM服务端
su - node git clone https://github.com/cnpm/cnpmjs.org.git cd cnpmjs.org/ npm install3.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.sql5.修改配置文件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 start7.添加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://songsong.org; } } 注册服务 upstream reg.songsong.org { server 127.0.0.1:7001 weight=10; } server { listen 80; server_name reg.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.songsong.org; } }8.安装CNPM客户端
npm install -g cnpm9.设置CNPM客户端访问私服,两种方式效果一样
命令行 cnpm set registry http://reg.songsong.org 修改配置文件~/.cnpmrc registry=http://reg.songsong.org