请问Nodejs+forever怎么用非root用户启动?

请问Nodejs+forever怎么用非root用户启动?

用root启动没问题,不知道怎么用非root启动,这样是不是安全些?

4 回复

当然可以。使用非root用户启动Node.js应用并配合forever管理进程是一个常见的需求,这不仅可以提高安全性,还可以更好地管理不同应用之间的资源隔离。

步骤1:创建一个新用户

首先,我们需要为运行Node.js应用创建一个新的非root用户。这可以通过执行以下命令来完成:

sudo useradd -m nodeuser

这里,-m选项表示创建用户的家目录。然后设置密码:

sudo passwd nodeuser

步骤2:更改文件所有权

接下来,确保Node.js应用的所有文件都归新创建的用户所有。假设你的Node.js应用位于/home/nodeuser/myapp目录下:

sudo chown -R nodeuser:nodeuser /home/nodeuser/myapp

步骤3:切换到非root用户

现在我们可以以非root用户身份运行forever了。为了方便起见,我们可以使用su命令切换到新的用户:

su - nodeuser

步骤4:安装Forever(如果尚未安装)

如果你还没有安装forever,可以使用npm来安装它。注意,这里的npm应该属于新用户:

npm install -g forever

步骤5:启动Node.js应用

最后,使用forever启动你的Node.js应用。假设你的应用入口文件名为app.js

forever start /home/nodeuser/myapp/app.js

或者,如果你想以后台方式运行:

nohup forever start /home/nodeuser/myapp/app.js &

小结

通过上述步骤,你可以确保Node.js应用以非root用户身份运行,并使用forever进行管理。这种方法不仅提高了系统的安全性,还便于权限管理和故障排查。

希望这些信息对你有帮助!如果有任何问题或需要进一步的帮助,请随时提问。


没必要,你可以选择用户组的方式,像apache那样,基本由www用户来启动。

楼主的意思不就是要用www这样的用户启动么?问题是怎么用www用户启动啊,我也想知道?

使用非root用户启动Node.js应用并结合forever管理进程是一种更安全的做法。以下是如何配置的步骤及示例代码:

步骤1: 创建一个非root用户

首先,你需要创建一个非root用户,例如nodeuser

sudo adduser nodeuser

在创建过程中,会提示你输入密码和其他信息。

步骤2: 更改文件和目录的所有权

假设你的Node.js应用位于/home/nodeuser/myapp目录下,你需要更改该目录的所有权,使其归新创建的nodeuser用户所有:

sudo chown -R nodeuser:nodeuser /home/nodeuser/myapp

确保应用所需的任何文件和子目录也有正确的权限设置。

步骤3: 使用非root用户启动应用

切换到nodeuser用户,然后使用forever启动你的Node.js应用:

su -s /bin/bash -c "forever start /home/nodeuser/myapp/app.js" nodeuser

这条命令的作用是:

  • su -s /bin/bash: 切换到nodeuser用户。
  • -c "forever start /home/nodeuser/myapp/app.js": 以nodeuser身份执行forever start命令启动应用。
  • nodeuser: 指定要使用的用户名。

示例代码

假设你的Node.js应用入口文件为app.js,并且位于/home/nodeuser/myapp目录下。你可以直接运行上述命令来启动应用。

额外提示

为了确保安全性,考虑设置SSH访问限制,仅允许特定用户通过SSH登录,并且可以限制非root用户执行某些命令或从某些IP地址连接。

通过这种方式,你可以安全地使用非root用户来运行Node.js应用,同时使用forever来保持应用始终在线。

回到顶部