版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年高考考前预测卷-化学·理综拆分(课标全国卷)(考试版)
- 沼气生产工岗后知识考核试卷含答案
- 信息通信营业员岗前评优竞赛考核试卷含答案
- 招聘师班组评比知识考核试卷含答案
- 蛋糕装饰师岗前工作合规化考核试卷含答案
- 缝纫工安全文化能力考核试卷含答案
- 绢人工岗前合规化考核试卷含答案
- 2026年卫生陶瓷技术创新与产业升级路径
- 某电力厂发电工艺准则
- 某纸业厂节能减排措施办法
- 2026年及未来5年市场数据中国纸质文具行业市场发展现状及未来发展趋势预测报告
- 2025年四川省省级机关公开遴选考试真题(附答案)
- 2026年统编版二年级道德与法治下册每课教学设计
- 21《杨氏之子》第一课时公开课一等奖创新教学设计
- 2026河南省烟草专卖局(公司)高校毕业生招聘190人备考题库及一套完整答案详解
- 企业管理 华为会议接待全流程手册SOP
- 考研清华大学431金融学综合真题回忆版
- YY 0068.1-2008医用内窥镜硬性内窥镜第1部分:光学性能及测试方法
- GB/T 17037.4-2003塑料热塑性塑料材料注塑试样的制备第4部分:模塑收缩率的测定
- GB 5009.266-2016食品安全国家标准食品中甲醇的测定
- GA/T 850-2021城市道路路内停车位设置规范
评论
0/150
提交评论