之前的文章中,我介绍了可以使用PM2来让node.js程序一直运行,但是这样做的一个前提是我们要执行一下pm2 start xxx.js
命令。
(图源 :pixabay)
那么新问题来了,每次我们需要重启服务器,都需要重新执行一下pm2 start xxx.js
命令,是不是很麻烦,有没有办法让PM2在开机时自动启动我们的应用?
pm2 startup
方式之一是使用pm2 startup,大致步骤如下:
pm2 start xxx.js
启动应用。
pm2 save
保存
pm2 startup
来设置开机自动启动。
但是因为我的PM2是本地安装的(并非全局安装),而且也不想以root用户直接运行应用,所以不去考虑这种方法。
使用rc.local
第二种方法是使用rc.local。
使用rc.local可能是相当过时的办法,但是对我而言,简单且好用就可以。
首先创建rc.local文件,并设置执行权限
sudo vi /etc/rc.local
sudo chmod u+x /etc/rc.local
在rc.local文件第一行加入如下语句
#!/bin/sh -e
否则,可能会出现类似如下错误:
之后在rc.local中添加如下内容:
su -c '~/bin/pm2 start ~/xxx/app.js' --login userxxxx
其中-, -l, --login
代表:
Provide an environment similar to what the user would expect had the user logged in directly.
这样就会加载用户的环境,否则会出现类似如下错误:
/usr/bin/env: ‘node’: No such file or directory
因为在pm2的脚本中使用了如下内容:
#!/usr/bin/env node
验证
进行上述设置后,直接重启服务器,发现我们的服务访问正常,说明上述设置 无误。
需要注意的几个坑上边已经提到啦(很不幸,我都踩到了,哈哈)
相关链接
Vote For Me As Witness
https://steemit.com/~witnesses type in oflyhigh
and click VOTE
Vote @oflyhigh via Steemconnect
Thank you!
This page is synchronized from the post: ‘每天进步一点点:PM2设置开机自启动’