



版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、部署_nginx_pm2_docker课程目标Nginx静态location 动态数据请求proxy 负载均衡解cluster原掌握pm2部署NodeJS服务参考文档使用pm2+nginx部署koa2(https)课程内容cluster模块主要解决问题故障恢复多核用多进程共享端口文件上传服务scp (最原始)scp docker-compose.yml root3:/root/source/ #文件#文件夹scp -r mini-01 root3:/root/source/git (实际工作中) deploy插件 (debug)PM2的应用内建负载均
2、衡(使用Node cluster 集群模块、子进程,可以参考开课吧web全栈架构师的深入浅出node.js一书第九章)线程守护,keep alive0秒停机重载,维护升级的时候需要停机.现在 Linux (stable) & MacOSx (stable) & Windows (stable).多平台支持停止稳定的进程(避免无限循环)台检测 提供 HTTP API配置npm install -g pm2pm2 start app.js -watch -i 2/ watch文件变化/ -i 启动多少个实pm2pm2stop allliststart app.js -i max # 根据CPU核数
3、,开启对应数目的进程pm2配置process.ymlapps:- script : app.js instances: 2 watch : trueenv:NODE_ENV: productionKeymetricspm2 link 8hxvp4bfrftvwxn uis7ndy58fvuf7lTARO-SAMPLEpm2设置为开机启动pm2 startup开课吧web全栈架构师Nginx 反向安装+ 前端打包Distyuminstall nginxaptaptupdateinstall nginx添加静态由# /etc/nginx/sites-enable/taroserver listen
4、 80;server_name ; location / root /root/source/taro-node/dist; index index.html index.htm;# 验证Nginx配置nginx -t# 重新启动Nginx service restart nginxnginx -s reload# /etc/nginx/sites-enable# taroserver listen 80;server_name ; location / root /root/source/taro-node/dist; index index.html index.htm;locationr
5、ootlocation .(gif|jpg|png)$ /root/source/taro-node/server/static;/api proxy_pass proxy_redirectproxy_set_header;off;Host$host;开课吧web全栈架构师# 查看配置文件位置nginx -t# nginx: the configuration file /etc/nginx/nginx.confsyntax is oksuccessful# nginx: configuration file/etc/nginx/nginx.conf#重启service nginx resta
6、rtDocker概念操作系统层面的虚拟化技术的进程独立于宿主和其它的GO语言开发的进程 - 容特点高效的用系统快速的启动时间一致的运环境持续交付和部署轻松的迁移对比传统虚拟机总结三个核心概念镜像容仓库Docker基本使用开课吧web全栈架构师特性容虚拟机启动秒级分钟级硬盘使用一般为 MB一般为 GB性能接近原生弱于系统支持单机支持上千个容一般几十个proxy_set_headerX-Real-IP$remote_addr; proxy_set_headerX-Forwarded-For$proxy_add_x_forwarded_for;构建一个Nginx服务1. 拉取官方镜像# 拉取官方镜像
7、docker pull nginx# 查看docker images nginx# 启动镜像mkdir wwwecho hello docker! www/index.html# 启动# www目录面放一个index.htmldocker run -p 80:80 -v $PWD/www:/usr/share/nginx/html -d nginx# 查看进程docker psdocker ps -a / 查看全部# 伪终端 ff6容的uuid# -t 选项让Docker分配一个伪终端(pseudo-tty)并绑定到容的标准输入上,# -i 则让容的标准输入保持打开docker exec -i
8、t ff6 /bin/bash# 停止docker stop ff6# 删除镜像docker rm ff6Dockerle定制镜像#DockerfileFROM nginx:latestRUN echo Hello, Kaikeba! /usr/share/nginx/html/index.html# 定制镜像docker build -t mynginx .# 运# -d 守护态运docker run -p 80:80 -d mynginx开课吧web全栈架构师定制一个程序NodeJS镜像npm init -ynpm i koa -s/ package.jsonname: myappp,ve
9、rsion: 1.0.0,main: app.js, scripts: test: echo Error:,keywords: ,author: ,license: ISC, description: myappp, dependencies: koa: 2.7.0notestspecified&exit1/ app.js const Koa = const app =app.use(ctxrequire(koa) new Koa()= Math.random() 0.8 ? abc()ctx.body = Hello Docker: )app.listen(3000, () = consol
10、e.log(app started at)开课吧web全栈架构师#Dockerfile#制定node镜像的版本FROM node:10-alpine#移动当前目录下面的文件到app目录下ADD . /app/#进入到app目录下面,类似cd WORKDIR /app#安装依赖RUN npm install #对外的端口EXPOSE 3000#程序启动CMD node, app.js# 定制镜像docker build -t mynode .# 运docker run -p 3000:3000 -d mynodePm2 - 用多核# .dockerignorenode_modules/proce
11、ss.ymlapps: name: app-name,script: app.js, instances: 2, env: production: true开课吧web全栈架构师# DockerfileFROM keymetrics/pm2:latest-alpine WORKDIR /usr/src/appADD . /usr/src/appRUN npm config set registry npm iEXPOSE 3000#pm2在docker中使用命令为pm2-dockerCMD pm2-runtime, start, process.yml 定制镜像docker build -
12、t mypm2 .# 运docker run -p 3000:3000 -d mypm2Docker-Compose#docker-compose.yml app-pm2:container_name: app-pm2 #构建容build: .# volumes:#- .:/usr/src/appports:- 3000:3000/ 强制重新构建并启# -force-recreate 强制重建容# -build 强制编译docker-compose up -d -force-recreate-build#docker-compose.yml version: 3.1 services:ngin
13、x:image: nginx:kaikeba ports:- 80:80开课吧web全栈架构师# 运docker-compose up#运docker-compose up -d部署Mongo + MongoExpress#docker-compose.yml version: 3.1 services:mongo:image: mongo restart: always ports:- 27017:27017mongo-express:image: mongo-express restart: always ports:- 8081:8081代码中添加Mongoose调用/ mongoose
14、.jsconst mongoose = require(mongoose);/ 1.连接mongoose.connect(mongodb:/mongo:27017/test, const conn = mongoose.connection; useNewUrlParser: true );conn.on(error, () = console.error(连接数据库失败);/ app.jsconst mongoose = require(mongoose);mongoose.connect(mongodb:/mongo:27017/test, useNewUrlParser:true);co
15、nst Cat = mongoose.m Cat.deleteMany()const kitty = new Cat(Cat, name: String );name: Zildjian );console.log(meow);kitty.save().then()=app.use(async ctx =ctx.body = awaitCat.find()开课吧web全栈架构师WebHook实现CI持续集成启动NodeJSvar varvarhttp = require(http) createHandler = require(handler = createHandler(-webhook
16、-handler)path: /webhooks, secret: myHashSecret )设置的一致/ 上面的secret 保持和functionrun_cmd(cmd, args, callback) var varvarspawn = require(child_process).spawn; child = spawn(cmd, args);resp = ;child.stdout.on(data, function (buffer) resp += buffer.toString(););child.stdout.on(end, function () callback(resp
17、) );http.createServer(function (req, res) handler(req, res, function (err) res.statusCode = 404 res.end(no such location).listen(3000)handler.on(error, function (err) console.error(Error:, err.message)handler.on(*, function (event) console.log(Received *, event.payload.action);/run_cmd(sh, ./deploy-dev.sh, function(text)console.log(text) );)handler.on(push, function (event) console.log(Received a push event for %s to %s,, event.payload.ref);/ 分支开课吧web全栈架构师if(event.payload.ref = refs/heads/master) console.log(deploy m
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 技能培训压力容器设备基础知识
- 玛丽珍鞋战略市场规划报告
- 合成材料抗氧化剂战略市场规划报告
- 现代安全风险管理
- 八上15《等腰三角形》课件2
- 2024年足球裁判员直面挑战的有效应对策略试题及答案
- 环境适应农业植保员考试试题及答案
- 产品专利设计重点基础知识点
- 游泳救生员工作挑战与对策试题及答案
- 项目管理团队协作能力试题及答案
- 代持房屋合作协议书范本
- 供应链管理师技能竞赛理论考试题及答案
- (新版)糖尿病知识竞赛考试题库300题(含答案)
- 新工人进场三级教育表格
- 全过程工程咨询服务投标方案(技术方案)
- 2024年新人教版七年级上册历史教学课件 第10课 秦末农民大起义
- 写字楼保洁人员培训方案(技术方案)
- (附着式升降脚手架)设备设施风险分级管控清单
- 扶济复新获奖课件
- 外协救援服务协议
- 工业机器人的发展历史
评论
0/150
提交评论