- 打卡等级:暂无等级
- 打卡总天数:275
- 打卡月天数:13
- 打卡总奖励:231
- 最近打卡:2026-03-16 07:39:39
|
方法一:卸载宝塔安装的PM2管理器,尝试重新安装5.2版本、多试几次,或者重启服务器或宝塔再次进行安装!方法二:自己手动安装PM2 需要先安装npm' r8 ^' U8 F( y" p" E8 v
: J- R- f7 {. C* ^3 S( U/ o
: Z/ x* [0 S9 e+ B
# Q; m1 g- ]1 h1 ?yum -y install npm, t0 B q- h1 F; q% ~
# `* t, \: a$ d. k% }3 w; |2 M9 r- C
% K( g6 X! w6 Q/ Z
安装pm2
# k9 l0 c9 N' y$ P+ W1 z+ j, {. |4 n: g0 ?* l+ ]
8 j7 W, C' m0 ]2 h. |) ]& T
- R7 P% ?0 E( l# _" g! I; Knpm install pm2 -g& A5 p% L: V7 e5 e( l
# }4 F+ N% Z1 i! s9 `/ z9 `
3 x4 X# P; N, m4 X! K% b2 [( R7 B& J& W: {; v3 }( _ ?7 ]
添加配置文件
( n' O- a9 w, F
8 ~5 t# n- x: w+ i
/ v6 g( G- N: e: [
/ S) E; a; D+ a& I _/ x6 hvim /etc/profile' ?4 f3 l- K1 M/ w0 n) y/ b1 L
- [+ s# p5 k4 FPATH=$PATH:/usr/lib/node_modules/pm2/bin
9 C# x& D3 i8 k% K' r% K, Q, O
: Z6 B8 q$ s% N, N8 Lsource /etc/profile& ~+ }1 B: _" c1 Q
; K- c9 {# T3 j& \$ \" V+ |
2 A1 Q8 v4 T! Q2 |7 |
4 t7 _$ p' A% ~8 Z9 `( ]; y
测试
7 d: l3 G8 c& \& Q
# n3 t$ {. ^( r6 ?* }( e/ Y$ C4 Z" ?' i
2 b4 p1 C4 [6 ?- \( j" p% i
pm2 -v! ^) T7 l6 [& L. P; j( M8 l
. R2 ^! Z G$ @2 `! j4 `! B4 K* G8 X
9 ~% v) j4 R/ y. f
+ ~) E% O5 g! X+ g% p查看PM2安装路径
4 a; D3 R4 C% Q2 g
5 O0 b: Q# b; Q# y: g9 K$ e, T" b- \; N6 j$ N: ^. } w
% [# P" o' `# l( O' M; Zfind / -name "pm2"
2 [) I2 U m% F" j( g! \) L, g3 T \& A9 A8 x# q4 n. k5 @0 ]
" g8 ~9 L2 G1 ]
8 O. V' ?3 u( v+ V2 N根据自己的安装路径修改配置文件[color=var(--focus-color)][url=] [/url] 可能遇到的问题[color=var(--focus-color)][url=] [/url] 问题原因是node和npm版本太低,我这里版本分别是3.10和6.17 [color=var(--focus-color)][url=] [/url] 解决办法–先卸载之前的npm! [% w& R5 N, k# K" U
6 g4 w3 @8 n; l C* k, A _
4 @. F9 M3 X) `7 z5 q
/ `" W! B7 D1 h2 o/ Onpm uninstall npm -g
7 s/ ^( i# w7 N) M, I3 d
& D. z9 s2 f, L$ k3 L5 w+ e6 v0 o
% e- a0 `! V% \6 I' \2 w$ c% l8 w0 s6 G% u( e6 V1 b6 D& u
安装依赖( B3 b+ { @. p& B) u
" N) S H$ _" l& c9 R4 h( o3 z3 q7 b
! |$ S! _& K1 o$ ]* N3 {% t- oyum -y install gcc gcc-c++
4 \6 a$ P( O: C4 N% i" N& ^' q. a1 a# ]5 S% C
& L7 \- f( B+ k8 ^0 B- \0 D+ l
7 F/ o, C: u' x! Z! ^0 m1 [下载高版本的node安装包
) A- p0 r2 r) h8 J9 g. }
+ P4 c4 L; g; \. P; u
, a3 p7 T, \! p6 ]/ u6 i* A4 ^$ \
6 u6 y5 j0 G' i% e* M/ l5 swget https://npm.taobao.org/mirrors/node/v10.14.1/node-v10.14.1-linux-x64.tar.gz
8 V, w5 @& y) {! O6 `1 \- w1 o) W# o+ O& k
0 o" l1 m M$ b
5 j9 U: z- e7 p& _" X解压到相应的目录
2 @5 I g m& `+ P( u% x
3 F1 i' c* q( X* J5 ? y8 k9 C" ^; q. |/ r6 {
' N! u, R) c1 U2 y1 _0 R
tar -xf node-v10.14.1-linux-x64.tar.gz
. U- M) v7 }3 [4 U6 q5 G; \" B: J
5 G h& G" ]7 r
, x F3 \9 l0 g& F7 a6 H8 v1 k8 N4 O. D7 k- ~9 J; @) H q
重命名: C* _& Q q# T
: f" @ V- t; q+ z
6 p- S H4 C) U9 m* H) V! X! Z" g
. b. L8 s3 Y0 n' K- M8 g& y+ zmv node-v10.14.1-linux-x64 node
* @# E+ }5 A1 @' a6 y2 n6 [0 Z3 Q
$ z% _/ g, j$ U5 ]- X5 a' _
& q% a1 A& N5 h/ g7 n8 ]9 S- I2 U+ }+ I& d) ?8 \, b3 B! c
添加环境变量(根据自己的路径添加)
8 q: C2 A# o7 C( |( `# J7 H7 b% O9 U
4 b- ~/ p/ i+ Q8 s* o$ X: U
. L) b/ j: i+ p3 }- s3 C G* q) x( B* A8 d
vim /etc/profile
/ A7 N2 S. w8 e8 p3 B2 c# J" N# @4 f( Q+ h8 j$ L9 E
export NODE_HOME=/myinstall/npm/node
( e; E, V Y3 N$ a( x4 ^
9 _+ X1 u/ ]6 t: A% M& }, o% q9 G+ Gexport PATH=$NODE_HOME/bin:$PATH1 K7 D R x" D
+ L1 ], k" U" a# p! |( {3 k" L
5 K X- h- k% T- \
c, S5 O {1 V6 a7 l, ^重新加载环境
- {6 a" D' r" h) F+ T0 F: ~# z, e, g& U) k- @, M5 U
! X2 T) H8 @: q% A2 S/ u( {$ i
5 s& m4 b8 r7 w: n! F3 Fsource /etc/profile
/ X) k. H3 h& i" E* |7 T
3 p& P! X& ]( P. W" b5 J5 w. i6 J% O, ^- L
5 s1 A3 C/ K0 g+ T E* n9 ]( |5 K; i查看相应版本[color=var(--focus-color)][url=] [/url] 安装pm2
: M- Q3 F, m( H, n
$ l3 C# p( k; s3 Z+ S' ~7 |. |6 j2 o% m) f7 Z7 E: J; o
: c# D4 C+ q E7 p, N5 i; H
npm install pm2 -g
9 F- P7 N1 O" _: M2 \ v! `8 v+ A1 i$ z% ^
' Z6 n' E/ L; G6 {. I. O/ E) U2 a0 G: Q& y" l) u8 d" K) X
检测
a$ q- z8 V5 g
& o/ k" ^% k6 N) M5 t1 O/ s8 h2 L- w& Q$ v7 h
+ Y9 o' N" O$ w$ m: A9 y% G' _pm2 list
% }) ? ~$ l P) i q" s. \, f$ R* B( b/ m* x, n5 F5 C! l- B8 L
* S. }5 L, ^, L- U) ]& N K4 j
2 _% b3 W* x' c[color=var(--focus-color)][url=] [/url] 常用命令
6 S' y& @, B; L: I$ h. a4 D" o) v0 R, ?* ~( m7 f% }
5 k) M& e1 ]. @- I/ g9 z! G. _) e: }8 z7 w2 h. D/ U. g1 p
$ pm2 start app.js # 启动app.js应用程序
1 e" ?8 G& W- W4 b1 |: d+ v9 e9 v `9 X! @2 l
. a0 h. }- ]& @' M
/ z6 b. d0 E! ~; W# G& }' h, B
4 n' v% r) U3 J3 Z5 t: S4 k7 X
$ W) _* \+ X- ? V7 U. q9 @, i
2 |5 k( ?- x6 B0 u9 i! P& a" l
( e; l) O6 V* w, y# X4 ?- \: {0 y8 f$ pm2 start app.js -i 4 # cluster mode 模式启动4个app.js的应用实例 # 4个应用程序会自动进行负载均衡4 \6 W. ~5 E1 \ A. ^( ~4 T' w
9 B. K% l! G- u$ }* j$ `
, d! p/ y P! O- W
0 m3 ]( J! U3 }5 g; J6 h8 D$ ~- N% G6 ]& Z/ K% V
5 h: X* g. m* {' r( P& h* V
% z7 k( G9 v) S4 O
' W4 ]. W v& F7 l |3 A! K$ pm2 start app.js --name="api" # 启动应用程序并命名为 "api"; }9 b8 X$ V8 T0 i# J& H
2 u/ D+ a4 y E! w6 R# t* U
) w3 a. f" P8 L( O, w" L! ~$ j: p2 u, |) \* J8 I0 S. _4 F
+ E, {2 [3 e9 R9 E
( I! p1 Q$ `5 ]# v8 m0 U' Y% ~
2 A# b9 e* u1 M6 X9 H4 K5 z6 _. g1 d; Z% ?% y2 {- O
$ pm2 start app.js --watch # 当文件变化时自动重启应用+ B0 [9 j4 b1 D Y% m4 U
& |* k% l5 Y) o0 [: ?8 _7 O; k! b: z7 w e" t! j' H
+ R8 z6 |3 F ~
% a' k6 A3 u/ i. u1 U' w% j
- H3 C0 v4 O, I/ W" A$ g3 J9 ]8 q' m% d7 K
* T& W" {1 K5 [5 E+ E1 r$ pm2 start script.sh # 启动 bash 脚本- U0 G6 b4 m; T- ^' s
) L2 |% u4 t r4 f$ ~& z5 X
. t/ u0 @" X) e& g5 U
0 G7 U# G0 E+ [# M8 g- l8 s. ?0 R
& K; A/ L9 C3 }: U# G
% [: ~1 Q3 P r0 y) e% g& p' v: [* T' h3 o9 w
7 f5 k3 b2 _1 {. U$ pm2 list # 列表 PM2 启动的所有的应用程序
! |: j* n4 D4 l# K( M6 ^# K" ?$ Y4 C& r7 {, a
" T4 c( K6 M. a, W/ b6 Q' ]6 q
! s2 S( D s+ w o7 {6 k6 o1 K; G
6 v1 l; m+ D7 U$ T, f/ e4 R) p
9 o( M) b6 X: i& }6 s2 V$ O/ h7 c/ i& Q; J
+ `1 Q* f! M. M6 p
$ pm2 monit # 显示每个应用程序的CPU和内存占用情况# I4 y$ |7 Q1 u+ E
( M6 l* Q. S* `1 d' w2 r9 e1 D
: r6 D1 @3 Q0 S. T! V; @* \
" Y& Y# w- M b. z9 I1 Y8 E# c! \; ^' H1 {1 K$ o; S
" l) H: a8 k) ^9 `6 F6 \ {: I/ ?5 E& R! C: L- z7 x& D) o
8 ]2 m6 {) K* [" w2 s$ pm2 show [app-name] # 显示应用程序的所有信息
1 Y5 t( a. S9 B7 y$ t' h& ^) R4 ]" h# g5 W+ Z# Z- g5 S0 c* P/ M
# |8 l/ s2 }3 d/ v0 P, t/ E
. V0 x5 u) v* x y" @1 y& }9 z5 F$ Q4 L9 @% L
' M* {% q. L, A/ |/ A, Q
* h7 D! G0 h, u1 h3 Q' u: w+ W8 @) t/ _; ~! f
$ pm2 logs # 显示所有的应用程序的日志$ F! ?6 g& k& d) a" i H5 |
+ I# Q- f9 a! S" Y8 v/ X2 |, `4 M5 ]: q/ L( L( D. N3 M2 [/ I2 A) h
' e6 W& D `; `' O ^$ B
4 \* q) o% m3 C; I
) B2 z7 D5 ]$ f" v( s9 b H9 M3 J8 t$ ]2 J/ Q3 B3 E/ Z( M
$ U6 g% L- F' w$ H# y2 F$ pm2 logs [app-name] # 显示指定应用程序的日志
' b. z8 H8 b6 @3 i3 s
" V7 P2 o9 k0 D6 i
- t! \" C. Z! Q& G( g' |8 k8 ]
) k7 z3 w1 T- t+ \; |
" ?' ]. M6 K0 L& _
U# B( h, W) x3 r! k9 k3 u. A
: b( U9 n, ?3 s. t0 X: K9 @6 H* D% e; V/ p, U3 T
$ pm2 flush0 d: Z. m6 G8 B$ X* _
0 D6 Z4 F* Y8 i' z1 j I
# ]) |$ v3 i# K
D. ]4 ]9 u! ^# L+ q- z# g
8 ?# P% P9 F7 Y6 U& A# A
. v& h, w2 v3 c- i) j* A6 }7 c4 O+ p* X: W% j) ~
7 m2 @" O) p- W4 P- R3 ^
$ pm2 stop all # 停止所有的应用程序
4 M2 _1 M0 X9 \0 ?
; ^! _- p; [) {* f7 O) y
) z) i* L: f) G" {" D$ u% F
( @$ n$ C2 g- L; o. e' v* D9 i; \/ q* s( I2 D4 y
" ~$ }2 s" w- G: ]2 j" g/ r
6 W/ ? h6 ]6 t# }* S) N
. n% B8 u& e2 k8 r- m* Y3 K; Q$ pm2 stop 0 # 停止 id 为 0 的指定应用程序
+ s! _8 S1 l9 K7 ~* l: ?6 P, T+ f. v# K* o+ Y5 G8 K
8 \' F* t' y2 K: g# J' S- s
( L% ~7 m7 |7 S0 T0 g* M( C2 K% |& J
' Q. v+ J# U2 L1 h: K- @; Z* y Y; a9 P- z2 G' N
& `3 N* {8 O# \
8 ?6 }* {( J/ _* |# _$ pm2 restart all # 重启所有应用2 T/ {; x8 a# g* {$ V2 o! C" b
* a* K) c3 |5 V. A, _8 h5 Z- Y; p; z1 t4 j ^; @8 C7 A0 o- |
" U2 i- l& ~% X; y7 z; x: b5 U; O) h, U* G
5 G" z' e2 D0 j) l) G4 x
! J% W8 G3 U5 w. ]# J& B* u- o
& @/ Z$ C8 ~6 h I g3 I$ pm2 reload all # 重启 cluster mode 下的所有应用4 y' y0 e5 |9 x8 ?9 `$ ?: F: g
0 l) v0 d6 P, b9 @6 h" K" J8 { p3 f+ g+ K$ K5 u
1 G) [% i/ A4 G4 s9 @
/ a' ]) Y5 F# I f o' e. L+ Z/ y, `
$ u9 S& y4 R3 ?& f, m
0 H# Q I0 S' t, K- ^3 K
P: A+ Q; M& L$ pm2 gracefulReload all # Graceful reload all apps in cluster mode
+ w2 d3 i, W0 F( x" [( n5 z8 \9 Z- _4 J# G3 x; o& O, d
; I3 ^: Q+ s8 O5 A0 y* a9 f
5 ^3 v4 _1 e: p) S% F
% x W+ \0 `: C1 N6 Z- B
7 }: ^* _* E3 U8 Z. Z
0 S; B# V3 s( R1 F
! {3 v* n* q% G9 e2 q9 c/ O$ pm2 delete all # 关闭并删除所有应用
- A. @( [# X3 P! C* d( C/ K0 `
Q/ `, {0 X' X% W; R. d- r( G+ {% ~
. c7 F A" g. ?9 r2 g1 ^
/ J9 c* c# _, V) Y [' n! ^
, S! f# l5 o+ g/ |- c4 }+ M6 x) S: Q* @2 n
9 y& A% a8 `, n- k9 @9 w8 ^0 F+ K/ c! |" E2 m" G' }2 c3 S3 u
$ pm2 delete 0 # 删除指定应用 id 0& ?+ b+ h2 c2 _0 D
b5 d+ o% H5 r9 M- s! X
! X7 g8 N8 f4 ^! D! l
1 I+ f8 v3 e' |% t, F4 M3 P; }& M, K a
' |/ `) M; d9 ?+ G/ F, q
4 n* i$ i/ z: m: b
7 f8 S2 h$ S; D7 g* e0 a$ pm2 scale api 10 # 把名字叫api的应用扩展到10个实例
3 x9 j: w' P! M; z( e, Y
7 C7 b" [2 C% y/ M y3 N) _ k7 G( S
& w7 K2 _9 g' ?# _" G1 ~! {4 i" E1 f! [
. x1 a* u5 ~6 [) j4 ?3 s
0 z0 `. p: ^3 Y! m2 z
) k3 f! a, y# c" `8 P$ pm2 reset [app-name] # 重置重启数量6 A- j- L% I0 l6 ^( M0 i5 b
4 U- H1 N. Z- p6 n+ `/ t5 p( x- F$ N: x2 J$ k
' d) e- |. ]# V* o
8 ~! x. v w/ h1 f. l: Z& Z. e
( j! u2 {4 \* R: a! x1 V5 k; [& f# j v
1 m2 f m! e+ Y5 J8 T9 t# b# F
$ pm2 startup # 创建开机自启动命令. S, T0 B* T/ z: D$ m- g
# O& _9 F8 X: {2 Z% w2 `# ^4 `' F9 j
; c, ]0 M4 Y! b" [; v
" L, @+ H. ~: t3 O, j8 `
" E) m" }) \" e8 N/ ?' X0 ], [0 S
" K( Q Y% c( |9 F8 W( f ?
% u9 r/ e1 A/ b5 D. \
2 B0 G9 X* P) C$ Q$ pm2 save # 保存当前应用列表
5 u" C: \% w3 ^8 \# l6 j3 D. g$ \0 }& N8 C- V" V
* S0 r# Q! ?2 [; @' t$ X" n- J4 |2 ? I
, J5 ]4 m7 _) ~1 \1 _# f
# m M U$ ?0 [% J! \' h. F
" {# ]# S/ J* ?/ Y4 Q! T4 a& w
. P+ |: M3 l. Q$ J$ m* r+ C& G! J% J c$ u# F" F" n5 p
$ pm2 resurrect # 重新加载保存的应用列表
0 F! B3 G. b* v! C, G' N& T5 e1 p: a/ h# A4 X2 Q6 ]
+ ]- D9 s& g% v; i
* a# d' c! I1 Q* v( u
7 a. \, R* k- Y# O( E8 J! B. c$ E! |, i
) s7 G+ X$ }& E6 c! h5 b+ b5 K
7 \. @6 _- S4 g! a9 Z0 _) ^7 m$ pm2 update # Save processes, kill PM2 and restore processes
6 t" J( n. o) O/ I0 | B# c C {7 M
K8 t1 l& t/ b% Z
/ w/ }5 \+ h/ \7 E3 F7 ^
& l; v& D" u8 q4 t/ Q8 |9 E4 U
( h! F$ m x) `* K/ {
% ~/ r6 M8 D# a
, _ ?- m& s" u6 f! H% Q ?" u# ]7 k
* t" [ b& u0 s$ pm2 generate # Generate a sample json configuration file6 ?0 T+ l8 G' q0 D
. Q+ W( ^* e" ]# z% `% \
/ _% U0 B3 R! \0 K8 ]; c
( A$ }2 f1 H' F举例:
0 S Q9 S5 O% X/ G% J阿拉德的脚本启动方法
/ N* L# c: Q' c( l/ b4 c, j9 r
+ }+ x2 ^* e$ m1 m& o5 i6 I
8 M, ~% f0 f4 ?! K3 a2 E8 c! G5 i* H# r" H
cd /www/wwwroot/gmald/src
_3 L' O F- ~: P; q/ W
) F/ a" z1 O+ P+ b" O6 }4 M: Y' t: o# A3 O. S( m1 M
& @& S" @3 J1 P. M1 |: W
( e I$ J8 X+ r" A7 y9 t$ Y2 ?
2 d: ~# g2 u ?" `! d1 m R, G% |& g. A# P
% s8 U2 ^( y6 j7 _" G$ a# |+ Ypm2 start app.js& S1 K6 n9 b) o5 d
* O6 E/ t5 T+ G6 e- u& q" i
% B m" {+ |. Y0 P; c- O! O
/ O: R9 p3 ?+ V) z* J* W. w; U- N: A
/ @! _2 F- T7 e! u3 n |
|