因爲網上文檔所採用的NodeJS和CNPM版本過老,包括GitHub官網,都有或多或少的問題,最終通過折騰和整理造成這篇文檔,文檔中數據庫選用MySQL,架設Nginx代理非必需。html
1.安裝NodeJSnode
mkdir -p /App/src cd /App/src wget 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服務端mysql
su - node git clone cd cnpmjs.org/ npm install
3.MySQL建立數據庫並受權linux
CREATE DATABASE cnpmjs; GRANT ALL ON cnpmjs.* ON cnpmjs@'127.0.0.1' IDENTIFIED BY 'Password'; FLUSH PRIVILEGES;
4.數據庫導入數據git
mysql -uroot cnpmjs < docs/db.sql
5.修改配置文件config/index.js
github
啓用集羣模式,可選項web
enableCluster: true,
端口設置,registryPort
爲註冊服務端口,webPort
爲Web訪問端口,默認便可sql
registryPort: 7001,webPort: 7002,
管理員設置數據庫
admin: 'songsong@songsong.org',
數據庫配置npm
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.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 cnpm
9.設置CNPM客戶端訪問私服,兩種方式效果同樣
命令行
cnpm set registry http://reg.songsong.org
修改配置文件~/.cnpmrc
registry=http://reg.songsong.org