Linux是否有類似於IIS統一管理網站的工具?

注意,問題的重點是「管理」,它包含兩層意義:

1、網站按需啟動(假如網站進程crash了,新請求來後可以重新起一個新進程)

2、網站按需關閉(如超過20分鐘未訪問,可自動終止網站進程以節省伺服器資源)

問題的背景:

我已經成功在Ubuntu 14.04上運行了http://ASP.NET Core 1.0,需要單獨的進程,網站一切正常,但我擔心web伺服器crash掉後需要手動重新啟動才行。

為探索這個問題,我在google上圍繞nginx作了很久的探索,但似乎nginx做不到這兩點。

不知道大家使用Linux作web伺服器是是怎麼管理這兩個問題,但我覺得Linux不可能沒有這樣的工具。(PHP似乎沒有這個問題,因為PHP似乎不需要常駐內存,但類似Python、Node.js進程內的Web框架,應該有類似的問題)


首先對 vczh 反對+沒有幫助,原不想答的,看vczh出來誤導,必須正視聽了。

Linux 下進程守護的事情一般不交給 webserver 做,nginx 只是個反向代理。把你的 web app 寫成服務,看你的發行版了,新一些的話用 systemd 服務,ubuntu 14.04 / CentOS 6 寫成 upstart 服務,再不濟用 supervisor 都可以幫你完成自動重啟。

當然,沒人阻止你寫一個支持重啟 webapp 的 webserver。

一段時間釋放資源我不太清楚,但是按需啟動可以用 systemd socket 激活,或者老一些的 xinet 都行。


對於守護進程其實已經有不少現成的解決方案了,比如ubuntu以前用的upstart之類。

對http://Asp.net Core on Linux,官方推薦supervisor,並且也給出了配置文件的sample:

http://docs.asp.net/en/latest/publishing/linuxproduction.html

至於自動啟停需求,似乎比較少有人這麼做,我也不記得有什麼現成的方案。你可以考慮寫個腳本監聽access log?


明顯理念就錯了

nginx的worker進程掛了會自動拉起,只要你不用nfs這種坑爹的東西,worker進程基本也不會假死。

訪問量小的情況下,可以多個後端real server公用一個nginx,用不同host區分。

在沒有請求時,nginx佔用的系統資源幾乎可以忽略不計。沒必要關閉。


第一個有很多解決方案。。例如系統的systemd,python的supervisord,nodejs的pm2,forever等都是成熟的解決方案。

第二個的話。。。有必要麼?小站資源妥妥的夠用,沒必要關閉。大站沒時間關閉。。


沒太看懂你的問題,網站為什麼要按需要啟動和關閉?你就缺這點內存?自動關掉WEB伺服器的進程既不會讓你的伺服器變快,也不會給你帶來什麼別的好處,只會讓你的系統更加的複雜,這不是給自己找麻煩呢么?

當然雲計算的動態scale-up/out 是完全別的問題,這個我們另外說。

本著揣測出題者意圖原則,我來猜一步:你是怕nginx萬一掛了或者假死,可以有一種東西幫你重啟一下。這種事情自己寫個腳本加到cron里不就行了?

wget 自己的伺服器,沒有應答的話service restart。大概10行之內就可以搞定,1分鐘執行一次,不就得了?


好像 很多熟悉linux的人,直接把 本問題 當成自動啟動 了

其實他問的是 如同iis管理工具的特殊功能,除了自動啟動,還有多久沒訪問自動關閉,訪問了多少次自動關閉。。。。

這些功能,linux自帶的系統、服務的確沒有

至於守護進程,nginx自己分master和worker,前者不幹業務,只負責調度、重啟worker,後者才真正做業務,像這種調度、重啟,linux自帶的系統、服務也的確做不到這麼細,所以nginx才自行實現。當然,nginx的master也沒iis管理器那麼細。。。。


我就想知道2里的伺服器資源省下來給誰用?idle?


