基礎運維終章:深入淺出LAMP架構

一、LAMP之初成牛犢

1.LAMP定義

LAMP指的Linux(操作系統)、ApacheHTTP 服務器,MySQL(有時也指MariaDB,數據庫軟件) 和PHP(有時也是指Perl或Python) 的第一個字母,一般用來建立web應用平臺。
.
雖然這些開放源代碼程序本身並不是專門設計成同另幾個程序一起工作的,但由於它們的免費和開源,這個組合開始流行(大多數Linux發行版本捆綁了這些軟件)。當一起使用的時候,它們表現的像一個具有活力的解決方案包。其他的方案包有蘋果的WebObjects(最初是應用服務器),Java/J2EE和微軟的.NET架構。
.
LAMP包的腳本組件中包括了CGIweb接口,它在90年代初期變得流行。這個技術允許網頁瀏覽器的用戶在服務器上執行一個程序,並且和接受靜態的內容一樣接受動態的內容。程序員使用腳本語言來創建這些程序因爲它們能很容易有效的操作文本流,甚至當這些文本流並非源自程序自身時也是。正是由於這個原因系統設計者經常稱這些腳本語言爲膠水語言。

2.LAMP專業名詞解釋

Linux
Linux 是免費開源軟件,這意味着源代碼可用的操作系統。

Apache
Apache 是使用中最受歡迎的一個開放源碼的WEB服務器軟件。

MySQL
MySQL 是多線程、多用戶的SQL數據庫管理系統。
MySQL 已由Oracle公司自 2010 年 1 月 27 日通過SUN購買。SUN 最初於 2008 年 2 月 26 日收購 MySQL。

PHP,Perl 或 Python
PHP 是一種編程語言最初設計生產動態網站。PHP 是主要用於服務器端的應用程序軟件。Perl 和 Python 類似。

3.LAMP架構及方案

1.LAMP架構圖
基礎運維終章:深入淺出LAMP架構

2.實現網站方案

LAMP(Linux- Apache-MySQL-PHP)網站架構是目前國際流行的Web框架,該框架包括:Linux操作系統,Apache網絡服務器,MySQL數據 庫,Perl、PHP或者Python編程語言,所有組成產品均是開源軟件,是國際上成熟的架構框架,很多流行的商業應用都是採取這個架構,和 Java/J2EE架構相比,LAMP具有Web資源豐富、輕量、快速開發等特點,微軟的.NET架構相比,LAMP具有通用、跨平臺、高性能、低價格的 優勢,因此LAMP無論是性能、質量還是價格都是企業搭建網站的首選平臺。
對於大流量、大併發量的網站系統架構來說,除了硬件上使用高 性能的服務器、負載均衡、CDN等之外,在軟件架構上需要重點關注下面幾個環節:使用高性能的操作系統(OS)、高性能的網頁服務器(Web Server)、高性能的數據庫(Database)、高效率的編程語言等。

各大網站使用架構如下:
基礎運維終章:深入淺出LAMP架構

操作系統
Linux操作系統有很多個不同的發行版,如Red Hat Enterprise Linux、SUSE Linux Enterprise、Debian、Ubuntu、CentOS等,每一個發行版都有自己的特色,比如RHEL的穩定,Ubuntu的易用,基於穩定性 和性能的考慮,操作系統選擇CentOS(Community ENTerprise Operating System)是一個理想的方案。
.
CentOS(Community ENTerprise Operating System)是Linux發行版之一,是RHEL/Red Hat Enterprise Linux的精簡免費版,和RHEL爲同樣的源代碼,不過,RHEL和SUSE LE等企業版,提供的升級服務均是收費升級,無法免費在線升級,因此要求免費的高度穩定性的服務器可以用CentOS替代Red Hat Enterprise Linux使用。
.
.
Web服務器、緩存和PHP加速
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服務器的首選。
.
Web服務器的緩存也有多種方案,Apache提供了自己的緩存模 塊,也可以使用外加的Squid模塊進行緩存,這兩種方式均可以有效的提高Apache的訪問響應能力。Squid Cache是一個Web緩存服務器,支持高效的緩存,可以作爲網頁服務器的前置cache服務器緩存相關請求來提高Web服務器的速度,把Squid放在 Apache的前端來緩存Web服務器生成的動態內容,而Web應用程序只需要適當地設置頁面實效時間即可。如訪問量巨大則可考慮使用memcache作 爲分佈式緩存。
.
PHP的加速使用eAccelerator加速器,eAccelerator是一個自由開放源碼PHP加速器,優化和動 態內容緩存,提高了性能PHP腳本的緩存性能,使得PHP腳本在編譯的狀態下,對服務器的開銷幾乎完全消除。它還有對腳本起優化作用,以加快其執行效率。 使PHP程序代碼執效率能提高1-10倍。
具體的解決方案有以下幾種:

