版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
部署课程目n掌握pm2部署NodeJS参考文 课程内主要解决问多核利 多进程共享////consthttp=constserver=http.createServer((request,response){Math.random()>0.5?aa():'2' o')if(!module.parent){console.log('appstartedatport}elsemodule.exports=}//constrequest=require('request');setInterval(()=>{request('',function(error,response,{console.log('body:',body);//PrinttheHTMLforthe},)//varcluster=varosrequire('os'获取CPU的数varnumCPUs=os.cpus().length;varprocess=require('process')varworkers=if(cluster.isMaster)//主进程分cluster.on('exit',(worker,code,signal)console.log('工作进程%d关闭(%s重启中...',cess.pid,signal||code);deleteworkers[cess.pid]worker=cluster.fork()workers[cess.pid]=workerconsole.log('numCPUs:',numCPUs)for(vari=0;i<numCPUs;i++){varworker=console.log('init...pid',cess.pid)workers[cess.pid]=worker;}}elsevarapp=require('./app');}当主进程被终止时,关闭所有工作process.on('SIGTERM',function{for(varpidinworkers){}scp(最原始pose.ymlroot@3:/root/source/#文scp-rmini-01 #文件git(实际工作中)deploy(debug)内建负载均衡(使用Nodecluster集群模块、子进程,可以参考的《深入浅出node.js》一书线程守护,keep0秒停机重载,升级的时候不需要停机Linux(stable&MacOSx(stable&Windows(stable).多平台支持 提供HTTPAPI配npminstallnpminstall-gpm2startapp.js--watch-i// 文件变i启动多少个实pm2stopallpm2listpm2startapp.js-imax#根据机器CPU核数,开启对应数目的配置-script:app.jsinstances:2watch:true NODE_ENV:pm2linkpm2link8hxvp4bfrftvwxnuis7ndy58fvuf7lTARO-pm2设置为开机启pm2pm2Nginx反向代理+前端打包安yumyuminstallaptaptinstall添加静态路#/etc/nginx/sites-server#/etc/nginx/sites-serverlistenlocation/{;root/root/source/taro-indexindex.html}}#验证Nginx配nginx-重新启动servicenginxnginx-s#/etc/nginx/sites-enable#taroserverserverlistenlocation/{;root/root/source/taro-node/dist;indexindex.htmlindex.htm;}location~\.(gif|jpg|png)$root/root/source/taro-}location/api;X-Real-X-Forwarded-$}}X-Real-IP用于记录代理信息的,每经过一级代理(匿名代理除外),代理服务器都会把这次请求的来nginx-#nginx:theconfigurationfile/etc/nginx/nginx.confsyntaxisok#nginx:configurationfile/etc/nginx/nginx.conftestis#servicenginxnginx-s操作系统层面的虚拟化的进程独立于宿主和其它的的进程-容GO语言开特对比传统虚拟机特容虚拟启秒分钟硬盘使一般为一般为性接近原弱系统支持单机支持上千个容一般几十三个概仓构建一个Nginx服务1.拉取镜##拉 镜dockerpull#查dockerimages#启动镜mkdirecho odocker!!'>>#启# 里面放一个dockerrun-p80:80-v$PWD/www:/usr/share/nginx/html-d#查看进dockerdockerps-a查看全伪终端ff6容器的#-t选项让Docker分配一个伪终端(pseudo-tty)并绑定到容器的标准输入上i则让容器的标准输入保持打dockerexec-itff6#停dockerstopdockerrmdockerrmFROMFROMRUNecho o,Kaikeba!</h1>'>#定制镜dockerbuild-tmynginx#运d守护态运dockerrun-p80:80-d定制一个程序NodeJSnpminit-npminit-ynpmikoa-s//{"name":"version":"main":"app.js","scripts":{"test":"echo\"Error:notestspecified\"&&exit ":"author":"license":"ISC","description":"myappp","dependencies":{"koa":}}////constKoa=require('koa')constapp=newKoa()app.use(ctx=>{Math.random()>0.8?abc():''ctx.body=' oDocker'app.listen(3000,()=>{console.log('appstartedatFROMnode:10-alpine#移动当 下面的文件到 ADD. WORKDIR/app#RUNnpminstallEXPOSE3000#CMD["node",##定制镜dockerbuild-tmynode#运dockerrun-p3000:3000-dPm2-利用多核资##.dockerignore//process.yml-script:app.jsinstances:2watch:true NODE_ENV:##FROMkeymetrics/pm2:latest-alpineWORKDIR/usr/src/appADD.RUNnpmconfigsetregistrynpmiEXPOSE#pm2在docker中使用命令为pm2-CMD["pm2-runtime","start",&#定制镜dockerbuild-tmypm2#运dockerrun-p3000:3000-dapp-app-container_name:app-pm2build:.#volumes: -.:/usr/src/app-强制重新构建并 -recreate强制重建容build强制编poseup-d- -recreate--version:'3.1'image:nginx:kaikeba-运pose运pose#poseup-version:'3.1'image:mongorestart:always-mongo-image:mongo-expressrestart:always-////constmongoose=1.连mongoose.connect("mongodb://mongo:27017/test",{useNewUrlParser:true});constconn=mongoose.connection;conn.on("error"console.error("连接数据库失败//constmongoose=require('mongoose');mongoose.connect('mongodb://mongo:27017/test',{useNewUrlParser:true});constCat=mongoose.model('Cat',{name:String});constkitty=newCat({name:'Zildjian'});kitty.save().then(()=>console.log('meow'));app.use(asyncctx=>{ctx.body=awaitCat.find()启动varhttp=varcreateHandler=require('-webhook-varhandler=createHandler({path:'/webhooks',secret:'myHashSecret'//上面的secret保持和设置的一functionrun_cmd(cmd,args,callback)varspawn=require('child_process').spawn;varchild=spawn(cmd,args);varresp=child.stdout.on('data',function(buffer){resp+=buffer.toString();});child.stdout.on('end',function(){callback(resp)});}http.createServer(function(req,{handler(req,res,function(err){res.statusCode=404res.end('nosuchlocation')handler.on('error',function{console.error('Error:',handler.on('*',function{console.log('Received*', run_cmd('sh',['./deploy-dev.sh'],function(text){handler.on('push',function{console.log('R
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度医疗设备采购与维护合同with技术支持与售后服务
- 2024年度物联网智能硬件设备研发与生产合同3篇
- 2024年度承包合同(建筑工程版)
- 2024年度物流仓储服务与货物运输合同2篇
- 2024年度房产买卖合同标的及交易程序
- 2023年陶瓷资金需求报告
- 2024中国电信贵州公司校园招聘易考易错模拟试题(共500题)试卷后附参考答案
- 2024中国人民财产保险股份限公司永嘉支公司招聘易考易错模拟试题(共500题)试卷后附参考答案
- 2024中储粮油脂镇江基地招聘41人易考易错模拟试题(共500题)试卷后附参考答案
- 2024上海红浦劳务派遣限公司招聘10名易考易错模拟试题(共500题)试卷后附参考答案
- 司机考试试题(含答案)
- 黑龙江省齐齐哈尔市3校联考2023-2024学年八年级上学期期末语文试题(含答案解析)
- 老年专科护理考试试题
- 2024年浙江杭州钱塘新区城市发展集团限公司招聘30人公开引进高层次人才和急需紧缺人才笔试参考题库(共500题)答案详解版
- 2024中国电子科技集团限公司在招企业校招+社招公开引进高层次人才和急需紧缺人才笔试参考题库(共500题)答案详解版
- 股骨粗隆间骨折
- 殡仪馆鲜花采购投标方案
- 水利水电工程建设用地设计标准(征求意见稿)
- 智能桥梁结构安全监测系统解决方案课件
- 道教宫观用地租赁合同
- 办公楼物业服务管理的培训
评论
0/150
提交评论