开课吧web全栈架构师第16期2020完结10部署ker自动化nginx cluster pm_第1页
开课吧web全栈架构师第16期2020完结10部署ker自动化nginx cluster pm_第2页
开课吧web全栈架构师第16期2020完结10部署ker自动化nginx cluster pm_第3页
开课吧web全栈架构师第16期2020完结10部署ker自动化nginx cluster pm_第4页
开课吧web全栈架构师第16期2020完结10部署ker自动化nginx cluster pm_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

部署课程目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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论