故事起因
最近在做一個(gè)直播平臺的時(shí)候涉及到一個(gè)功能,平臺采用的是agora挠说,互動環(huán)節(jié)我們采用的是rabbitmq,但是在互動環(huán)節(jié)的時(shí)候,我們發(fā)現(xiàn)其實(shí)rabbit作為一個(gè)消息系統(tǒng)是一個(gè)非常不錯(cuò)的選擇愿题,但是它類似一個(gè)'匿名郵箱'损俭,所以只能訂閱到該郵箱的才能接收到消息,所以這時(shí)候我們再解決一個(gè)問題的時(shí)候 ---------------消息保存的時(shí)候出現(xiàn)了一個(gè)問題潘酗,因?yàn)閞abbit的配置信息杆兵,包括訂閱的房間號需要先生成再進(jìn)行接收,但是這個(gè)工作也不能交給客戶端仔夺,所以有了這篇文章琐脏。
問題解決思路
解決方案
思路:因?yàn)槲沂且粋€(gè)phper,所以第一想法就是用php來寫一個(gè)遠(yuǎn)程調(diào)起生成一個(gè)conf.php文件,再通過receive.php接收日裙,再推到服務(wù)端吹艇,實(shí)現(xiàn)消息的保存。
問題1:怎樣生成配置文件昂拂?
解決方案:我們可以通過php生成配置文件受神,每次再啟動之前更新配置文件。
問題2:怎么監(jiān)聽格侯?
解決方案:利用進(jìn)行監(jiān)聽系統(tǒng)進(jìn)程路克,這里引入一篇廖雪峰的文章介紹supervisor
問題3:怎么開關(guān)監(jiān)聽?
解決方案:利用php遠(yuǎn)程調(diào)取shell進(jìn)行開關(guān)supervisor养交,也就是開關(guān)了監(jiān)聽存儲過程精算。(重點(diǎn))
其實(shí)這里有一個(gè)難點(diǎn),也是困擾了我的問題碎连。遠(yuǎn)程無法調(diào)取shell命令執(zhí)行shell腳本灰羽,其實(shí)這時(shí)候我也去百度了很久,但是也沒找到解決方案鱼辙。
其實(shí)有些時(shí)候真的是靈光凸突顯的那種廉嚼,我覺得是不是我的權(quán)限不夠?
好了問題找到了倒戏,其實(shí)在linux下面有一個(gè) sudoers的文件怠噪,其實(shí)這個(gè)是管理command的權(quán)限的文件,所以這時(shí)候杜跷,我首先去查詢了我的nginx 的權(quán)限傍念,發(fā)現(xiàn)是www-data? ? 權(quán)限,于是乎葛闷。
其實(shí)這個(gè)命令就是當(dāng)Nginx訪問的時(shí)候把 我們的權(quán)限改成沒有密碼的憋槐,并且能調(diào)用到sudo的權(quán)限,至此問題解決淑趾。
思考
?其實(shí)在我們的工作中阳仔,會遇到各種問題,這里舉例說的千千萬扣泊,其實(shí)想說的近范,只要細(xì)心,就能找到問題所在延蟹,并且把問題給解決评矩。問題不可怕,可怕的是不去動腦想解決方案等孵。
最后啦稚照,happy hacking