php操控nginx解決方案

來源:互聯網
上載者:User
php操控nginx
問個問題了...

現有nginx.php指令碼來操控nginx。
如有啟動、停止、重啟、等。

php與nginx都不是root許可權。
用exec system函數,
基本的一些 ls cp 命令是沒問題。

kill -INT `cat /usr/local/nginx/logs/nginx.pid`;
怎麼測試都執行不了。
cat /usr/local/nginx/logs/nginx.pid是沒問題,就是kill命令執行不了,
估計kill許可權問題,不知要怎麼搞。


還有假設能把nginx停止了。那nginx.php自己都不能運行了,是得上伺服器來啟動nginx了。
要保證nginx.php能正常運行,這個要怎麼處理好些?

是要新開連接埠、進程什麼的麼?
有這方面經驗的朋友指點下啊。
或大牛們給些資料來學習學習。




------解決方案--------------------
http://www.osseye.com/?p=295
找來的文章 希望有所協助
------解決方案--------------------
又是許可權問題,值得關注,坐等求解~~
------解決方案--------------------
chmod 755 試試
------解決方案--------------------
寫個shell 然後用php 來調用這個shell 可行?

我擦 bb機...想當年哥1500的中文 潤訊bb機別在褲帶上多耀眼...
------解決方案--------------------
當然不能通過web介面操作了- -。。

寫個php指令碼,使用ssh操作遠程伺服器執行nginx重啟關閉等,相關介面:
http://cn.php.net/ssh2,伺服器sshd服務開啟。

這樣的話,許可權將與你的ssh user相關,用適當的使用者ssh執行command即可。

SYNOPSIS
#include

int kill(pid_t pid, int sig);

For a process to have permission to send a signal to a process designated by pid, unless the sending process has appropriate privileges, the real or
effective user ID of the sending process shall match the real or saved set-user-ID of the receiving process.

這是Kill的許可權問題,要麼你是root,要麼你和nginx進程的真實使用者ID一樣,要麼和nginx進程的儲存設定使用者ID一樣,你應該都可以實現。

------解決方案--------------------
從Nginx的C源碼實現角度,master進程是root啟動的,它的實際使用者ID是檔案屬主,如果master bind 80後setuid切到其他有效使用者ID,那麼savfed set-user-ID將是root。

所以你如果想kill nginx,你要麼以root身份ssh,要麼是Nginx這個二進位檔案的屬主身份ssh,這兩者都可以實現kill。

其他的都沒戲,別看你nginx的設定檔裡寫的工作使用者和工作群組,都是沒權利的,它們是nginx的worker進程setuid降低許可權使用的。
------解決方案--------------------
探討

這個ssh2也有瞭解過點點,這個是要遠程登入吧?要root的密碼。。
我是寫給別人用的要別人提供root密碼好像有些不太妥啊。

引用:

當然不能通過web介面操作了- -。。

寫個php指令碼,使用ssh操作遠程伺服器執行nginx重啟關閉等,相關介面:
http://cn.php.net/ssh2,伺服器sshd服務開啟。

這樣的話,許可權將與你的ss……

------解決方案--------------------
探討

-rwxr-xr-x 1 root root 3874792 Jul 5 11:55 /usr/local/nginx/sbin/nginx

還有你能說下#1樓提到的方法嗎?



引用:

引用:

這個ssh2也有瞭解過點點,這個是要遠程登入吧?要root的密碼。。
我是寫給別人用的要別人提供root密碼好像有些不太妥啊。
……

------解決方案--------------------
不知道你遇到了什麼問題?
nginx 與其他提供持續服務的軟體一樣,都需要由管理員層級使用者啟動,否則一旦使用者登出了,服務也就停止了

你說用 nginx.php 指令碼來操控 nginx
從 nginx.php 檔案名稱上看,應該是以 web 方式啟動並執行
但 nginx 一旦停止,nginx.php 如何運行?

如果是通過 shell,那有何必多此一舉
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.