谈一谈php调起远程shell脚本问题

故事起因

最近在做一个直播平台的时候涉及到一个功能,平台采用的是agora,互动环节我们采用的是rabbitmq,但是在互动环节的时候,我们发现其实rabbit作为一个消息系统是一个非常不错的选择,但是它类似一个'匿名邮箱',所以只能订阅到该邮箱的才能接收到消息,所以这时候我们再解决一个问题的时候 ---------------消息保存的时候出现了一个问题,因为rabbit的配置信息,包括订阅的房间号需要先生成再进行接收,但是这个工作也不能交给客户端,所以有了这篇文章。



问题解决思路

解决方案

思路:因为我是一个phper,所以第一想法就是用php来写一个远程调起生成一个conf.php文件,再通过receive.php接收,再推到服务端,实现消息的保存。


问题1:怎样生成配置文件?

解决方案:我们可以通过php生成配置文件,每次再启动之前更新配置文件。


问题2:怎么监听?

解决方案:利用进行监听系统进程,这里引入一篇廖雪峰的文章介绍supervisor

supervisor安装配置


问题3:怎么开关监听?

解决方案:利用php远程调取shell进行开关supervisor,也就是开关了监听存储过程。(重点)

其实这里有一个难点,也是困扰了我的问题。远程无法调取shell命令执行shell脚本,其实这时候我也去百度了很久,但是也没找到解决方案。

其实有些时候真的是灵光凸突显的那种,我觉得是不是我的权限不够?

好了问题找到了,其实在linux下面有一个 sudoers的文件,其实这个是管理command的权限的文件,所以这时候,我首先去查询了我的nginx 的权限,发现是www-data    权限,于是乎。

其实这个命令就是当Nginx访问的时候把 我们的权限改成没有密码的,并且能调用到sudo的权限,至此问题解决。


思考

 其实在我们的工作中,会遇到各种问题,这里举例说的千千万,其实想说的,只要细心,就能找到问题所在,并且把问题给解决。问题不可怕,可怕的是不去动脑想解决方案。

最后啦,happy hacking