Linux 通过apache服务器的pm2
我想通过apache服务器控制我的pm2应用程序。我已经通过bash脚本和php尝试过了。这是我的index.php:Linux 通过apache服务器的pm2,linux,apache,pm2,Linux,Apache,Pm2,我想通过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");
<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>
<button name="RightOPEN">Mirror</button><br>
</form>
</html>
和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'
[PM2][Initialization]未设置环境变量HOME(Linux)或HOMEPATH(Windows)!
[PM2][初始化]默认为/etc/.PM2
错误:EACCES:权限被拒绝,mkdir'/etc/.pm2'
在Object.mkdirSync(fs.js:757:3)
同步时(/usr/lib/node_modules/pm2/node_modules/mkdirp/index.js:71:13)
在Function.sync(/usr/lib/node_modules/pm2/node_modules/mkdirp/index.js:77:24)
位于module.exports.Client.initFileStructure(/usr/lib/node_modules/pm2/lib/Client.js:132:25)
在new module.exports(/usr/lib/node_modules/pm2/lib/Client.js:37:8)
在新的API中(/usr/lib/node_modules/pm2/lib/API.js:107:19)
反对。(/usr/lib/node_modules/pm2/lib/binaries/CLI.js:22:11)
at模块编译(内部/modules/cjs/loader.js:778:30)
at Object.Module._extensions..js(internal/modules/cjs/loader.js:789:10)
at Module.load(内部/modules/cjs/loader.js:653:32)
错误:EACCES:权限被拒绝,mkdir'/etc/.pm2'
您可以从权限拒绝,mkdir'/etc/.pm2'
中看到这是一个权限错误。当您从web浏览器调用shell脚本时,您很可能需要授予www-data
用户权限,以根用户身份执行脚本
如果编辑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服务apache2 restart
希望这有帮助。谢谢你的回答。我做了你在sudoers档案里要求我做的事。然而,它对我仍然不起作用。我仍然会遇到相同的错误,下面是一些新错误:
[PM2][Initialization]未设置环境变量HOME(Linux)或HOMEPATH(Windows)![PM2][Initialization]默认为/etc/.PM2错误:EACCES:permission denied,mkdir'/etc/.PM2'
可能不是最好的做法,但尝试一下这个sudo mkdir/etc/.PM2
然后sudo chmod+x-R/etc/.PM2
在做了你让我做的事情后,我仍然不喜欢它<代码>错误:EACCES:permission denied,mkdir'/etc/.pm2/modules'Hmm您可以看到现在的情况略有不同。尝试sudo chmod+x/etc/.pm2-R
Ok,尝试这个sudo npm安装-g--unsafe perm=true--allow root
[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'