【问题标题】:pm2 via apache serverpm2 通过 apache 服务器
【发布时间】:2020-02-28 10:06:06
【问题描述】:

我想通过 apache 服务器控制我的 pm2 应用程序。我已经通过 bash 脚本和 php 进行了尝试。这是我的 index.php:

<html>
<head>
<meta c
</head>


<?php
if (isset($_POST['RightOPEN']))
{
exec("/home/pi/startmm.sh");
}
if (isset($_POST['LeftOPEN']))
{
exec("/home/pi/channel4.sh");
}
?>
<form method="post">
<button name="LeftOPEN">Channel 4</button>&nbsp;
<button name="RightOPEN">Mirror</button><br>



</form>
</html>

而我的 channel4.sh 是:

#!/bin/bash
pm2 stop mm

和 startmm.sh:

#!/bin/bash
pm2 start mm

有人可以帮忙吗?它似乎不起作用,我的 apache 日志中出现以下错误:

[PM2][Initialization] Environment variable HOME (Linux) or HOMEPATH (Windows) are not set!
[PM2][Initialization] Defaulting to /etc/.pm2
Error: EACCES: permission denied, mkdir '/etc/.pm2'
    at Object.mkdirSync (fs.js:757:3)
    at sync (/usr/lib/node_modules/pm2/node_modules/mkdirp/index.js:71:13)
    at Function.sync (/usr/lib/node_modules/pm2/node_modules/mkdirp/index.js:77:24)
    at module.exports.Client.initFileStructure (/usr/lib/node_modules/pm2/lib/Client.js:132:25)
    at new module.exports (/usr/lib/node_modules/pm2/lib/Client.js:37:8)
    at new API (/usr/lib/node_modules/pm2/lib/API.js:107:19)
    at Object.<anonymous> (/usr/lib/node_modules/pm2/lib/binaries/CLI.js:22:11)
    at Module._compile (internal/modules/cjs/loader.js:778:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
    at Module.load (internal/modules/cjs/loader.js:653:32)
Error: EACCES: permission denied, mkdir '/etc/.pm2'

【问题讨论】:

    标签: linux apache pm2


    【解决方案1】:

    您可以看到这是来自permission denied, mkdir '/etc/.pm2' 的权限错误。当您从 Web 浏览器调用 shell 脚本时,您很可能需要授予 www-data 用户权限才能以 root 用户身份执行脚本。

    如果您编辑 sudoers 文件,很可能是:sudo vi /etc/sudoers,并在末尾添加与此类似的行 www-data ALL=(root) NOPASSWD: /full/path/to/thescript.sh,这将允许从 Web 浏览器以 root 用户身份调用 shell 脚本,这意味着它不应该创建任何目录。

    您可以为每个单独的脚本添加一行(推荐)或允许所有 www-data 以 root 身份执行所有脚本(危险)但在这里 - www-data ALL=(root) NOPASSWD:ALL

    别忘了重启你的服务器sudo service apache2 restart

    希望这会有所帮助。

    【讨论】:

    • 感谢您的回答。我做了你在 sudoers 文件中要求我做的事情。但是它仍然对我不起作用。我仍然收到相同的错误和一些新错误,如下所示:[PM2][Initialization] Environment variable HOME (Linux) or HOMEPATH (Windows) are not set! [PM2][Initialization] Defaulting to /etc/.pm2 Error: EACCES: permission denied, mkdir '/etc/.pm2'
    • 也许不是最佳实践,但试试这个sudo mkdir /etc/.pm2 然后sudo chmod +x -R /etc/.pm2
    • 不,在做了你让我做的事情之后仍然不喜欢它。 Error: EACCES: permission denied, mkdir '/etc/.pm2/modules'
    • 嗯,您现在可以看到这略有不同。试试sudo chmod +x /etc/.pm2 -R
    • 好的,试试这个sudo npm install -g --unsafe-perm=true --allow-root
    猜你喜欢
    • 1970-01-01
    • 2012-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-14
    • 2016-10-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多