lnmp的搭建及php加速
LNMP:Nginx、MySQL、PHP、phpMyAdminweb生產(chǎn)環(huán)境。?
????Nginx(發(fā)音同?engine?x)是一款輕量級(jí)的Web?服務(wù)器/反向代理服務(wù)器及電子郵件(IMAP/POP3)代理服務(wù)器,并在一個(gè)BSD-like?協(xié)議下發(fā)行。由俄羅斯的程序設(shè)計(jì)師Igor?Sysoev所開(kāi)發(fā),供俄國(guó)大型的入口網(wǎng)站及搜索引擎Rambler使用。其特點(diǎn)是占有內(nèi)存少,并發(fā)能力強(qiáng),事實(shí)上nginx的并發(fā)能力確實(shí)在同類(lèi)型的網(wǎng)頁(yè)服務(wù)器中表現(xiàn)較好.中國(guó)大陸使用nginx網(wǎng)站用戶(hù)有:新浪、網(wǎng)易、?騰訊等。淘寶有2次開(kāi)發(fā)Nginx版本tengine地址:http://tengine.taobao.org/。
????Nginx?是一個(gè)很強(qiáng)大的高性能Web和反向代理服務(wù)器,它具有很多非常優(yōu)越的特性:
????在高連接并發(fā)的情況下,Nginx是Apache服務(wù)器不錯(cuò)的替代品:Nginx在美國(guó)是做虛擬主機(jī)生意的老板們經(jīng)常選擇的軟件平臺(tái)之一。能夠支持高達(dá)?50,000?個(gè)并發(fā)連接數(shù)的響應(yīng),感謝Nginx為我們選擇了?epoll?and?kqueue作為開(kāi)發(fā)模型。
Nginx作為負(fù)載均衡服務(wù)器:Nginx?既可以在內(nèi)部直接支持?Rails?和?PHP?程序?qū)ν膺M(jìn)行服務(wù),也可以支持作為?HTTP代理服務(wù)器對(duì)外進(jìn)行服務(wù)。Nginx采用C進(jìn)行編寫(xiě),不論是系統(tǒng)資源開(kāi)銷(xiāo)還是CPU使用效率都比?Perlbal?要好很多。
Nginx代碼完全用C語(yǔ)言從頭寫(xiě)成,已經(jīng)移植到許多體系結(jié)構(gòu)和操作系統(tǒng),包括:Linux、FreeBSD、Solaris、Mac?OS?X、AIX以及Microsoft?Windows。Nginx有自己的函數(shù)庫(kù),并且除了zlib、PCRE和OpenSSL之外,標(biāo)準(zhǔn)模塊只使用系統(tǒng)C庫(kù)函數(shù)。而且,如果不需要或者考慮到潛在的授權(quán)沖突,可以不使用這些第三方庫(kù)。
????作為郵件代理服務(wù)器:Nginx?同時(shí)也是一個(gè)非常優(yōu)秀的郵件代理服務(wù)器(最早開(kāi)發(fā)這個(gè)產(chǎn)品的目的之一也是作為郵件代理服務(wù)器),Last.?fm?描述了成功并且美妙的使用經(jīng)驗(yàn)。
Nginx?是一個(gè)安裝非常的簡(jiǎn)單,配置文件非常簡(jiǎn)潔(還能夠支持perl語(yǔ)法),Bugs非常少的服務(wù)器:Nginx?啟動(dòng)特別容易,并且?guī)缀蹩梢宰龅?*24不間斷運(yùn)行,即使運(yùn)行數(shù)個(gè)月也不需要重新啟動(dòng)。你還能夠不間斷服務(wù)的情況下進(jìn)行軟件版本的升級(jí)。-----以上摘自百度文庫(kù)、
pcre提供Nginx的URL?Rewrite正則表達(dá)式規(guī)則的支持,在多數(shù)正規(guī)網(wǎng)站服務(wù)器上是必須安裝的,因?yàn)槲覀兌鄶?shù)情況是需要Rewrite規(guī)則的支持的,只有少數(shù)情況下不需要Rewrite規(guī)則的時(shí)候(例如某些測(cè)試服務(wù)器等)。
pcre的在不同平臺(tái)安裝的時(shí)候,可能因?yàn)槟承┉h(huán)境因素導(dǎo)致編譯安裝失敗,如果必須安裝而又安裝不上也不必?fù)?dān)心,在后面的安裝過(guò)程中會(huì)有其他方法補(bǔ)救。
Ldconfig?是什么?
它是一個(gè)程序,通常它位于/sbin下,供root用戶(hù)使用。它的作用是將/etc/ld.so.conf列出的路徑下的庫(kù)文件,緩存到/etc/ld.so.cache以供使用,因此當(dāng)安裝完一些庫(kù)文件,或者修改ld.so.conf增加新的庫(kù)路徑后,需要運(yùn)行一下/sbin/ldconfig,使所有的庫(kù)文件都被緩存到ld.so.cache中,如果沒(méi)做,即使庫(kù)文件在/usr/lib下的,也是不會(huì)被使用的,結(jié)果編譯過(guò)程中報(bào)錯(cuò),缺少庫(kù)。所以再改動(dòng)庫(kù)文件一定要運(yùn)行l(wèi)dconfig,在任何目錄下運(yùn)行都可以。
優(yōu)點(diǎn)與缺點(diǎn)對(duì)比:
select?和epoll效率差的原因:?
select是輪詢(xún)、epoll是觸發(fā)式的,所以在特定的應(yīng)用上效率相差會(huì)很多
Select:?
1.Socket數(shù)量限制:該模式可操作的Socket數(shù)由FD_SETSIZE決定,內(nèi)核默認(rèn)32*32=1024.?
2.操作限制:通過(guò)遍歷FD_SETSIZE(1024)個(gè)Socket來(lái)完成調(diào)度,不管哪個(gè)Socket是活躍的,都遍歷一遍.?
Poll:?
1.Socket數(shù)量幾乎無(wú)限制:該模式下的Socket對(duì)應(yīng)的fd列表由一個(gè)數(shù)組來(lái)保存,?大小不限(默認(rèn)4k).?
2.操作限制:同Select.?
Epoll:?
1.Socket數(shù)量無(wú)限制:同Poll?
2.操作無(wú)限制:基于內(nèi)核提供的反射模式,有活躍Socket時(shí),?內(nèi)核訪(fǎng)問(wèn)該Socket的callback,不需要遍歷輪詢(xún).但是當(dāng)所有Socket都活躍的時(shí)候,這時(shí)候所有的callback都被喚醒,會(huì)導(dǎo)致資源的競(jìng)爭(zhēng).既然都是要處理所有的Socket,那么遍歷是最簡(jiǎn)單最有效的實(shí)現(xiàn)方式.
?
?
Php于nginx是采用fastcGI結(jié)合的(服務(wù))監(jiān)聽(tīng)地址127.0.0.1監(jiān)聽(tīng)端口是9000
對(duì)于lnmp首先nginx80端口來(lái)鏈接fastcgi自己是一個(gè)服務(wù)提供9000負(fù)責(zé)與動(dòng)態(tài)程序php進(jìn)行交談,php有可能連接數(shù)據(jù)庫(kù),然后再去鏈接數(shù)據(jù)庫(kù)mysql.
?
???lnmp搭建?
????安裝mysql綠色軟件包(二進(jìn)制安裝)
參考網(wǎng)址:http://dev.mysql.com/doc/refman/5.1/zh/index.html
環(huán)境:mysql-5.5.15-linux2.6-i686.tar.gz
步驟:
1.tar?-zxvf?mysql-5.5.15-linux2.6-i686.tar.gz?-C?/usr/local?拆包
2.ln?-s?mysql-5.5.15-linux2.6-i686?mysql???做符號(hào)鏈接
3.groupadd?-r?mysql
4.useradd?-r?-gmysqlmysql?-s?/sbin/nologin
5.chown?-R?mysql:mysql?.????更改當(dāng)前目錄的所有者和所屬組屬于mysql
6.scripts/mysql_install_db?--user=mysql?初始化數(shù)據(jù)庫(kù)
7.chown?-R?root?.
8.chown?-R?mysql?data/???當(dāng)mysql進(jìn)行運(yùn)行的時(shí)候可以對(duì)data這個(gè)目錄進(jìn)行寫(xiě)數(shù)據(jù)
9.圖1
10.cp?support-files/my-medium.cnf?/etc/my.cnf???????復(fù)制mysql的配置文件
11.cp?support-files/mysql.server/etc/init.d/mysqld??復(fù)制控制文件
12.圖2
13.vim?/etc/profile????寫(xiě)入44行???PATH=$PATH:/usr/local/mysql/bin搜索路徑
14.vim?/etc/ld.so.conf.d/mysql.conf???寫(xiě)入/usr/local/mysql/lib???刷新緩存ldconfig
15.ldconfig?-pv?|grep?mysql??測(cè)試庫(kù)文件是否被加載進(jìn)入
16.ln?-s?/usr/local/mysql/include/usr/include/mysql?為頭文件創(chuàng)建一個(gè)符號(hào)鏈接
17.mysqladmin?-u?root?-p?password?'123'
?
安裝nginx(源碼安裝)
環(huán)境:libevent-2.0.16-stable.tar.gznginx-1.0.11.tar.gz??pcre-devel-6.6-2.el5_1.7.i386.rpm
步驟:
1.tar?-zxvf?libevent-2.0.16-stable.tar.gz?-C?/usr/local/src
2.cd?/usr/local/src
3../configure--prefix=/usr/local/libevent?指明安裝目錄
4.make
5.make?install
6.圖3
7.vim?/etc/ld.so.conf.d/libevent.conf??寫(xiě)入??/usr/local/libevent/lib?
8.ldconfig
9.ldconfig?–pv?|gerp?libevent
10.ln?-s?/usr/local/libevent/include???/usr/include/libevent
11.mkdir?/mnt/cdrom?(這里指掛載本機(jī)器上的光盤(pán),PCRE庫(kù)nginx需要有正則表達(dá)式的支持)
12.mount?/dev/cdrom/mnt/cdrom/
13.rpm?–ivh?/mnt/cdrom/Server/?pcre-devel-6.6-2.el5_1.7.i386.rpm
14.tar?-zxvf?nginx-1.0.11.tar.gz?-C?/usr/local/src/?(安裝nginx)
15.groupadd?–r?nginx
16.useradd?-r?-g?nginx?-s?/sbin/nologinnginx
17../configure?\
-conf-path=/etc/nginx/nginx.conf?\
--error-log-path=/var/log/nginx/error.log?\
--http-log-path=/var/log/nginx/access.log?\
--pid-path=/var/run/nginx/nginx.pid?\
--lock-path=/var/lock/nginx.lock?\
--user=nginx?\
--group=nginx?\
--with-http_ssl_module?\
--with-http_flv_module?\
--with-http_stub_status_module?\安裝狀態(tài)監(jiān)控模塊
--with-http_gzip_static_module?\
????--http-client-body-temp-path=/var/tmp/nginx/client/?\
--http-proxy-temp-path=/var/tmp/nginx/proxy/?\
--http-fastcgi-temp-path=/var/tmp/nginx/fcgi/?\
--with-pcre
18.mkar&&make?install
19.cd?/usr/local/nginx/
圖4
20.mkdir?-pv?/var/tmp/nginx/clien
21.chmod?a+x?nginx
22.vim?nginx附件控制腳本讓80端口自動(dòng)起來(lái)(查看附件)
23.chkconfig?–add?nginxnginx交給chkconfig來(lái)管理
24.chkonfig?–list?|grep?nginx查看在5種級(jí)別下是否啟用
?
PHP安裝(源碼)新版本PHP都可以支持fastcgi的
環(huán)境:php-5.4.13.tar.bz2
步驟:
1.tar?–jxvf?php-5.4.13.tar.bz2?–C?/usr/local/src
2.cd?/usr/local/src?
3../configure\
--prefix=/usr/local/php?\
--enable-fpm\
--enable-sockets\
--with-mysql=/usr/local/mysql?\
????--with-mysqli=/usr/local/mysql/bin/mysql_config\
--enable-mbstring\
--enable-xml\
--with-png-dir?\
--with-png\
--with-jpeg-dir\
--with-zlib\
--with-freetype-dir?\
--with-config-file-path=/etc/php?\
--with-config-file-scan-dir=/etc/php5.d
4.make?&&?make?install
5.cd?/usr/local/src/php
6.vim?/etc/profile?寫(xiě)入??:/usr/local/php/bin
7.?.?/etc/profile測(cè)試?echo?$PATH是否加入
8.mkdir?/etc/php??/etc/php5.d
9.cp?php.ini-production???/etc/php/php.ini
10.cp?sapi/fpm/init.d.php-fpm??/etc/init.d/php-fpm?(php-fpm的控制腳本)
11.chmod???a+x??/etc/init.d/php-fpm
12.cd?/uer/local/php/etc/
13.cp?php-fpm.conf.default???php-fpm.conf
14.service?php-fpm?start啟動(dòng)fpm(fpm是fastcgi的管理器)
15.netstart?–tupln?|grep?fpm查看fpm的端口9000
圖5
16.chkconfig?--add?php-fpmchkconfig--list?|grep?php?查看需要傳遞nginx,當(dāng)php頁(yè)面?zhèn)鬟f過(guò)來(lái)怎樣訪(fǎng)問(wèn)9000端口
17.vim/etc/nginx/nginx.conf
圖6
圖7
syntax:?location?[=|~|~*|^~|@]/uri/?{....}
~?表示按大小寫(xiě)匹配
~*?不區(qū)分字符的大小寫(xiě)
^~?禁止做正則表達(dá)式匹配的
=?表示精確匹配
如?location/bbs不加=號(hào)碼表示匹配bbs目錄下的所有的對(duì)象,包括子目錄下的對(duì)象加=號(hào)表示之匹配bbs下的對(duì)象,不包括子目錄中的
18.service?nginx?restart?重新啟動(dòng),更改了配置文件則需要重新啟動(dòng)
19.service?php-fpm?restart?
?
測(cè)試?nginx?
圖8
1.cd/usr/local/nginx/html/
2.mv?index.html?index.php
3.vim?index.php
圖9
圖10
4service?mysql?stop
圖11
圖12
?
實(shí)現(xiàn)xcache對(duì)PHP加速
Zend?Xcache??Eaccelerate都可以實(shí)現(xiàn)對(duì)php加速
Zend?Studio是專(zhuān)業(yè)開(kāi)發(fā)人員在使用PHP整個(gè)開(kāi)發(fā)周期中唯一的集成開(kāi)發(fā)環(huán)境(IDE),它包括了PHP所有必須的開(kāi)發(fā)部件。通過(guò)一整套編輯、調(diào)試、分析、優(yōu)化和數(shù)據(jù)庫(kù)工具,Zend?Studio加速開(kāi)發(fā)周期,并簡(jiǎn)化復(fù)雜的應(yīng)用方案。特點(diǎn):⑴快速代碼開(kāi)發(fā)與配置本地和遠(yuǎn)程調(diào)試器;⑵數(shù)據(jù)庫(kù)連通性&SQL工具團(tuán)隊(duì)合作環(huán)境;⑶完全PHP?4/PHP?5切換PHPDocs/PHP文檔處理程序支持;⑷SFTP、FTP以至SSH的安全連接100個(gè)以上代碼摘錄;⑸50個(gè)以上樣品數(shù)據(jù)庫(kù)應(yīng)用程序與Zend?Platform組合。
XCache?是一個(gè)開(kāi)源的?opcode?緩存器/優(yōu)化器,?這意味著他能夠提高您服務(wù)器上的?PHP?性能.?他通過(guò)把編譯?PHP?后的數(shù)據(jù)緩沖到共享內(nèi)存從而避免重復(fù)的編譯過(guò)程,?能夠直接使用緩沖區(qū)已編譯的代碼從而提高速度.?通常能夠提高您的頁(yè)面生成速率?2?到5?倍,?降低服務(wù)器負(fù)載.
eAccelerator是一個(gè)自由開(kāi)放源碼php加速器,優(yōu)化和動(dòng)態(tài)內(nèi)容緩存,提高了php腳本的緩存性能,使得PHP腳本在編譯的狀態(tài)下,對(duì)服務(wù)器的開(kāi)銷(xiāo)幾乎完全消除。它還有對(duì)腳本起優(yōu)化作用,以加快其執(zhí)行效率。使您的PHP程序代碼執(zhí)效率能提高1-10倍;首先您要安裝好PHP,然后再來(lái)編譯安裝?eaccelerator。
環(huán)境:xcache-2.0.1.tar.gz
步驟:
1.tar?-zxvf?xcache-2.0.1.tar.gz?-C?/usr/local/src/拆解
2.cd?/usr/local/src/xcache-2.0.1/
3.圖13
4.圖14
5.phpize?或者執(zhí)行/usr/local/php/bin/phpize?(phpize命令是用來(lái)準(zhǔn)備?PHP?擴(kuò)展庫(kù)的編譯環(huán)境的)
6.圖15
7../configure--enable-xcache--with-php-config=/usr/local/php/bin/php-config
8.make
9.make?install
10.cd?/usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/?
11.cd?/usr/local/src/xcache-2.0.1其中有個(gè)xcache.ini?初始化文件
12.cp?xcache.ini?/etc/php5.d/拷貝的php5.d(額外功能配置存放的目錄)PHP在工作的時(shí)候會(huì)自動(dòng)掃描這個(gè)目錄,怎樣才能掃描到呢
13.vim?xcache.ini
圖18
14.測(cè)試
15.vim?/usr/local/nginx/html/index.php
16.圖20
17.圖19
18.另外我們可以使用xcache圖形的界面來(lái)管理加速
19.cd?/usr/local/src/xcache-2.0.1/admin
20.圖21
21.圖22
22.物理目錄訪(fǎng)問(wèn)
23.cp?-r?admin/?/usr/local/nginx/html/
24.cd?/usr/local/nginx/html/
25.chmod?a+rx?admin/
圖23
圖24
26.chmod?o+r?index.php
27.cd?/etc/php5.d/(對(duì)xcache進(jìn)行加密管理,限制其他用戶(hù)只有輸入密碼才可以訪(fǎng)問(wèn))
圖25
echo?-n?"admin"?|md5?sum?可以實(shí)現(xiàn)MD5的加密
圖26
29.servicephp-fpm?restart
?
附件:http://down.51cto.com/data/2363459
本文轉(zhuǎn)自 only223wym 51CTO博客,原文鏈接:http://blog.51cto.com/ymchaofeng/1292345,如需轉(zhuǎn)載請(qǐng)自行聯(lián)系原作者 《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專(zhuān)家共同創(chuàng)作,文字、視頻、音頻交互閱讀
總結(jié)
以上是生活随笔為你收集整理的lnmp的搭建及php加速的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: linux查找文件里面的内容
- 下一篇: cisco dhcp vlan vrrp