pm2搭建node生产环境 Linux & FreeBSD
CentOS 下的pm2布署
检查npm版本,最小版本v6.1.0
$ npm -v
v5.6.0
如果npm版本小于v.6.1.0 在线升级 npm
$ npm i -g npm
1. 安装pm2 (-g 全局安装)
npm install -g pm2
然后进入到你的node项目布署目录下:
pm2 start index.js --name 'test'# index.js
上面是项目的运行脚本
scort@scort-Lenovo-IdeaPad-U310:~/websocket$ pm2 start index.js --name 'test'
[PM2] Starting /home/scort/websocket/index.js in fork_mode (1 instance)
[PM2] Done.
┌───────┬──────┬─────────┬───┬─────┬───────────┐
│ Name  │ mode │ status  │ ↺ │ cpu │ memory    │
├───────┼──────┼─────────┼───┼─────┼───────────┤
│ test  │ fork │ online  │ 0 │ 0%  │ 19.4 MB   │
└───────┴──────┴─────────┴───┴─────┴───────────┘
 Use `pm2 show <id|name>` to get more details about an app
2. 把pm2加入系统启动中
pm2的启动脚本
vi /usr/lib/systemd/system/pm2-root.service
[Unit]
Description=PM2 process manager
Documentation=https://pm2.keymetrics.io/
After=network.target
[Service]
Type=forking
User=root
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
Environment=PATH=/usr/bin:/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
Environment=PM2_HOME=/root/.pm2
PIDFile=/root/.pm2/pm2.pid
ExecStart=/usr/lib/node_modules/pm2/bin/pm2 resurrect
ExecReload=/usr/lib/node_modules/pm2/bin/pm2 reload all
ExecStop=/usr/lib/node_modules/pm2/bin/pm2 kill
[Install]
WantedBy=multi-user.target
设置为开机启动
systemctl enable pm2-root
保存 pm2 的当前运行环境
$ pm2 save
[PM2] Saving current process list...
[PM2] Successfully saved in /root/.pm2/dump.pm2
然后 reboot 重启系统
执行 pm2-root 的命令
systemctl start pm2-root #启动pm2
systemctl restart pm2-root #重启pm2
systemctl enable pm2-root #停止pm2
FreeBSD 下的布署
1、BSD下环境安装,采用 ports 安装
cd /usr/ports/www/node && make install clean
cd /usr/ports/www/npm && make install clean
2、全局安装PM2
npm install -g pm2
3、布置应用环境,如上CENTOS相同
先在布署目录下执行  pm2 start index.js --name 'test'# index.js
再保存pm2的运行状态 pm2 save
4、设置PM2随系统自动启动
pm2 的执行脚本,放到 /usr/local/etc/rc.d/ 目录下。
vi /usr/local/etc/rc.d/pm2
#!/bin/sh
# PM2 Startup script
#
# Make the file executable with:
# /usr/local/etc/rc.d/pm2 (chmod +x)
#
# add to /etc/rc.conf
#
# pm2_enable="YES"
# pm2_user="root"
# PROVIDE: pm2
# REQUIRE: NETWORK mongod
# KEYWORD: shutdown
#
 
. /etc/rc.subr
 
name=pm2
rcvar=pm2_enable
 
PM2=/usr/local/lib/node_modules/pm2/bin/pm2
 
load_rc_config $name
 
start_cmd="pm2_start"
stop_cmd="pm2_stop"
restart_cmd="pm2_restart"
reload_cmd="pm2_reload"
: ${pm2_user="freebsd"}
: ${pm2_enable="NO"}
 
pm2_start()
{
        CMD="${PM2} resurrect"
        su -l ${pm2_user} -c "${CMD}"
 
}
 
pm2_stop()
{
        CMD="${PM2} kill"
        su -l ${pm2_user} -c "${CMD}"
}
 
pm2_restart()
{
        pm2_stop
        pm2_start
}
 
pm2_reload()
{
        CMD="${PM2} reload all"
        su -l ${pm2_user} -c "${CMD}"
}
 
run_rc_command "$1"
在 /etc/rc.conf 下面增加如下启动命令
pm2_enable="YES"
pm2_user="root"
然后 reboot 重启你的系统 进入系统执行
# pm2 list                                                              
┌────────────┬────┬─────────┬──────┬─────┬────────┬─────────┬────────┬───────┬────────────┬──────┬──────────┐
│ App name   │ id │ version │ mode │ pid │ status │ restart │ uptime │ cpu   │ mem        │ user │ watching │
├────────────┼────┼─────────┼──────┼─────┼────────┼─────────┼────────┼───────┼────────────┼──────┼──────────┤
│ test       │ 0  │ 0.0.0   │ fork │ 821 │ online │ 0       │ 4D     │ 25.9% │ 115.1 MB   │ root │ enabled  │
└────────────┴────┴─────────┴──────┴─────┴────────┴─────────┴────────┴───────┴────────────┴──────┴──────────┘
 Use `pm2 show <id|name>` to get more details about an app
你会发现 布署的应用已经自动启动了。
BSD 程序管理命令
/usr/local/etc/rc.d/pm2 start
/usr/local/etc/rc.d/pm2 restart
/usr/local/etc/rc.d/pm2 stop
    
                
没有要显示的评论
没有要显示的评论