1、squid + Apache + PHP + eAccelerator
使用Apache負載PHP,使用squid進行緩存,html或圖片的請求可以直接由squid返回給用戶。很多大型網站都採用這種架構。
2、nginx/Apache + PHP(fastcgi) + eAccelerator
使用nginx或Apache負載PHP,PHP使用fastcgi方式運行,效率較高。
3、nginx + Apache + PHP + eAccelerator
此方案綜合了nginx和Apache的優點,使用Apache負載PHP,nginx負責解析其他Web請求,使用nginx的rewrite模塊,Apache端口不對外開放。

.
.

數據庫

開源的數據庫中,MySQL在性能、穩定性和功能上是首選,可以達到百萬級別的數據存儲,網站初期可以將MySQL和Web服務器放在一起,但是當訪問 量達到一定規模後,應該將MySQL數據庫從Web Server上獨立出來,在單獨的服務器上運行,同時保持Web Server和MySQL服務器的穩定連接。
.
當數據庫訪問量達到更大的級別,可以考慮使用MySQL Cluster等數據庫集羣或者庫表散列等解決方案。
總的來說,LAMP架構的網站性能會遠遠優於Windows IIS + ASP + Access(例如月光博客)這樣的網站,可以負載的訪問量也非常大,國內的大量個人網站如果想要支撐大訪問量,採用LAMP架構是一個不錯的方案。

.

綜上所述,基於LAMP架構設計具有成本低廉、部署靈活、快速開發、安全穩定等特點,是Web網絡應用和環境的優秀組合。

二、LAMP之徵戰沙場

1.說明

瞭解知識之後,再做行動,這樣就不會迷茫於只會部署和簡單的使用,搞不懂爲什麼會這樣,什麼是什麼,真正想要了解爲什麼,還需要在安裝完之後,再認證看LAMP架構原理,前有了解,後有原理,知識體系就會呈現在腦海中,更加便於記憶。接下來安裝的部分使用一件安裝包,我不反對親自用源碼安裝包,因爲這樣會更深刻,但想要深入瞭解,還需要自己去發掘,其中的道理都懂,以爲自己以爲的,在自己源碼安裝的過程中,出現不少的問題,解決時間+源碼安裝時間大於學習的時間,我覺得不值得,但一切都是爲了學習,爲了讓自己變得更強大而努力,這又覺得一切都覺得有意義,不要爲了感動自己而感動自己,這樣學習沒意義,定標準約束自己更有歷練。

2.安裝

2.1 下載一鍵安裝包

Centos安裝命令  
yum install -y wget && wget -O install.sh http://download.bt.cn/install/install.sh 

Ubuntu/Deepin安裝命令 
wget -O install.sh http://download.bt.cn/install/install-ubuntu.sh 

Debian安裝命令 
wget -O install.sh http://download.bt.cn/install/install-ubuntu.sh 

Fedora安裝命令 
wget -O install.sh http://download.bt.cn/install/install.sh 

.
2.2 安裝系統面板

基礎運維終章:深入淺出LAMP架構

說明:這是寶塔面板,集成了監測系統內部資源的功能模塊,而安裝LAMP或者LNMP等等架構都是在面板裏點擊操作,適合新手上手,但是不建議用在企業或者生產環境中。特別提醒,安裝好這個面板之後,系統會提醒你開放8888|888|80|443|20|21等端口,前兩個是用於連接面板頁面端口,這樣做是爲了避免與80端口衝突,443是加密端口,20和21是ftp服務使用的端口,前者是傳輸端口,後者是連接端口。

.
2.3 連接面板
在安裝完成之後,會顯示賬號和密碼。(記得保存)
基礎運維終章:深入淺出LAMP架構

