pm2 через apache сервер - PullRequest
       4

pm2 через apache сервер

0 голосов
/ 28 февраля 2020

Я хочу управлять своим приложением pm2 через сервер apache. Я пробовал это через bash скрипт и php. Вот мой индекс. 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>

и мой канал 4. 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'

1 Ответ

0 голосов
/ 28 февраля 2020

Вы видите, что это ошибка разрешения от permission denied, mkdir '/etc/.pm2'. Поскольку вы вызываете сценарий оболочки из веб-браузера, вам, скорее всего, нужно дать пользователю www-data разрешение на выполнение сценария от имени пользователя root.

Если вы отредактируете файл sudoers, скорее всего: sudo vi /etc/sudoers и добавите строку, аналогичную этой, в конце www-data ALL=(root) NOPASSWD: /full/path/to/thescript.sh, это позволит вызвать сценарий оболочки как пользователь root из веб-браузер, то есть он не должен создавать каталоги.

Вы можете добавить строку для каждого отдельного сценария (рекомендуется) или разрешить всем www-data выполнять все сценарии как root (опасно), но здесь - www-data ALL=(root) NOPASSWD:ALL

Не забудьте перезагрузите сервер sudo service apache2 restart

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...