LOADING

Follow me

JD Node服务部署【zoues.com】
三月 20, 2017|DockerPaaS

JD Node服务部署【zoues.com】

JD Node服务部署【zoues.com】

JD Node服务部署

前言:

Node平台让前端开发工程师从原始社会的刀耕火种,走向了现代自动化;它的兄弟npm组件库是集万千宠爱的大宝藏;不仅如此,它还能让前端开发工程师终于有机会探索服务器的神奇世界,可以在某些场景不依赖后端工程师就可以把活干完,这简直太让人欣喜了;

一峰大神说,未来html+css+javascript会统一各种终端,而开发工程师会以“端”分,对此我深信不疑,万物都会从遍地开花走向统一,比如秦统一文字及度量衡,我大朝推广普通话是一个意思,从复杂到简单是永恒不变的道理;而Node平台,我相信会在这个历史变革中发挥重要作用!

所以,在调研JD各个前端团队后发现,除移动端外,PC端还没有团队通过j-one成功部署过Node服务,因此在无任何参考的前提下,经过2个多月和和j-one、服务器部署、运维同事的努力下,终于将Node部署成功,虽然还不是很完美,但相信后续在j-one同事的努力下,前端开发工程师的天空会越来越蓝!

一、需要使用的系统


JD Node服务部署
京东代码共享平台:source.jd.com //代码托管

JD Node服务部署
JONE:j-one.jd.com //申请上线系统、应用、部署

JD Node服务部署
弹性计算平台:cap.jd.com //申请docker容器

JD Node服务部署
网络平台:np.jd.com //申请域名、解析配置等

二、需要使用的工具、平台等


JD Node服务部署
Git或Cmder

JD Node服务部署
Node、Nvm、Pm2

三、Source申请代码库


1、新增代码库,录入相关信息,点击创建;


JD Node服务部署

2、在成员管理页面,添加仓库成员,并赋予相关权限;


3、在代码评审页面,“我的评审组”里面添加评审组成员(此项不设置,master仓库不能提交);

四、JONE申请系统、创建应用


1、流程待办——系统申请


JD Node服务部署

2、流程待办——应用申请


1) 应用类型一定要选择application_woker,这种类型包含启动和停止服务;
2) 语言类型选择C++;
3) 打包类型选择MAKE;

JD Node服务部署

3、应用配置——编译


下方自定义命令必须配置,原因在于JONE每一次上线都采取新版本发布,而node依赖包只能在部署时去下载,但部署服务器有下载流量限制,可能会导致依赖包下载失败,因而引起启动失败;

为解决此问题,采取在编译时下载依赖包,通过代理网址访问npm的包地址;

JD Node服务部署

cd static-node //自己的代码目录 npm install --registry=http://XXXXXXXXXXXXXXXXXXXXXXXXXXXXX mkdir -p ${WORKSPACE}/$TESTPKG cp -r ./* ${WORKSPACE}/$TESTPKG mkdir -p ${WORKSPACE}/$ONLINEPKG cp -r ./* ${WORKSPACE}/$ONLINEPKG

4、应用配置——测试


当以后上线,构建完成,提交测试后,需要这里配置的同事审批方能上线!

JD Node服务部署

5、应用配置——部署


1)首先在“分组”tab下新建分组,此分组在新建实例时、以及申请容器时需要;

2)在“主机”tab下,点击“同步cap已有主机”,前提是你在cap.jd.com上已经申请成功了容器(见下方五);

3)在“实例”tab下点击新增实例,选择分组名和主机,保存即可;

自此j-one总算搞定了,因为是第一次吃螃蟹,又用了PM2,里面的沟通成本不言而喻;

五、cap申请容器


这一步其实是在j-one创建应用步骤中同步进行,为了方便说明,在此另起篇幅;

1、容器申请:申请管理——接入申请——容器申请


JD Node服务部署

1)应用:输入在j-one上创建的应用名;

2)分组:输入在j-one上创建的分组名;

3)镜像:这里选择“成都jshop-node镜像”,此镜像包含了:node+npm+webpack+gulp+pm2,如果选项里没有,请联系管理容器的同事;——这里作为吃螃蟹的我们,想起来一把鼻涕一把泪;

保存后,等待审批,通过后即可在j-one里面同步主机;

六、np上申请域名及解析配置


走完了上面步骤,说明我们的git仓库创建成功,主机也申请好,部署系统上也配置好,这时就可以将本地开发的代码发布上线了;那么最后一步,申请个域名提供给对外访问吧;

JD Node服务部署

这里按照步骤下一步,下一步,待域名申请成功后,代码部署上线后,就可以解析配置了,在这之中遇到任何问题,都可以点击页面右上方“DNS自助系统运营支持”,有专人解答,这个做得真不错!

七、一些注意点


1、application_worker应用类型


每一次部署后,需要先停止服务,再启动服务;所以在项目根目录需要bin文件夹,里面包含start.sh和stop.sh文件;

stop.sh代码示例

cd /export/Packages/node-sale/latest/ pm2 stop www pm2 delete back  exit 0

start.sh代码示例

ps -ef |grep PM2 |grep -v grep |awk '{print $2}' |xargs -i kill {} cd /export/Packages/node-sale/latest/ pm2 start ./bin/www -i 4 pm2 start back.js

2、关于启动几个进程问题 


docker容器如果是4核,那启动4个进程是最合适的,这样cpu会自动对应进程,一核对应一个进程,保证用户的请求到服务器都能得到最快的处理;如果启动了超过CPU核数的进程,则有一个排序的过程,在小的请求量下不明显;在大访问量下会慢一点;


OK,打完收工!

关于本文:
作 者: 京东成都研究院 万川 

邮 箱: cdwanchuan@jd.com

JD Node服务部署

no comments
Share

发表评论