搭建NPM私服

搭建NPM私服

因爲網上文檔所採用的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.jsgithub

  • 啓用集羣模式,可選項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
相關文章
相關標籤/搜索