版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
部署课程目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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 某塑料厂生产工艺优化细则
- 【横评】从合规底座到智能引擎:五款国产CRM国际化能力深度对比
- 2024标准永磁块磁偶极矩校准规范
- 计量泵检修规程
- 冷冻设备巡检记录表
- 热水循环泵检修规程
- 医用设备管理制度
- 湿式报警阀检修规程
- 综合布线试题及答案
- 回弹法检测混凝土强度报告
- 2024-2025学年北京市朝阳区北京中学七年级(下)期中数学试卷(含答案)
- 山东软科学课题申报书
- DB45-T 2751-2023 立木生物量模型及碳计量参数桉树
- 民用机场航站区标识英文译写规范(TCCAATB 0010-2021)
- DBJ04-T344-2025 海绵城市建设技术标准
- GB/T 18344-2025汽车维护、检测、诊断技术规范
- 基层党建考试题及答案
- T/CSBME 073-2023一次性使用电动腔镜切割吻合器及组件
- 2025届高三部分重点中学3月联合测评语文试卷及参考答案
- 支付令异议申请书(2篇)
- 国家药监局医疗器械技术审评检查大湾区分中心员额制人员招考聘用16人高频500题难、易错点模拟试题附带答案详解
评论
0/150
提交评论