惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Cyberwarzone
Cyberwarzone
F
Full Disclosure
V
Visual Studio Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
有赞技术团队
有赞技术团队
J
Java Code Geeks
博客园 - 【当耐特】
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - 叶小钗
L
LINUX DO - 最新话题
T
Threatpost
S
SegmentFault 最新的问题
Vercel News
Vercel News
云风的 BLOG
云风的 BLOG
C
Cyber Attacks, Cyber Crime and Cyber Security
Google DeepMind News
Google DeepMind News
Know Your Adversary
Know Your Adversary
S
Schneier on Security
V
Vulnerabilities – Threatpost
D
DataBreaches.Net
G
GRAHAM CLULEY
Latest news
Latest news
P
Privacy International News Feed
D
Darknet – Hacking Tools, Hacker News & Cyber Security
C
CXSECURITY Database RSS Feed - CXSecurity.com
Scott Helme
Scott Helme
L
Lohrmann on Cybersecurity
T
The Exploit Database - CXSecurity.com
Security Latest
Security Latest
G
Google Developers Blog
L
LangChain Blog
MyScale Blog
MyScale Blog
Project Zero
Project Zero
N
News and Events Feed by Topic
Hacker News - Newest:
Hacker News - Newest: "LLM"
大猫的无限游戏
大猫的无限游戏
P
Proofpoint News Feed
Blog — PlanetScale
Blog — PlanetScale
阮一峰的网络日志
阮一峰的网络日志
N
News | PayPal Newsroom
www.infosecurity-magazine.com
www.infosecurity-magazine.com
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
SecWiki News
SecWiki News
T
Tor Project blog
C
Check Point Blog
Google Online Security Blog
Google Online Security Blog
GbyAI
GbyAI
The Last Watchdog
The Last Watchdog
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
WordPress大学
WordPress大学

梦魇小栈

《羊了个羊》程序员过关攻略 WebRTC 入门指南 将你的博客升级为 PWA 渐进式Web离线应用 什么? 微信没有年度账单? 前端 nodejs 撸起来~ [接口实现] Hexo 博客美化代码块 (译)NPM vs Yarn 备忘手册 用 MySQL 导入 SQL 文件 解决 ubuntu 服务器中文乱码 面试分享:2018阿里巴巴前端面试总结(题目+答案) crontab 踩坑之绝对路径 SED 命令简明教程 在Hexo博客 NexT主题中部署Wildfire评论系统 使用 JavaScript 实现简单的拖拽 Merry Christmas JAVASCRIPT生成图形验证码 笔记:NPM版本号自增,自动化发布NPM包 不可不知的Mac OS X专用命令行工具(持续更新中) 继多说、网易关停之后该何去何从(网易云跟帖宣布2017年8月1日停止服务) 重新介绍 JavaScript(JS全面系列教程)
记一下 pm2 常用配置及命令
Ihoey 心,若没有栖息的地方,到哪里都是流浪...... · 2018-05-13 · via 梦魇小栈

发表于 | 更新于 | 分类于 Node | 评论数: | 阅读次数:

PM2node 进程管理工具,可以利用它来简化很多 node 应用管理的繁琐任务,如性能监控、自动重启、负载均衡等,而且使用非常简单。本文就 PM2 进行入门性的介绍,基本涵盖了 PM2 的常用的功能和配置。

安装

常用命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
pm2 start [server.js]
# 启动服务
pm2 list
# 查看当前所跑服务的详情
pm2 show [name]
# 查看更加详细的信息这个命令可查看pm2配置 包括日志文件存放的位置等
pm2 stop [id/name]
# 关闭某个服务
pm2 delete [id/name]
# 删除某个服务
pm2 stop all
# 关闭所有服务
pm2 logs
# 查看实时日志
pm2 restart [name]
# 重新启动服务

启动

参数说明:

  • --watch:监听应用目录的变化,一旦发生变化,自动重启。如果要精确监听、不见听的目录,最好通过配置文件。
  • -i --instances:启用多少个实例,可用于负载均衡。如果 -i 0 或者 -i max,则根据当前机器核数确定实例数目。
  • --ignore-watch:排除监听的目录/文件,可以是特定的文件名,也可以是正则。比如 --ignore-watch="test node_modules "some scripts""
  • -n --name:应用的名称。查看应用信息的时候可以用到。
  • -o --output <path>:标准输出日志文件的路径。
  • -e --error <path>:错误输出日志文件的路径。

监听

1
2
pm2 start ./bin/www --watch
#注意,这里用了--watch参数,意味着当你的应用代码发生变化时,pm2会帮你自动重启服务

配置及部署

部署的配置文件示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
{
// 数组中放的是需要发布的项目一些变量的定义
"apps": [{
"name": "xxx", //项目名称
"script": "server.js", //用来启动的脚本
// "instances":2,
// 启动项目所需要的环境变量
"env": {
"COMMON_VARIABLE": "true", //设置为true 可以在启动的时传入外部的变量进去
},
"env_production": {
"NODE_ENV": "production"
}
}],
// 部署
"deploy": {
"production": {
"user": "root",
"host": "0.0.0.0", //可以是数组 部署到多台主机
"ref": "origin/master", //选择拿哪个个分支的代码
"repo": "git@github.com:ihoey/hitalk.git", //仓库地址
"path": "/root/www/hitalk/production", //要发布到服务器上哪个目录下面
"ssh_options": "StrictHostKeyChecking=no", //避免key验证导致代码更新到远程仓库失败
"post-deploy": "source ~/.nvm/nvm.sh && pm2 startOrRestart ecosystem.json --env production", //发布之后执行的动作 执行开启或更新pm2运行的服务
"pre-deploy-local": "echo 'Deploy Done!'", //本地发布之前的动作
"env": { //指定部署到远程的仓库的环境 是production生产环境
"NODE_ENV": "production"
}
}
}
}

初始化配置

第一次部署

1
pm2 deploy ecosystem.json production setup

部署

1
pm2 deploy ecosystem.json production

好了,先记录这么多~

满分是10分的话,这篇文章你给几分,您的支持将鼓励我继续创作!