LNMP 代表的就是:Linux系統下Nginx+MySQL+PHP這種網站伺服器架構。
本次測試需求:
**實踐centos6.5編譯安裝 LNMP生産環境 架構 web生産環境 使用 ngx_pagespeed 優化前端 xcache 優化php 用 google_perftools 優化nginx 和 php記憶體配置設定 **
作為 Web 伺服器:相比 Apache,Nginx 使用更少的資源,支援更多的并發連接配接,展現更高的效率。 作為負載均衡伺服器:Nginx 既可以在内部直接支援Rails和PHP,也可以支援作為 HTTP代理伺服器對外進行服務。Nginx 用C編寫,不論是系統資源開銷還是CPU使用效率都比Perlbal要好的多。 作為郵件代理伺服器:Nginx同時也是一個非常優秀的郵件代理伺服器(最早開發這個産品的目的之一也是作為郵件代理伺服器),Last/fm 描述了成功并且美妙的使用經驗。 Nginx安裝非常的簡單,配置檔案非常簡潔(還能夠支援perl文法)。Nginx支援平滑加載新的配置,還能夠在不間斷服務的情況下進行軟體版本的更新。
LNMP 這種架構是以也就非常流行,尤其VPS和雲主機的出現,更加推動了,LNMP 的架構發展融合,從php5.4開始就已經原生的支援了php-fpm的方式。PHP-FPM是一個PHP FastCGI管理器,不再是第三方的包了, PHP-FPM 提供了更好的PHP程序管理方式,可以有效控制記憶體和程序、可以平滑重載PHP配置,比spawn-fcgi具有更多優點。
準備工作:
最小化安裝centos6.5
建立一個軟體包目錄存放
清理已經安裝包
selinux可能會緻使編譯安裝失敗,我們先禁用它。永久禁用,需要重新開機生效
臨時禁用,不需要重新開機 <code>setenforce 0</code>
安裝必備工具
按照标準需要給mysql建立所屬使用者和使用者組
centos最小化安裝後,會有mysql的庫是以先解除安裝!
MySQL從5.5版本開始,通過./configure進行編譯配置方式已經被取消,取而代之的是cmake工具。 是以,我們首先要在系統中源碼編譯安裝cmake工具。
使用cmake來編譯安裝mysql5.6.17
修改/usr/local/mysql權限
關于my.cnf配置檔案:
在啟動MySQL服務時,會按照一定次序搜尋my.cnf,先在/etc目錄下找,找不到則會搜尋”$basedir/my.cnf” 就是安裝目錄下 /usr/local/mysql/my.cnf,這是新版MySQL的配置檔案的預設位置! 注意:在CentOS 6.x版作業系統的最小安裝完成後,在/etc目錄下會存在一個my.cnf,需要将此檔案更名為其他的名字。 如:/etc/my.cnf.bak,否則,該檔案會幹擾源碼安裝的MySQL的正确配置,造成無法啟動。 由于我們已經解除安裝了最小安裝完成後的mysq庫是以,就沒必要操作了。
進入support-files目錄
執行初始化配置腳本,建立系統自帶的資料庫和表,注意配置檔案的路徑
拷貝mysql安裝目錄下support-files服務腳本到init.d目錄
設定開機啟動
MySQL5.6.x啟動成功後,root預設沒有密碼,我們需要設定root密碼。 設定之前,我們需要先設定PATH,要不,不能直接調用mysql
讓配置立即生效
登陸測試,預設是沒有密碼,直接回車就可進入
設定mysql密碼
登陸進指令行模式
檢視使用者
删除不必要的使用者
賦予賬号遠端通路的權限
關于删除MySQL的預設root使用者參考:http://blog.chinaunix.net/uid-16844903-id-3377690.html
其它一些資訊查詢: 檢查mysql版本
驗證mysql安裝路徑
安裝PHP5.5.12
安裝依賴關系
libiconv庫為需要做轉換的應用提供了一個iconv()的函數,以實作一個字元編碼到另一個字元編碼的轉換。 錯誤提示:configure: error: Please reinstall the iconv library.
libmcrypt是加密算法擴充庫。 錯誤提示:configure: error: Cannot find imap library (libc-client.a). Please check your c-client installation.
Mhash是基于離散數學原理的不可逆向的php加密方式擴充庫,其在預設情況下不開啟。 mhash的可以用于建立校驗數值,消息摘要,消息認證碼,以及無需原文的關鍵資訊儲存 錯誤提示:configure: error: “You need at least libmhash 0.8.15 to compile this program. http://mhash.sf.net/”
mcrypt 是 php 裡面重要的加密支援擴充庫,Mcrypt擴充庫可以實作加密解密功能,就是既能将明文加密,也可以密文還原。
編譯mcrypt可能會報錯:configure: error: *** libmcrypt was not found
編譯mcrypt可能會報錯:/bin/rm: cannot remove `libtoolT': No such file or directory
正式開始編譯php!
修改fpm配置php-fpm.conf.default檔案名稱
複制php.ini配置檔案
複制php-fpm啟動腳本到init.d
賦予執行權限
添加為啟動項
按照标準,給php-fpm建立一個指定的使用者群組
立即啟動php-fpm
回到/usr/local/src/目錄
nginx所需的依賴關系,一般我們都需要先裝pcre, zlib,前者為了重寫rewrite,後者為了gzip壓縮。如果系統已經yum 安裝了這些庫也沒關系,無需解除安裝。直接編譯安裝最新的就可以了。為了一次性完成編譯,先準備編譯下面的依賴關系!
1.安裝PCRE庫
2.安裝zlib庫
3.安裝ssl
4.安裝ngx_pagespeed庫 ngx_pagespeed 是一個 Nginx 的擴充子產品,可以加速你的網站,減少頁面加載時間,它會自動将一些提升web性能的實踐應用到網頁和相關的資源(CSS、JS和圖檔)上,無需你修改内容和流程。
按照Google的說法,ngx_pagespeed子產品已經被一些客戶用于生産環境之中了,包括CDN提供商MaxCDN,按照它的報告該子產品使得“頁 面平均加載時間降低了1.57秒、跳出率降低了1%并且退出百分比下降了2.5%”。WordPress主機服務商ZippyKid說,在使用NGINX 的PageSpeed之後,“頁面大小降低了75%并且頁面的渲染時間提高了50%”。
5、使用google-perftools提供的TCMalloc工具優化nginx和mysql
TCMalloc (google-perftools) 是用于優化C++寫的多線程應用,比glibc 2.3的malloc快。這個子產品可以用來讓MySQL在高并發下記憶體占用更加穩定.
TCMalloc是google-perftools的其中一個工具,用于優化記憶體配置設定的效率和速度,幫助在高并發的情況下很好的控制記憶體的使用。
在mysql 和nginx 性能優化方案中,大多數教程都是使用google-perftools提供的TCMalloc工具,TCMalloc在記憶體的配置設定上效率和速度要比malloc高得多。
錯誤提示:configure: error: No frame pointers and no libunwind. The compilation will fail 是因為你沒安裝libunwind庫就開始編譯gperftools了,是以必須先libunwind
按照官方的說明,必然選擇最新版本。
準備工作完成,現在開始安裝nginx!,這裡添加了前面準備的庫關系,注意路徑!
6、修改nginx.conf 配置檔案
在server塊裡面 開啟 ngx_pagespeed 子產品
開啟 google_perftools 調優支援
驗證tcmalloc運作狀态,這是僅開啟了一個worker_processes的效果
使用TCMalloc (google-perftools) 可以用來讓MySQL在高并發下記憶體占用更加穩定。
使用xcache優化php性能。
安裝phpmyadmin
nginx 重新開機,啟動,載入腳本
注意需要賦予執行的權限:chmod +x /etc/init.d/nginx
經過優化的nginx.cnf配置檔案
根據需要為虛拟主機增加了ngx_pagespeed google_perftools
php-fpm優化,注意一個fpm程序大約20M,我這個機器是小記憶體的雲主機,是以開啟2個就可以。大記憶體的話,根據情況換算。
本文轉自yzy121403725 51CTO部落格,原文連結:http://blog.51cto.com/lookingdream/1772754,如需轉載請自行聯系原作者