作者:Wellen
随着开发代码量的积累,许多公司级的公共组件需要共享,如用传统的方法直接拷贝代码,有诸多的弊端,如无法保证组件的更新以及难以统一维护等,私有化的npm仓库就迫切的需要了。
架设步骤
一、服务器环境准备
- Node.js >= 6.11.3
- MySQL >=0.5.0 包括mysql and mysql cli
- Simple File Store Service, like qiniu, aliyun-oss, tfs, upyun
二、安装MySql
这一步需要单独说一下,并不是所有的部署教程都会说。
1、安装完MySql之后,需要先开启mysql服务
systemctl start mysqld
2、只要在启动了服务之后,才能查看到数据库的密码 从这里查看:
cat /var/log/mysqld.log
3、找到这一句:
A temporary password is generated for root@localhost:
4、登录mysql
mysql -u root -p
5、我们需要重置密码,但密码规则需要先修改一下:
set global validate_password_policy=0;
6、:
SET PASSWORD = PASSWORD('密码');
MySql就算安装好了。
三、通过源代码部署
1、获取cnpm服务器代码
clone from github
git clone git://github.com/cnpm/cnpmjs.org.git $HOME/cnpmjs.org
cd $HOME/cnpmjs.org
2、创建数据库
create mysql tables
mysql -u root -p
mysql> create database cnpmjs;
mysql> use cnpmjs;
mysql> source docs/db.sql
3、安装依赖
npm install --build-from-source --registry=https://registry.npm.taobao.org --disturl=https://npm.taobao.org/mirrors/node
4、编辑配置文件
module.exports = {
debug: false,
enableCluster: true, // enable cluster mode
enablePrivate: true, // enable private mode, only admin can publish, other use just can sync package from source npm
database: {
db: 'cnpmjs',
host: 'localhost',
port: 3306,
username: 'root',
password: '刚才重设的数据库密码'
},
admins: {
admin: 'admin@cnpmjs.org',
},
syncModel: 'exist'// 'none', 'all', 'exist'
};
5、启动
npm start
6、下面这两个地址就是我们的私有仓库:
open registry and web
registry
open http://服务器ip:7001
web
open http://服务器ip:7002
好了,大功告成!
等等,怎么访问不了??
四、外网访问
刚才我们部署的服务器,只能在服务器本地访问,从我们电脑上面还无法访问,这里就需要修改一个地方: 打开{{config/index.js}},然后将这项
bindingHost: '127.0.0.1'
修改为:
bindingHost: '0.0.0.0'
重启node服务,外网就可以访问了。
五、发布私有包
使用cnpm 如果还没安装过cnpm就先安装,然后再再设置registry。
npm install cnpm -g
cnpm set registry http://172.19.100.33:7001
添加用户、发包 使用以下命令
cnpm login
添加一个用户,并设置密码和邮箱。
准备发布 由于我们的是私有仓库,并且开放了所有人的发布权限,所以在包的名字前面,我们需要加上前缀:@yingzi,然后用下面的命令将包推送到服务器。
cnpm publish
可通过web方式查看是否上传成功.
六、使用私有包
在服务器端,我们将{{registryHost}}设置为了我们的私有服务器,安装使用包就像普通的一样使用即可:
cnpm install @yingzi/packagename