Nginx("engine x") 是一個高性能的HTTP 和 反向代理 服務器。Nginx 是由 IgorSysoev 爲俄羅斯訪問量第二的 Rambler.ru 站點開發的,第一個公開版本0.1.0發佈於2004年10月4日。其將源代碼以類BSD許可證的形式發佈,因它的穩定性、豐富的功能集、示例配置文件和低系統資源的消耗而聞名。2011年6月1日,nginx 1.0.4發佈。Nginx是一款輕量級的Web 服務器/反向代理服務器及電子郵件(IMAP/POP3)代理服務器,並在一個BSD-like 協議下發行。由俄羅斯的程序設計師Igor Sysoev所開發,供俄國大型的入口網站及搜索引擎Rambler(俄文:Рамблер)使用。其特色是佔有內存少,併發能力強,事實上nginx的併發能力確實在同類型的網頁服務器中表現較好,中國大陸使用nginx網站用戶有:百度BWS、新浪、網易、騰訊等。
Tengine 是由淘寶網發起的Web服務器項目。它在Nginx的基礎上,針對大訪問量網站的需求,添加了不少高級功能和特性。Tengine的性能和穩定性已經在大型的網站如淘寶網,天貓商城等獲得了很好的檢驗。(能夠這樣理解:淘寶拿到了Nginx源代碼以後,進行了功能的填充,優化等等,而後提交給Nginx官方,可是因爲Nginx官方相應慢或者不響應,加上語言溝通的不暢,因而淘寶公司就本身打包,在遵循GPL的原則上進行二次開發,因而就出瞭如今的Tengine這個版本)。
1:Nginx是經過php-fpm這個服務來處理php文件2 :Apache是經過libphp5.so這個模塊來處理php文件
輕量級,一樣起web 服務,比apache 佔用更少的內存及資源 ;高併發,nginx 處理請求是異步非阻塞的,而apache 則是阻塞型的,在高併發下nginx 能保持低資源低消耗高性能;高度模塊化的設計,編寫模塊相對簡單;社區活躍,各類高性能模塊出品迅速。
rewrite ,比nginx 的rewrite強大;模塊超多,基本想到的均可以找到;少bug ,nginx 的bug 相對較多;超穩定
存在就是理由,通常來講,須要性能的web 服務,用nginx 。若是不須要性能只求穩定,那就apache 。nginx處理動態請求是雞肋,通常動態請求要apache去作,nginx只適合靜態和反向。
yum -y installmake gcc gcc-c++ flex bison file libtool libtool-libs autoconf kernel-devellibjpeg libjpeg-devel libpng libpng-devel gd freetype freetype-devel libxml2libxml2-devel zlib zlib-devel glib2 glib2-devel bzip2 bzip2-devel libeventncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5-devel libidnlibidn-devel openssl openssl-devel gettext gettext-devel ncurses-develgmp-devel unzip libcap lsof
-- with-http_dav_module # 啓用支持(增長PUT,DELETE,MKCOL:建立集合,COPY和MOVE方法)默認關閉,須要編譯開啓-- with-http_stub_status_module # 啓用支持(獲取Nginx上次啓動以來的工做狀態)-- with-http_addition_module # 啓用支持(做爲一個輸出過濾器,支持不徹底緩衝,分部分相應請求)-- with-http_sub_module # 啓用支持(容許一些其餘文本替換Nginx相應中的一些文本)-- with-http_flv_module # 啓用支持(提供支持flv視頻文件支持)-- with-http_mp4_module # 啓用支持(提供支持mp4視頻文件支持,提供僞流媒體服務端支持)--with-pcre=/usr/local/src/pcre-8.37 # 須要注意,這裏指的是源碼,用#./configure --help |grep pcre查看幫助
#!/bin/bash# chkconfig: -99 2# description:Nginx Service Control ScriptPROG="/usr/local/nginx/sbin/nginx"PIDF="/usr/local/nginx/logs/nginx.pid"case"$1" instart)$PROG;;stop)kill -3 $(cat $PIDF);;restart)$0 stop &> /dev/nullif [ $? -ne 0 ] ; then continue ; fi$0 start;;reload)kill -1 $(cat $PIDF);;*)echo "Userage: $0 { start | stop |restart | reload }"exit 1esacexit 0
[root@xuegod63 ~]#cmake \-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \-DDEFAULT_CHARSET=utf8 \-DDEFAULT_COLLATION=utf8_general_ci \-DWITH_EXTRA_CHARSETS=all \-DWITH_MYISAM_STORAGE_ENGINE=1\-DWITH_INNOBASE_STORAGE_ENGINE=1\-DWITH_MEMORY_STORAGE_ENGINE=1\-DWITH_READLINE=1\-DENABLED_LOCAL_INFILE=1\-DMYSQL_DATADIR=/usr/local/mysql/data \-DMYSQL-USER=mysql
CMAKE_INSTALL_PREFIX :指定MySQL程序的安裝目錄,默認/usr/local/mysqlDEFAULT_CHARSET :指定服務器默認字符集,默認latin1DEFAULT_COLLATION :指定服務器默認的校對規則,默認latin1_general_ciENABLED_LOCAL_INFILE :指定是否容許本地執行LOAD DATA INFILE,默認OFFWITH_COMMENT :指定編譯備註信息WITH_xxx_STORAGE_ENGINE :指定靜態編譯到mysql的存儲引擎,MyISAM,MERGE,MEMBER以及CSV四種引擎默認即被編譯至服務器,不須要特別指定。WITHOUT_xxx_STORAGE_ENGINE :指定不編譯的存儲引擎SYSCONFDIR :初始化參數文件目錄MYSQL_DATADIR :數據文件目錄MYSQL_TCP_PORT :服務端口號,默認3306MYSQL_UNIX_ADDR :socket文件路徑,默認/tmp/mysql.sockMYSQL-USER :運行 mysql的用戶開始編譯和安裝[root@xuegod63mysql-5.6.26]# make -j 4 && make install
[root@xuegod63~]# chown -R mysql:mysql /usr/local/mysql/ 更改屬主[root@xuegod63~]# cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf // 覆蓋原配置文件,並更改my.cnf數據目錄位置[root@xuegod63~]# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld // 啓動腳本[root@xuegod63~]# vim /etc/init.d/ mysqld // 更改啓動腳本中指定mysql位置basedir=datadir=# 修改成basedir=/usr/local/mysqldatadir=/usr/local/mysql/data
[root@xuegod63 ~]# chmod 777 /etc/init.d/mysqld[root@xuegod63~]# chkconfig --add mysqld[root@xuegod63~]# chkconfig mysqld on[root@xuegod63~]# chkconfig --list mysqldmysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off
[ root@xuegod63 ~]# /usr/local/mysql/scripts/mysql_install_db--user=mysql
[root@xuegod63~]# service mysqld start
[root@xuegod63~]#ln -s /usr/local/mysql/bin/* /usr/sbin/ 讓系統直接調用
在Nginx中,咱們使用的是php-fpm來對php頁面解析,PHP-FPM實際上是PHP源代碼的一個補丁,指在將FastCGI進程管理整合進PHP包中。必須將它patch到你的PHP源代碼中,再編譯安裝PHP後纔可使用從PHP5.3.3開始,P/usrHP中直接整合了PHP-FPM,因此從PHP5.3.3版本之後,不須要下載PHP-FPM補丁包了,下面是PHP-FPM官方發出來的通知:
依賴包下載地址
libiconv 庫爲須要作轉換的應用提供了一個iconv()的函數,以實現一個字符編碼到另外一個字符編碼的轉換。若是不裝錯誤提示:configure: error: Please reinstall the iconv library.[root@xuegod63 LNMP]# tar zxf libiconv-1.14.tar.gz -C/usr/local/src/;cd /usr/local/src/libiconv-1.14[root@xuegod63 libiconv-1.14]# ./configure--prefix=/usr/local/libiconv[root@xuegod63libiconv-1.14]# make -j 4 && make install
libmcrypt是加密算法擴展庫。 錯誤提示:configure: error:Cannot find imap library (libc-client.a). Please check your c-clientinstallation.[root@xuegod63 LNMP]# tar jxf libmcrypt-2.5.8.tar.bz2 -C /usr/local/src/;cd/usr/local/src/libmcrypt-2.5.8[root@xuegod63libmcrypt-2.5.8]# ./configure && make -j 4 && make installMhash 是基於離散數學原理的不可逆向的php加密方式擴展庫,其在默認狀況下不開啓。 mhash的能夠用於建立校驗數值,消息摘要,消息認證碼,以及無需原文的關鍵信息保存 錯誤提示:configure: error: 「You need at least libmhash 0.8.15 to compile thisprogram. http://mhash.sf.net/ 」[root@xuegod63 LNMP]# tar zxf mhash-0.9.9.9.tar.gz -C /usr/local/src/;cd/usr/local/src/mhash-0.9.9.9[root@xuegod63mhash-0.9.9.9]# ./configure && make -j 4 && make install
[root@xuegod63~]# vim /etc/ld.so.confincludeld.so.conf.d/*.conf/usr/local/lib/usr/local/mysql/lib/libmysqlclient.so.18[root@xuegod63~]# ldconfig
[root@xuegod63 LNMP]# tar zxf mcrypt-2.6.8.tar.gz -C/usr/local/src/;cd /usr/local/src/mcrypt-2.6.8[root@xuegod63mcrypt-2.6.8]# ./configure && make -j 4 && make install
[root@xuegod63mcrypt-2.6.8]# yum -y install php-pearpear 按照必定的分類來管理pear應用代碼庫,你的pear代碼能夠組織到其中適當的目錄中,其餘人能夠方便的檢索並分享到你的成果;pear不只僅是一個代碼倉庫,它同時也是一個標準,使用這個標準來書寫你的php代碼,將會加強你的程序的可讀性,複用性,減小出錯的概率;Pear經過兩個類爲你搭建了一個框架,實現了諸如析構函數,錯誤捕獲功能,你經過繼承就可使用這些功能
[root@xuegod63~]# tar zxf php-7.0.5.tar.gz-C /usr/local/src/;cd/usr/local/src/php-7.0.5[root@xuegod63 php-7.0.5]# ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/ --enable-fpm --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-iconv-dir --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --disable-rpath --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --enable-mbregex --enable-mbstring --with-mcrypt --enable-ftp --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --without-pear --with-gettext --disable-fileinfo --enable-maintainer-zts
-- with-config-file-path # 設置 php.ini 的搜索路徑。默認爲 PREFIX/lib-- with-mysql #mysql 安裝目錄,對mysql的支持 7.0版本沒有此參數-- with-mysqli #mysqli 擴展技術不只能夠調用MySQL的存儲過程、處理MySQL事務,並且還可使訪問數據庫工做變得更加穩定。是一個數據庫驅動-- with-iconv-dir # 種字符集間的轉換-- with-freetype-dir # 打開對freetype字體庫的支持-- with-jpeg-dir # 打開對jpeg圖片的支持-- with-png-dir # 打開對png圖片的支持-- with-zlib # 打開zlib庫的支持,實現GZIP壓縮輸出-- with-libxml-dir=/usr # 打開libxml2庫的支持,libxml是一個用來解析XML文檔的函數庫-- enable-xml # 支持xml文檔-- disable-rpath # 關閉額外的運行庫文件-- enable-bcmath # 打開圖片大小調整,用到zabbix監控的時候用到了這個模塊-- enable-shmop #shmop 共享內存操做函數,能夠與c/c++通信-- enable-sysvsem # 加上上面shmop,這樣就使得你的PHP系統能夠處理相關的IPC函數(活動在內核級別)。-- enable-inline-optimization # 優化線程-- with-curl # 打開curl瀏覽工具的支持-- with-curlwrappers # 運用curl工具打開url流 ,新版PHP5.6已棄用-- enable-mbregex # 支持多字節正則表達式-- enable-fpm #CGI 方式安裝的啓動程序,PHP-FPM服務-- enable-mbstring # 多字節,字符串的支持-- with-gd # 打開gd庫的支持,是php處理圖形的擴展庫,GD庫提供了一系列用來處理圖片的API,使用GD庫能夠處理圖片,或者生成圖片。-- enable-gd-native-ttf # 支持TrueType字符串函數庫-- with-openssl # 打開ssl支持-- with-mhash # 支持mhash算法擴展-- enable-pcntl #freeTDS 須要用到的,pcntl擴展能夠支持php的多線程操做-- enable-sockets # 打開 sockets 支持-- with-xmlrpc # 打開xml-rpc的c語言-- enable-zip # 打開對zip的支持-- enable-soap # 擴展庫經過soap協議實現了客服端與服務器端的數據交互操做-- with-mcrypt #mcrypt 算法擴展
[ root@xuegod63php-7.0.5]# make -j 4 && make install
[root@xuegod63 php-7.0.5]# cp /usr/local/php/etc/php-fpm.d/www.conf.default/usr/local/php/etc/php-fpm.conf
[root@xuegod63 php-7.0.5]#vim !$user = nginxgroup = nginx
[root@xuegod63 php-7.0.5]# cp/usr/local/src/php-7.0.5/php.ini-production /usr/local/php/php.ini
[root@xuegod63 php-7.0.5]# cp/usr/local/src/php-7.0.5/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
[ root@xuegod63php-7.0.5]# chmod +x /etc/init.d/php-fpm
[ root@xuegod63php-7.0.5]# chkconfig --add php-fpm
[ root@xuegod63php-7.0.5]# chkconfig php-fpm on
[root@xuegod63php-7.0.5]# service php-fpm startStartingphp-fpm done
[ root@xuegod63php-7.0.5]# netstat -antpu | grep php-fpm
[root@xuegod63~]# vim/usr/local/nginx/html/a.php<?phpphpinfo();?>