我正在努力解决应该在哪些帐户下运行守护程序以及如何添加应用程序的问题。
我目前将其置于根目录下。
PM2 v4.2.3:上帝守护进程 (/root/.pm2)
但是,当我运行 bash 脚本来添加另一个应用程序时,我以具有 sudo 权限的 brad 身份登录。所以它然后想启动另一个守护进程
PM2 v4.2.3:上帝守护进程 (/brad/.pm2)
并将应用程序添加到 Brad 实例,而不是根实例。
我不确定如何构建它。最终目标是让 php 网页运行 bash 脚本来添加应用程序。 nginx Web 服务器和 php-frm 以 www-data 用户身份运行。那么我是否也应该以该用户身份运行 God Daemon 并授予 www-data sudo 权限?我担心这里的治安问题。我将不胜感激对此的任何帮助,因为我认为这对于正确处理非常重要。我使用的是ubuntu 18.4
答案1
欢迎来到 StackExchange。建议您在与您希望控制的应用程序相同(隔离)的用户下运行 PM2,以便其简单地工作。
首先将节点代码设置为本地用户,并确保以本地用户身份执行所有“npm”命令,而不仅仅是 root:
如果您
npm -g install xyz
以 root 身份运行“ ”,则软件包将转到“/usr/local/lib/node_modules/”。 “-g”表示全局,否则它们将转到根用户目录。如果您
npm install xyz
以用户身份运行“ ”,则软件包将转到“/home//.pm2/node_modules/”...这是我推荐的方法。
然后,要获得 PM2 的正确启动脚本,请pm2 startup -u <username> upstart
对较旧的发行版(例如 Ubuntu 14.04)执行“ ”,或pm2 startup -u <username>
对使用 systemd 的较新发行版执行“ ”(脚本尝试自动检测),其中“ <username>
”是您的文件中的“brad”案例,或您选择的任何其他内容。我们为 NodeJS 应用程序创建了一个单独的用户,以便所有内容都在一个用户下隔离,这也使其更易于管理。但是,请注意,如果您随后以“brad”或“root”身份登录并运行 pm2,它将针对登录用户的目录运行,因此不会显示在其他用户下运行的应用程序。即以“brad”身份运行 pm2 将显示在“brad”下管理的应用程序。
根据 pm2 手册页,还有其他设置方法,但我发现它效果不佳。