一、基本概念
實驗1: 在阿裡雲上部署Tomcat伺服器
點選詳情業務背景
Tomcat為網站的伺服器,每個網站在後面都有一個伺服器來解析那個網頁,Tomcat 對于 Java 來說它就是一個 Servlet 處理器,支援運作基于 Servlet 的 Java 程式,同時 JSP 本身也是基于 Servlet 的技術,也是支援的,像傳說中的 Spring, Struts, JSF 都是基于 Servlet 的,都可以在 Tomcat 上跑起來。
技術背景
Tomcat是Apache 軟體基金會(Apache Software Foundation)的Jakarta 項目中的一個核心項目,由Apache、Sun 和其他一些公司及個人共同開發而成。由于有了Sun 的參與和支援,最新的Servlet 和JSP 規範總是能在Tomcat 中得到展現,Tomcat 5支援最新的Servlet 2.4 和JSP 2.0 規範。因為Tomcat 技術先進、性能穩定,而且免費,因而深受Java 愛好者的喜愛并得到了部分軟體開發商的認可,成為目前比較流行的Web 應用伺服器。
Tomcat 伺服器是一個免費的開放源代碼的Web 應用伺服器,屬于輕量級應用伺服器,在中小型系統和并發通路使用者不是很多的場合下被普遍使用,是開發和調試JSP 程式的首選。
實驗2: 快速搭建和部署LAMP環境
LAMP是指Linux(作業系統),ApacheHTTP伺服器,MySQL(有時也指MariaDB,資料庫軟體)和PHP(有時也指Perl或Python)的第一個字母,一般用來建立web應用平台。雖然這些開放源代碼程式,本身并不是專門設計成同另幾個程式一起工作的,但由于它們的免費和開源,這個組合開始流行(大多數Linux發行版本捆綁了這些軟體)。當一起使用的時候,它們表現的像一個具有活力的解決方案包。和Java/J2EE架構相比,LAMP具有Web資源豐富、輕量、快速開發等特點,微軟的.NET架構相比,LAMP具有通用、跨平台、高性能、低價格的優勢,是以LAMP無論是性能、品質還是價格都是企業搭建網站的首選平台。Apache是LAMP架構最核心的Web Server,開源、穩定、子產品豐富是Apache的優勢。但Apache的缺點是有些臃腫,記憶體和CPU開銷大,性能上有損耗,不如一些輕量級的Web伺服器(例如nginx)高效,輕量級的Web伺服器對于靜态檔案的響應能力來說遠高于Apache伺服器。Apache做為Web Server是負載PHP的最佳選擇,如果流量很大的話,可以采用nginx來負載非PHP的Web請求。nginx是一個高性能的HTTP和反向代理伺服器,Nginx以它的穩定性、豐富的功能集、示例配置檔案和低系統資源的消耗而聞名。Nginx不支援PHP和CGI等動态語言,但支援負載均衡和容錯,可和Apache配合使用,是輕量級的HTTP伺服器的首選。
PHP的加速使用eAccelerator加速器,eAccelerator是一個自由開放源碼PHP加速器,優化和動 态内容緩存,提高了性能PHP腳本的緩存性能,使得PHP腳本在編譯的狀态下,對伺服器的開銷幾乎完全消除。它還有對腳本起優化作用,以加快其執行效率。 使PHP程式代碼執效率能提高1-10倍。
開源的資料庫中,MySQL在性能、穩定性和功能上是首選,可以達到百萬級别的資料存儲,網站初期可以将MySQL和Web伺服器放在一起,但是當通路量達到一定規模後,應該将MySQL資料庫從Web Server上獨立出來,在單獨的伺服器上運作,同時保持Web Server和MySQL伺服器的穩定連接配接。
實驗3: 在阿裡雲上部署LNMP
LNMP簡介
LNMP代表的就是:Linux系統下Nginx+MySQL+PHP這種網站伺服器架構。
Linux:是一類Unix計算機作業系統的統稱,是目前最流行的免費作業系統。代表版本有:debian、centos、ubuntu、fedora、gentoo等。
Nginx:是一個高性能的HTTP和反向代理伺服器,也是一個IMAP/POP3/SMTP代理伺服器。
Mysql:是一個小型關系型資料庫管理系統。
PHP:是一種在伺服器端執行的嵌入HTML文檔的腳本語言。
這四種軟體均為免費開源軟體,組合到一起,成為一個免費、高效、擴充性強的網站服務系統。
Nginx簡介和使用場景
Nginx是俄羅斯人編寫的十分輕量級的HTTP伺服器,Nginx,它的發音為 “engine X”, 是一個高性能的HTTP和反向代理伺服器,同時也是一個IMAP/POP3/SMTP 代理伺服器.Nginx是由俄羅斯人 Igor Sysoev為俄羅斯通路量第二的 Rambler.ru站點開發的,它已經在該站點運作超過三年了。Igor Sysoev在建立的項目時,使用基于BSD許可。
為什麼Nginx的性能要比Apache高得多?這得益于Nginx使用了最新的epoll(Linux 2.6核心)和kqueue(freebsd)網絡I/O模型,而Apache則使用的是傳統的select模型。目前Linux下能夠承受高并發通路的 Squid、Memcached都采用的是epoll網絡I/O模型。
處理大量的連接配接的讀寫,Apache所采用的select網絡I/O模型非常低效。下面用一個比喻來解析Apache采用的select模型和Nginx采用的epoll模型進行之間的差別:假設你在大學讀書,住的宿舍樓有很多間房間,你的朋友要來找你。select版宿管大媽就會帶着你的朋友挨個房間去找,直到找到你為止。而epoll版 宿管大媽會先記下每位同學的房間号,你的朋友來時,隻需告訴你的朋友你住在哪個房間即可,不用親自帶着你的朋友滿大樓找人。如果來了10000個人,都要 找自己住這棟樓的同學時,select版和epoll版宿管大媽,誰的效率更高,不言自明。同理,在高并發伺服器中,輪詢I/O是最耗時間的操作之 一,select和epoll的性能誰的性能更高,同樣十分明了。
在高并發連接配接的情況下,Nginx是Apache伺服器不錯的替代品。Nginx同時也可以作為7層負載均衡伺服器來使用。Nginx 0.8.46 + PHP 5.2.14 (FastCGI) 可以承受3萬以上的并發連接配接數,相當于同等環境下Apache的10倍。
需要用到雲伺服器的話,可以關注
阿裡雲·雲小站