加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux – 如何使用pm2托管node.js应用程序而不以root身份运行它

发布时间:2020-12-14 02:38:09 所属栏目:Linux 来源:网络整理
导读:我已经设置pm2来运行node.js应用程序,我可以成功启动它,它会在重启时恢复. 但是,pm2守护进程是以root身份运行的,这使我认为我的所有节点脚本也以root身份运行?即使我将它们添加为系统中的常规用户.日志文件和内容在用户主目录/ //.pm2/logs中创建,但日志由r
我已经设置pm2来运行node.js应用程序,我可以成功启动它,它会在重启时恢复.

但是,pm2守护进程是以root身份运行的,这使我认为我的所有节点脚本也以root身份运行?即使我将它们添加为系统中的常规用户.日志文件和内容在用户主目录/ //.pm2/logs中创建,但日志由root拥有.

当我调用pm2启动(处理init.d脚本的安装等)时,它会创建/etc/init.d/pm2-init.sh,如下所示:

#!/bin/bash
# chkconfig: 2345 98 02
#
# description: PM2 next gen process manager for Node.js
# processname: pm2
#
### BEGIN INIT INFO
# Provides:          pm2
# Required-Start:
# Required-Stop:
# Should-Start:
# Should-Stop:
# Default-Start:        2 3 4 5
# Default-Stop:         0 1 6
# Short-Description: PM2 init script
# Description: PM2 is the next gen process manager for Node.js
### END INIT INFO

NAME=pm2
PM2=/usr/local/lib/node_modules/pm2/bin/pm2
NODE=/usr/local/bin/node

export HOME="/root"

start() {
    echo "Starting $NAME"
    $NODE $PM2 stopAll
    $NODE $PM2 resurrect
}

stop() {
    $NODE $PM2 dump
    $NODE $PM2 stopAll
}

restart() {
    echo "Restarting $NAME"
    stop
    start
}

status() {
    echo "Status for $NAME:"
    $NODE $PM2 list
    RETVAL=$?
}

case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    status)
        status
        ;;
    restart)
        restart
        ;;
    *)
        echo "Usage: {start|stop|status|restart}"
        exit 1
        ;;
esac
exit $RETVAL

当我转储进程时(这是复活进程时将使用的进程),我看到提到用户“USER”:“pi”但我不认为它实际上是以用户pi运行的.

有什么想法吗?

解决方法

pm2项目仓库中最新的 pm2-init.sh具有此功能.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读