当前位置: 首页 > 后端技术 > Node.js

Koa从零构建到Api实现——项目部署

时间:2023-04-03 14:38:21 Node.js

PM2是常用的node进程管理工具,可以提供node.js应用管理,如自动重载、性能监控、负载均衡等。类似的工具有Supervisor,永远等PM2安装使用PM2需要npm全局安装。npminstall-gpm2启动pm2项目直接启动项目pm2startapp.js启动Node.js应用。成功后会看到打印信息:[PM2]SpawningPM2daemonwithpm2_home=C:\Users\23101\。pm2[PM2]PM2成功守护进程[PM2]在fork_mode中启动C:\xxx\lesson29\server.js(1个实例)[PM2]完成。┌──────────┬──────┬────────┬──────────┬────┬──────┬────────────────────────────────┐┐│名称│id│模式│状态│?│cpu│内存│├──────────┼──────┼────────┼──────────┼────┼──────┼──────────────┤│app│0│fork│online│0│0%│32.0MB│└────────┴──────┴────────────────────────┴────┴────────┴──────────────┘使用`pm2show`获取应用程序的更多详细信息应用程序的名称在表中显示为app,id是0,应用名称和id都可以作为应用的标识。通过配置文件管理应用PM2也支持通过配置文件管理应用。这种方式可以提供更丰富的配置。支持的配置格式有Javascript、JSON和YAML。有关详细信息,请参阅文档。文件夹结构PM2启动后,它会自动创建这些文件夹:$HOME/.pm2将包含所有PM2相关文件$HOME/.pm2/logs将包含所有应用程序日志$HOME/.pm2/pids将包含所有应用程序pids$HOME/.pm2/pm2.logPM2日志$HOME/.pm2/pm2.pidPM2pid$HOME/.pm2/rpc.sock远程命令套接字文件$HOME/.pm2/pub.sock发布事件的可用套接字文件$HOME/.pm2/conf.jsPM2在Windows下配置,$HOME环境变量可以是$HOMEDRIVE+$HOMEPATH查看应用列表使用pm2list查看应用列表┌────────────┬───────┬──────────┬────────┬────────┬────────────────────────────────────────────────────────────────────────────────┐│应用名称│id│版本│模式│pid│状态│重启│运行时间│cpu│内存│用户│观看│├──────────┼──────┼──────────────────┼──────────────────────────────────────┼────────┼────────────┼────────┼──────────────┤│服务器│0│1.0.0│分叉│24776│在线│9│19m│0%│35.4MB│23101│禁用└──────────┴──────┴────────────┴────────┴──────────┴──────────┴────────────┴────────────┴─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┴────────┴────────────┘查看应用详情在命令行中输入pm2show0,弹出信息如下:DescribingprocessID为0-名称服务器┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐│状态│在线││名称│服务器││版本│1.0.0││重启│0││uptime│3m││脚本路径│C:\xxx\lesson29\server.js││脚本参数│N/A││错误日志路径│C:\Users\23101\.pm2\logs\server-error.log││输出日志路径│C:\Users\23101\.pm2\logs\server-out.log││pid路径│C:\Users\23101\.pm2\pids\server-0.pid││解释器│节点││解释器参数│N/A││脚本ID│0││execcwd│C:\xxx\lesson29││执行模式│fork_mode││node.js版本│11.9.0││节点环境│N/A││观察和重新加载│?││不稳定重启│0││创建于│2019-04-09T14:07:23.918Z│└────────────────────┴────────────────────────────────────────────┘版本控制元数据┌────────────────────┬────────────────────────────────────────────┐│版本控制│git││远程url│https://github.com/chencl1986/Blog.git││仓库根目录│C:\xxx\Blog│上次更新│2019-04-09T14:07:24.928Z│修订版│08f1efdfeb48bcc87f96b563d4d013a22e42ed9f│分支│评论││大师│└──────────────────┴──────────────────────────────────────────┘可用操作┌────────────────────────┐│km:heapdump││km:cpu:profiling:start││km:cpu:profiling:stop││km:heap:sampling:start││km:heap:sampling:stop│└────────────────────────────┘Triggervia:pm2triggerserverCodemetricsvalue┌──────────────────────────┬──────────┐│堆大小│13.70││堆使用│59.91││已用堆大小│8.21││活动请求│0││活动句柄│4││事件循环延迟│2.30│循环延迟│5事件循环延迟│5│7.15││HTTP平均延迟│10││HTTPP95延迟│10038││HTTP│0│└────────────────────────┴────────┘添加自己的代码指标:http://bit.ly/code-metrics使用`pm2logsserver[--lines1000]`显示日志使用`pm2env0`显示环境变量使用`PM2.5monit`监控CPU和内存使用情况server监控CPU内存使用pm2monit方式监控CPU和内存使用情况,同时在GlobalLogs窗口中也会打印应用报错信息,以监控代码变化使用如下命令监控代码保存,并更新应用程序。pm2startserver.js--watchPM2不仅会监控server.js文件,还会监控它引用的所有模块。只要保存任何模块代码,例如在键盘上按下ctrl+s,或者创建一个新文件,PM2就会重新启动。如果需要忽略某些文件,可以在配置文件中设置,如下:{"watch":["server","client"],"ignore_watch":["node_modules","client/img"],"watch_options":{"followSymlinks":false}}watch可以是布尔值、路径数组或表示路径的字符串。默认为假。ignore_watch可以是路径数组或字符串,chokidar会将其解释为glob或正则表达式。watch_options是覆盖chokidar的选项对象。有关定义,请参阅chokidar文档。环境管理在项目开发过程中,通常需要进行环境管理。PM2可以使用配置文件和命令行参数来设置环境。添加配置文件首先,使用pm2init命令创建一个ecosystem.config.js文件,该文件已经有一个默认配置。module.exports={apps:[{name:'API',script:'app.js',//选项参考:https://pm2.io/doc/en/runtime/reference/ecosystem-file/args:'一二',实例:1,autorestart:true,watch:false,max_memory_restart:'1G',env:{NODE_ENV:'development'},env_production:{NODE_ENV:'production'}}],部署:{生产:{user:'node',host:'212.83.163.1',ref:'origin/master',repo:'git@github.com:repo.git',path:'/var/www/production','post-deploy':'npminstall&&pm2reloadecosystem.config.js--envproduction'}}};修改配置,对环境管理很有用:{env:{NODE_ENV:'development'},env_production:{NODE_ENV:'production'}}为了配合我们的项目,可以修改配置如下:{env:{NODE_ENV:'dev'},env_development:{NODE_ENV:'dev'},env_production:{NODE_ENV:'prod'}}pm2startecosystem.config.js--watch--envpm2startecosystem.config.js--watch--envdevelopmentpm2startecosystem.config.js--watch--envproduction启动开发环境在服务端代码中,可以通过process.env.NODE_ENV获取设置值例如我们使用pm2startecosystem.config.js--watch--envdevelopment命令启动项目,可以打印出process.env.NODE_ENV的值`dev:constprocess=require('process')console.log(process.env.NODE_ENV)//devmode=process.env.NODE_ENV//开发