Apache Nginx


webmin 或者 ispcp等控制面板程序可以實現界面部分,實際都是改配置文件


問題1,一般各個操作系統都帶有這種daemon功能吧。。

問題2,一般只要支持fast-cgi的web-server, 都支持在cgi進程響應不過來時,按需擴大進程數量。那麼問題來了:當請求量變低回歸正常負荷的時候,web-server居然不知道關掉一些進程來節省資源嗎?

綜上:問題1,問題2都還是查查相關的手冊吧。問題1查下操作系統相關的,問題2查下你web-server相關的。


上面說的sysv init,upstart,都要被淘汰了。被systemctl替換了,這個更簡單,功能更強大。


ASP.NET跨平台從這裡開始!

Jexus,一個國人(宇內流雲)開發非開源的強勁、堅固、免費、易用的Linux http://ASP.NET服務器,從http://ASP.NET Webform到http://ASP.NET MVC到現在的http://ASP.NET Core均有支持。現在最新版的已內置Min MONO 框架實現綠色啟動。

對於http://ASP.NET Core程序,Jexus提供反向代理 + 守護進程,用起來也是很方便的。

InfoQ上簡介:

Jexus 即 Jexus Web Server,簡稱JWS,是Linux平台上 的一款性能優良、功能強大的 http://ASP.NET WEB伺服器。Jexus Web server 是第一款真正意義上的(非開源)LINUX/UNIX http://ASP.NET WEB伺服器,它是 Linux、Unix、FreeBSD 等非Windows系統架設 http://ASP.NET WEB 伺服器的核心程序,是企業級http://ASP.NET跨平台部署的首選方案。與其它WEB伺服器相比,Jexus不但具有跨平台http://ASP.NET伺服器這樣的標誌性特徵,同時還擁有內核級的安全監控、入侵檢測、URL重寫、無文件路由等一系列重要功能和專有特性。因此,相對其他WEB伺服器而言,Jexus具有同樣的實用價值。

LINUX ASP.NET WEB伺服器:JEXUS

Jexus還可以通過自帶的PHP-FCGI服務以及PHP-FPM等方式靈活支持PHP而且還可以以.NET(Phalanger)方式支持PHP。

遺憾的是,Jexus並不開源,至今還是宇內流雲自己在默默開發+更新維護...

照我和宇內dalao的交流經歷,這個只是個人觀念的問題,應該不會有太多利益關係。

相關參考文章:

1、Jexus首頁、文檔和下載 - Linux平台的ASP.NET伺服器 - 開源中國社區

2、Jexus 支持PHP的三種方式

3、結合Jexus + Kestrel 部署 asp.net core 生產環境

4、ubuntu使用Jexus搭建MyWebSQL


我覺得webmin就很不錯,是一個遠程傻瓜的管理平台,之前在危險漫步博客上曾經看到過就有說這個。

http://www.weixianmanbu.com/article/1583.html Webmin伺服器管理的新選擇


有現成的工具,supervisor我現在項目中有在用的


在linux下面你通常需要寫一個自啟動的看門狗程序來替你重啟服務進程


沒有處理的那一小條進程有什麼省的意義?


請使用IBM中間件,WAS。通過was-node-manager可以實現iis都不具備的功能。


你需要安裝一個supervisor,可以滿足你的需要。


Linux有個守護進程的概念。

nodejs有forever和pm2這樣的工具。

工具在Linux平台真的不少,只有會不會用和適不適用的問題吧


推薦閱讀:

最逼近Mac OS X的Linux系統有哪些?
Linux 各個發行版與 OS X 相比哪個寫代碼更舒服?為什麼?
vmware, visual studio, steam dota2這種需要極大內存的程序是如何分配內存的?
想成為 Linux 驅動工程師,需要讀些什麼書?
求推薦學習linux命令的書籍?

TAG:Linux | Nginx | IIS | Web伺服器 |