先說一句哈,自從在 B 站開始刷視頻后,我就覺得要學(xué)的內(nèi)容實(shí)在是太多了。這篇“服務(wù)器軟件大掃盲”就是我看了羊哥的一期視頻后有感而發(fā)的,比如說 Web 服務(wù)器、HTTP 服務(wù)器、應(yīng)用服務(wù)器這三個(gè)概念,我是見過很多次,但如果你非要我說出它們之間的區(qū)別的話,我只好啞口無言。
還有,我自己用過的 Tomcat、Nginx、Apache、Jetty、Undertow,它們之間有什么優(yōu)缺點(diǎn),嗯。。。。。。只好繼續(xù)啞口無言??赡苡泻芏嘈』锇楹臀乙粯?,用過,但具體的差別還真的說不上來,所以我打算借這個(gè)機(jī)會(huì)來和大家一起學(xué)習(xí)下。(我就是課代表,我驕傲)
先來說 Web 服務(wù)器,它一般指的是網(wǎng)站服務(wù)器,可以向?yàn)g覽器(PC端或者移動(dòng)端)等 Web 客戶端提供服務(wù),供請(qǐng)求數(shù)據(jù)或者下載數(shù)據(jù)。服務(wù)器使用 HTTP (超文本傳輸協(xié)議)和客戶端瀏覽器進(jìn)行通信,因此我們也把 Web 服務(wù)器稱作為 HTTP 服務(wù)器。
再來說應(yīng)用服務(wù)器,它是一種軟件框架,提供一個(gè)應(yīng)用程序運(yùn)行的環(huán)境。通常用于為應(yīng)用程序提供安全、數(shù)據(jù)、事務(wù)支持、負(fù)載平衡大型分布式系統(tǒng)管理等服務(wù)。
在我看來,Web 服務(wù)器和應(yīng)用服務(wù)器之間的界限已經(jīng)非常模糊,后者更高級(jí)一點(diǎn),就好像公司與企業(yè)這兩個(gè)名詞之間的差別。
常見的 Web 服務(wù)器軟件包括 Nginx、Apache、IIS,常見的應(yīng)用服務(wù)器軟件包括 WebLogic、JBoss,前者更輕量級(jí),后者更重量級(jí)。
接下來,我們就來嘮嘮常見的一些服務(wù)器軟件。
就我的程序生涯來看,Tomcat 用的算是最多了,沒有之一。如果 Tomcat 安裝成功的話,可以在本地的瀏覽器中訪問 http://127.0.0.1:8080 來展示它的默認(rèn)首頁,見下圖。
Tomcat 是由 Apache 軟件基金會(huì)屬下 Jakarta 項(xiàng)目開發(fā)的 Servlet 容器,實(shí)現(xiàn)了對(duì) Servlet 和 JavaServer Page(JSP)的支持,并提供了作為 Web 服務(wù)器的一些特有功能。
JSP 是由 Sun Microsystems 公司主導(dǎo)建立的一種動(dòng)態(tài)網(wǎng)頁技術(shù)標(biāo)準(zhǔn)。JSP 可以響應(yīng)客戶端發(fā)送的請(qǐng)求,并根據(jù)請(qǐng)求內(nèi)容動(dòng)態(tài)地生成 HTML、XML 或其他格式文檔的 Web 網(wǎng)頁,然后返回給請(qǐng)求者。
JSP 以 Java 語言作為腳本語言,為用戶的 HTTP 請(qǐng)求提供服務(wù),并能與服務(wù)器上的其它 Java 程序共同處理復(fù)雜的業(yè)務(wù)需求。我是一名三線城市的 Java 程序員,免不了要開發(fā)一些小型網(wǎng)站,這也就是為什么我用 Tomcat 最多的原因。
Nginx 是一款輕量級(jí)的 Web 服務(wù)器、也支持反向代理,由于它的內(nèi)存占用少,啟動(dòng)極快,高并發(fā)能力強(qiáng),所以在互聯(lián)網(wǎng)項(xiàng)目中廣泛應(yīng)用。
關(guān)于 Nginx,比較令人遺憾的一件事是,它的作者伊戈?duì)枴べ愃饕蜻M(jìn)了監(jiān)獄。
Nginx 在官方測(cè)試的結(jié)果中,能夠支持五萬個(gè)并行連接,國內(nèi)比較有名的公司,比如說百度、京東、新浪、網(wǎng)易、騰訊、淘寶等都在使用。
不知道你有沒有聽過虛擬主機(jī)的概念,就是在 Web 服務(wù)里有一個(gè)獨(dú)立的網(wǎng)站站點(diǎn),這個(gè)站點(diǎn)對(duì)應(yīng)獨(dú)立的域名(也可能是IP 或端口),具有獨(dú)立的程序及資源,可以獨(dú)立地對(duì)外提供服務(wù)供用戶訪問。
虛擬主機(jī)有三種類型:基于域名的虛擬主機(jī)、基于端口的虛擬主機(jī)、基于 IP 的虛擬主機(jī)。
Nginx 可以使用一個(gè) server{}
標(biāo)簽來標(biāo)識(shí)一個(gè)虛擬主機(jī),一個(gè) Web 服務(wù)里可以有多個(gè)虛擬主機(jī)標(biāo)簽對(duì),即可以同時(shí)支持多個(gè)虛擬主機(jī)站點(diǎn)。這一點(diǎn),非常的實(shí)用。
最開始的時(shí)候,我以為 Apache 就是 Tomcat,傻傻分不清楚。后來知道它們完全不同,logo 就不同(說什么大實(shí)話)。
Apache 一般是指 Apache HTTP Server,是 Apache 軟件基金會(huì)(和 Tomcat 同屬一家基金會(huì),因此容易混淆)下的一個(gè)網(wǎng)頁服務(wù)器軟件。由于其跨平臺(tái)和安全性,被廣泛使用,是最流行的 Web 服務(wù)器軟件之一。它快速、可靠并且可通過簡單的 API 擴(kuò)展。
我是在服務(wù)器上安裝 WordPress 的時(shí)候用到了 Apache,當(dāng)時(shí)并不知道有 LAMP 的存在,所以安裝的過程中吃了很多苦,關(guān)鍵是最后沒有安裝成功,大寫的尷尬。
最后還是在青銅群里的一個(gè)群友的遠(yuǎn)程幫助下才完成安裝的,他是搞 PHP 的。LAMP 就是他告訴我的,安裝起來非常的傻瓜式,非常適合我這種對(duì)命令行有抗拒心理的程序員。
LAMP 是指一組運(yùn)行動(dòng)態(tài)網(wǎng)站或者服務(wù)器的自由軟件名稱首字母縮寫:
http://localhost:8080
就可以訪問到了。是不是感覺非常輕巧?JFinal 是基于 Java 語言的極速 WEB ORM 框架,其核心設(shè)計(jì)目標(biāo)是開發(fā)迅速、代碼量少、學(xué)習(xí)簡單、功能強(qiáng)大、輕量級(jí)、易擴(kuò)展、Restful。
聯(lián)系客服