前两天刚写完如何基于 CNPM 搭建一个私有服务,然后搭建到了线上正式服务器上,结果今天就栽坑里了。具体坑如下。
一、服务器磁盘空间被爆满
笔者搭建了两私有服务,一套在测试机器,一套在线上机器,然而自己比较犯傻的一步就是,在测试机器上的 cnpm 配置与线上机器的 cnpm 配置不太一样~,然而问题就出现在了这不太一样的配置上。
- 罪魁祸首:
syncModel
我们看一下 cnpm 中 config 配置文件对此属性的简介:
我们看到该属性值一共有三种选择。
1、none
:不同步任何模块,代理所有公共模块从sourceNpmRegistry
获取。
2、exist
:只会同步已存在的模块(理解能力差,懵逼中~)
3、all
:同步所有的模块
简单的从这三个属性值的翻译上来说,似乎除了最后一个all
的属性值比较易懂,其它的并不能理解的太明白(一个理科生,确实对这种语言文学理解能力差一点 /(ㄒoㄒ)/~~)。
我在线上机器上配置的该属性值为exist
,然后结果就导致线上服务器磁盘爆满,影响到了服务器上的其他服务~
针对此属性值我们来看一下他实现的方式,path:sync/sync_exist.js
。
ok, 从这几行代码里面我们清楚地看到,使用exist
的属性,第一次会从官方的注册表同步所有的包!也就是说,当你在服务器上搭好私有服务之后,他会慢慢的同步官方注册表所有的包到你私有服务器的注册表中,显然,这就会增加你服务器上的硬盘存储,这就是最终会导致服务器硬盘爆满,所以我们这一个属性默认就好了。默认为none
(不会同步官方的注册表中的包,私有服务器上的包只有自己上传的)。
二、可以发包,但是安装不了
这个坑还不算是一个大坑,起码这个问题在测试服务器上就已经发现了
前两天开开森森的搭建好私有服务之后,就告诉同事了,然后让同事进行测试一下。然后发包 -> 装包… 诶?发现安装不上去,一开始还在想,我电脑没问题呀,然后回到自己电脑上再次进行安装同事发布的那个包,安装失败?,真尴尬~
找一下原因所在吧,发现安装的是有,域名是我这台服务器上的域名。然后配置文件中默认是的:registryHost: r.cnpmjs.org
怪不得发包的时候能够发布,但是安装的时候安装不了,这个是可配置的属性,将这个属性值改为你的服务器 IP 地址就可以了,记得要加 registry 的端口号(默认为 7001)
三、简单的将页面改装成自己想要的页面样子
不得不说,搭建好的本身页面都是英文的,还有一张大图片看着都不舒服,就是想把它给干掉
直接修改 docs/web/readme.md
文件。看里面有什么不想要的,直接删,想改成中文,直接改。改成自己想要的页面简介就 ok 了。
Ending,thx…