.
連接面板
基礎運維終章:深入淺出LAMP架構

.

2.4 選擇安裝服務器架構類型(編譯安裝比較久,所以直接選擇極速安裝)
基礎運維終章:深入淺出LAMP架構

.
2.5 選擇一鍵安裝LAMP,就會顯示安裝過程的日誌界面:
基礎運維終章:深入淺出LAMP架構

.
2.6 查看首頁的服務器狀態
基礎運維終章:深入淺出LAMP架構

.
2.7 面板說明
基礎運維終章:深入淺出LAMP架構

.
2.8 注意消息盒子的安裝狀態
基礎運維終章:深入淺出LAMP架構

.
2.9 設置網頁測試內容

[root@leo wwwroot]# pwd
/www/wwwroot
[root@leo wwwroot]# ls
default
[root@leo wwwroot]# mkdir test
[root@leo wwwroot]# cd test/
[root@leo test]# vim index.html
[root@leo test]# cat index.html 
<h1 align=center>linuxview test web</h1> 
[root@leo test]# 

.

2.10 在面板上添加站點
基礎運維終章:深入淺出LAMP架構

基礎運維終章:深入淺出LAMP架構

.
2.11 設置自定義域名
基礎運維終章:深入淺出LAMP架構

.
2.12 訪問測試網頁
基礎運維終章:深入淺出LAMP架構

.

2.13 放入項目的源代碼
基礎運維終章:深入淺出LAMP架構

說明:放入源碼的項目包之後就在2.10步驟添加網站

三、LAMP架構原理

基礎運維終章:深入淺出LAMP架構

處理一次動態頁面請求,服務器主要經歷:Apache處理請求——通過CGI接口訪問PHP的的應用程序——PHP應用程序調用PHP解釋器執行PHP代碼——PHP程序訪問調用數據庫——最後給客戶做反饋。

1.apache、mariadb和php的主要功能分別如下:

apache主要實現如下功能:
第一:處理http的請求、構建響應報文等自身服務;
第二:配置讓Apache支持PHP程序的響應(通過PHP模塊或FPM);
第三:配置Apache具體處理php程序的方法,如通過反向代理將php程序交給fastcgi處理。

mariadb主要實現如下功能:
第一:提供PHP程序對數據的存儲;
第二:提供PHP程序對數據的讀取(比如讀寫分離)

php主要實現如下功能:
第一:提供apache的訪問接口,即CGI或Fast CGI(FPM);
第二:提供PHP程序的解釋器;
第三:提供mairadb數據庫的連接函數的基本環境。

2.A,M,P聯動工作

1、apache + php結合的方式:
第一種:把php編譯時直接編譯成apache的模塊、module模塊化的方式進行工作(apahce默認的這種方式)。
.
第二種:CGI、通用網關接口、apache基於CGI跟hph通信
.
第三種:fastcgi、是一種協議、在以下模塊結合的:
php做爲一個模塊或是php解析器運行的,不是監聽在某個套接字上接收別人的請求,而是被調用爲一個進程使用的,可能是做爲子進程在運行,但是工作在fastcgi這種模塊下的hph自行啓用爲一個服務進程,監聽在某個套接字上,隨時可以接受來自客戶端的請求,它也是有一個主進程的,爲了可以響應多個用戶的請求,會啓用多個子進程,這些子進程我們也可以稱爲工作進程,但也有空閒進程的,當有客戶請求就馬上使用空閒的進程響應客戶端的請求,將結果返回給前端的調用者,在php5.3.3版本之前是沒有這個的,只能工作在模塊和CGI的方式下,而在5.3.3之後這個模塊直接被收進php模塊中,這種模塊就叫php-fpm。
.
2、php + mysql的通信:
首先httpd並不具備解析代碼的能力,他要依賴於php的解析器,接着php本身不依賴於mysql,他只是一個解析器,能執行代碼就OK了,當要在mysql中讀寫數據時纔用到mysql。
.
php語言要想聯繫mysql,通常用到php的驅動,rpm包的叫php_mysql,php跟mysql沒有一點關係,只有程序員在php中編寫mysql語句時才連接mysql來執行sql語句的。基於php-mysql去連接mysql只使用一個函數mysql_connect();而mysql_connect()正是php-mysql提供的一個API,只要指明要連接的服務器即可。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章