中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

Nginx的詳細(xì)介紹

2019-05-28    來(lái)源:愛(ài)站科技

容器云強(qiáng)勢(shì)上線!快速搭建集群,上萬(wàn)Linux鏡像隨意使用

很多人對(duì)Nginx都不是很了解,那么Nginx是什么呢?Nginx有什么作用?對(duì)于初學(xué)者來(lái)說(shuō)這是一個(gè)難題,那么我們現(xiàn)在就去看看Nginx的詳細(xì)介紹,希望對(duì)你有所幫助。

對(duì)于Nginx是什么東西我就不說(shuō)了,請(qǐng)谷歌、百度之......這篇文章是我花了很多時(shí)間,通過(guò)看書(shū)(誰(shuí)寫(xiě)的書(shū)我都不想提及了,搜索下就有了)、以及借助Nginx官網(wǎng)和網(wǎng)上很多牛人的的文章、參閱個(gè)別專業(yè)性較強(qiáng)的論壇(像守住兄和幾個(gè)兄弟搞起來(lái)的linuxtone)最終整理出來(lái)的筆記。鑒于索取和奉獻(xiàn)的理念,如下分享整個(gè)適應(yīng)于初手參閱的Nginx詳細(xì)介紹筆記:

1、Nginx介紹

2、Nginx安裝與啟用

3、Nginx的基本配置與優(yōu)化

4、Nginx與PHP(FastCGI)的安裝、配置與優(yōu)化

************************************************

一、Nginx介紹:

Nginx是一款高性能的HTTP和反向代理服務(wù)器,能夠選擇高效的epoll(linux2.6內(nèi)核)、kqueue(freebsd)、eventport(solaris10)作為網(wǎng)絡(luò)I/O模型,能夠支持高達(dá)50000個(gè)并發(fā)連接數(shù)的響應(yīng),而內(nèi)存、CPU等系統(tǒng)資源消耗卻非常低、運(yùn)行非常穩(wěn)定。

2008年12月:Nginx市場(chǎng)占有量為3354329、占有率為1.80%

1、選擇Nginx的理由
1.1 支持高并發(fā)連接
通過(guò)top命令可以查看系統(tǒng)負(fù)載和CPU使用率
由于apache采用的是select網(wǎng)絡(luò)I/O模型,處理大量連續(xù)的讀寫(xiě)很低效
1.2 內(nèi)存消耗少
在服務(wù)器3W并發(fā)連接下,開(kāi)啟10個(gè)Nginx進(jìn)程消耗150MB內(nèi)存(15MB*10),開(kāi)啟64個(gè)php-cgi進(jìn)程消耗128MB內(nèi)存(20MB*64),共消耗不到2GB內(nèi)存,可以使用webbench做壓力測(cè)試,運(yùn)行依舊很快。
1.3 成本低廉
購(gòu)買F5 BIG-IP、NetScaler等負(fù)載均衡交換機(jī)需要幾十萬(wàn)RMB,而開(kāi)源Nginx替代這些商業(yè)設(shè)備。
1.4 其他理由
網(wǎng)絡(luò)配置簡(jiǎn)單,對(duì)比apache就知道了
支持rewrite重寫(xiě)規(guī)則,能夠根據(jù)域名、URL的不同、將HTTP請(qǐng)求分到不同的后端服務(wù)器群組
內(nèi)置的健康檢查功能
節(jié)省帶寬,支持GZIP壓縮,可以添加瀏覽器本地緩存的Header頭
支持熱部署,能夠在不間斷服務(wù)的情況下、對(duì)軟件版本進(jìn)行升級(jí)

結(jié)論:Nginx在反向代理、rewrite規(guī)則、穩(wěn)定性、靜態(tài)文件處理、內(nèi)存消耗等方面都表現(xiàn)出很強(qiáng)的優(yōu)勢(shì)。

二、Nginx安裝與啟用
Nginx服務(wù)器的安裝與配置

http://www.nginx.net/
最新穩(wěn)定版nginx-1.0.0?

首先linux系統(tǒng)得安裝有GCC編譯器,再者還有autoconf和automake工具用于自動(dòng)創(chuàng)建功能完善的makefile,因?yàn)镹ginx也是用這一工具生成makefile的。
用yum命令安裝GCC和autoconf和automake工具:
yum install gcc gcc-c++ autoconf automake -y

Nginx的一些模塊需要其他第三方庫(kù)的支持,例如gzip模塊需要zlib庫(kù)、rewrite模塊需要pcre庫(kù) 、ssl功能需要openssl庫(kù)等。同樣可以使用Yum安裝這些模塊依賴的庫(kù):
yum install zlib zlib-devel openssl openssl-devel pcre pcre-devel
(當(dāng)然最好使用最新版本源碼包安裝,像系統(tǒng)ISO文件里頭自帶的pcre庫(kù)就相對(duì)舊些)

1、安裝Nginx
1.1 安裝Nginx所需要的pcre庫(kù)、才得以支持rewrite
? tar zxvf pcre-8.02.tar.gz
? cd pcre-8.02
? ./configure
? make && make install
1.2 安裝Nginx
? tar zxvf nginx-1.0.0.tar.gz
? cd nginx-1.0.0
? ./configure --prefix=/usr/local/nginx --with-http_ssl_module
? make && make install
--->
Configuration summary
? + using system PCRE library
? + using system OpenSSL library
? + md5: using OpenSSL library
? + using system zlib library


2、啟動(dòng)Nginx
# /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
查看進(jìn)程:
# ps -ef |grep? nginx
root???? 11659???? 1? 0 14:13 ???????? 00:00:00 nginx: master process /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
nobody?? 11660 11659? 0 14:13 ???????? 00:00:00 nginx: worker process
查看端口號(hào):????????????
# netstat -antup |grep nginx
tcp???? 0??? 0 0.0.0.0:80????? 0.0.0.0:*??? LISTEN????? 11659/nginx.conf
從上面可以看到Nginx啟用一個(gè)主進(jìn)程和一個(gè)子進(jìn)程,我們可以修改nginx.conf里頭的
worker_processes使得運(yùn)行多個(gè)子進(jìn)程。

3、停止Nginx
當(dāng)Nginx服務(wù)啟動(dòng)起來(lái)后,就會(huì)在原本空目錄/usr/local/nginx/logs/下自動(dòng)生成3個(gè)文件:
access.log? error.log? nginx.pid
這里包含nginx的主進(jìn)程號(hào):nginx.pid ,我們可以通過(guò)如上的ps命令查看、也可以直接cat出來(lái)
3.1 從容停止Nginx
kill -QUIT Nginx主進(jìn)程號(hào)
# kill -QUIT `cat /usr/local/nginx/logs/nginx.pid`
3.2 快速停止Nginx
kill -TERM Nginx主進(jìn)程號(hào)
# kill -TERM `cat /usr/local/nginx/logs/nginx.pid`

4、重啟Nginx
如果改變了Nginx的主配置文件,想重啟Nginx,可以先檢查Nginx的配置文件是否正確后才發(fā)送系統(tǒng)信號(hào)給Nginx主進(jìn)程的方式進(jìn)行,檢查方法如下:
# /usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
只有出現(xiàn)如上OK信息才會(huì)加載新的配置文件。
4.1 平滑重啟Nginx
kill -HUP Nginx主進(jìn)程號(hào)
# kill -HUP `cat /usr/local/nginx/logs/nginx.pid`
如果Nginx本身都還沒(méi)啟動(dòng),平滑重啟可是會(huì)報(bào)錯(cuò)的。

5、Nginx的信號(hào)控制
TERM,INT? 快速關(guān)閉
QUIT?????? 從容關(guān)閉
HUP??????? 平滑重啟
USR1?????? 重新打開(kāi)日志文件、在切割日志時(shí)用途大
USR2?????? 平滑升級(jí)可執(zhí)行程序
WINCH????? 從容關(guān)閉工作進(jìn)程

三、Nginx的基本配置與優(yōu)化

首先看Nginx的主配置文件,可以發(fā)現(xiàn)原本的配置文件非常簡(jiǎn)練


?
  1. #?grep?-v?"#"?nginx.conf ?
  2. worker_processes??1; ?
  3. events?{ ?
  4. ????worker_connections??1024; ?
  5. } ?
  6. http?{ ?
  7. ????include???????mime.types; ?
  8. ????default_type??application/octet-stream; ?
  9. ????sendfile????????on; ?
  10. ????keepalive_timeout??65; ?
  11. ????server?{ ?
  12. ????????listen???????80; ?
  13. ????????server_name??localhost; ?
  14. ????????location?/?{ ?
  15. ????????????root???html; ?
  16. ????????????index??index.html?index.htm; ?
  17. ????????} ?
  18. ????????error_page???500?502?503?504??/50x.html; ?
  19. ????????location?=?/50x.html?{ ?
  20. ????????????root???html; ?
  21. ????????} ?
  22. ????} ?
  23. }?

1、配置虛擬主機(jī)
1.1、配置基于IP的虛擬主機(jī)
首先添加虛擬網(wǎng)卡:

? ifconfig eth0:1 110.65.99.209 broadcast 110.65.99.255 netmask 255.255.252.0 up
? route add -host 110.65.99.209 dev eth0:1
? ifconfig eth0:2 110.65.99.210 broadcast 110.65.99.255 netmask 255.255.252.0 up
? route add -host 110.65.99.210 dev eth0:2
如上命令最好寫(xiě)進(jìn)/etc/rc.local中使得系統(tǒng)開(kāi)機(jī)自動(dòng)創(chuàng)建。
或者直接cp ifcfg-eth0 ifcfg-eth0:1

修改Nginx的主配置文件: /usr/local/nginx/conf/nginx.conf
在原本定義的一個(gè)server之后添加如下兩個(gè)虛擬主機(jī)


?
  1. ###############server2################################ ?
  2. ????????server?{ ?
  3. ????????listen??110.65.99.209:80; ?
  4. ????????server_name?????server2; ?
  5. ????????access_log??????logs/server2.access.log?combined; ?
  6. ????????location?/?{ ?
  7. ????????index???index.html?index.htm; ?
  8. ????????root????/usr/local/nginx/server2; ?
  9. ??????????????????} ?
  10. ????????} ?
  11. ###############server3################################ ?
  12. ????????server?{ ?
  13. ????????listen??110.65.99.210:80; ?
  14. ????????server_name?????server3; ?
  15. ????????access_log??????logs/server3.access.log?combined; ?
  16. ????????location?/?{ ?
  17. ????????index???index.html?index.htm; ?
  18. ????????root????/usr/local/nginx/server3; ?
  19. ??????????????????} ?
  20. ????????}?

然后創(chuàng)建目錄server2和server3,并且在各自目錄下創(chuàng)建index.html測(cè)試文件
檢查配置文件是否寫(xiě)正確,然后才平滑重啟Nginx
# /usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
# kill -HUP `cat /usr/local/nginx/logs/nginx.pid`
測(cè)試:
#? links
http://110.65.99.209
#? links http://110.65.99.210
測(cè)試后在/usr/local/nginx/logs目錄下會(huì)自動(dòng)創(chuàng)建Log日志文件
server2.access.log? server3.access.log
# cat server2.access.log
110.65.99.209 - - [21/Apr/2011:22:34:11 +0800] "GET / HTTP/1.1" 200 8 "-" "ELinks/0.11.1 (textmode; Linux; 142x38-2)"
# cat server3.access.log
110.65.99.210 - - [21/Apr/2011:22:34:24 +0800] "GET / HTTP/1.1" 200 8 "-" "ELinks/0.11.1 (textmode; Linux; 142x38-2)"


1.2、配置基于域名的虛擬主機(jī)
接著如上的配置在server3下面添加如下兩個(gè)虛擬主機(jī)


?
  1. ###############server4################################ ?
  2. ????????server?{ ?
  3. ????????listen??80; ?
  4. ????????server_name?????linuxidc.com; ?
  5. ????????access_log??????logs/server4.access.log?combined; ?
  6. ????????location?/?{ ?
  7. ????????index???index.html?index.htm; ?
  8. ????????root????/usr/local/nginx/server4; ?
  9. ??????????????????} ?
  10. ????????} ?
  11. ###############server5################################ ?
  12. ????????server?{ ?
  13. ????????listen??80; ?
  14. ????????server_name?????linuxidc.net; ?
  15. ????????access_log??????logs/server5.access.log?combined; ?
  16. ????????location?/?{ ?
  17. ????????index???index.html?index.htm; ?
  18. ????????root????/usr/local/nginx/server5; ?
  19. ??????????????????} ?
  20. ????????}?

然后創(chuàng)建目錄server4和server5,并且在各自目錄下創(chuàng)建index.html測(cè)試文件
檢查配置文件是否寫(xiě)正確,然后才平滑重啟Nginx
# /usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
# kill -HUP `cat /usr/local/nginx/logs/nginx.pid`
為了讓系統(tǒng)直接緩存域名解析,在/etc/hosts后面追加如下內(nèi)容(110.65.99.208是eth0-IP):
110.65.99.208?? linuxidc.net
110.65.99.208?? linuxidc.com
測(cè)試:
# links
http://linuxidc.com
# links http://linuxidc.net
測(cè)試后在/usr/local/nginx/logs目錄下會(huì)自動(dòng)創(chuàng)建Log日志文件
# cat server4.access.log
110.65.99.208 - - [21/Apr/2011:22:41:46 +0800] "GET / HTTP/1.1" 200 8 "-" "ELinks/0.11.1 (textmode; Linux; 142x38-2)"
# cat server5.access.log
110.65.99.208 - - [21/Apr/2011:22:40:56 +0800] "GET / HTTP/1.1" 200 8 "-" "ELinks/0.11.1 (textmode; Linux; 142x38-2)"

?

2、Nginx的日志文件配置與切割
如上的日志文件內(nèi)容是有一定的指令定義的,在Nginx的主配置文件中是通過(guò)
log_format指令來(lái)設(shè)置日志格式:

log_format? main? '$remote_addr - $remote_user [$time_local] "$request" '
????????????????????? '$status $body_bytes_sent "$http_referer" '
????????????????????? '"$http_user_agent" "$http_x_forwarded_for"';

如上指令的解析:
$remote_addr用戶獲取客戶端的IP地址,但如果前端使用了反向代理,則獲取到的是反向代理服務(wù)器的IP地址
$http_x_forwarded_for"則可以使得反向代理服務(wù)器轉(zhuǎn)發(fā)請(qǐng)求的HTTP頭信息來(lái)記錄客戶端IP
$request用于記錄請(qǐng)求的URL和HTTP協(xié)議
$time_local用于記錄訪問(wèn)時(shí)間與時(shí)區(qū)
$status用于記錄請(qǐng)求狀態(tài),成功時(shí)狀態(tài)為200,頁(yè)面找到時(shí)狀態(tài)為404
$body_bytes_sent用于記錄發(fā)送給客戶端的文件主體內(nèi)容大小
$http_user_agent用于記錄客戶端瀏覽器的相關(guān)信息
$http_referer用于記錄是從哪個(gè)頁(yè)面鏈接訪問(wèn)過(guò)來(lái)的

上面指定好了日志格式后就要定義日志存放的路徑了,access_log指令用于指定日志存放的路徑
如果說(shuō)不想記錄日志,則直接
access_log off;
如果使用如下定義的日志格式存儲(chǔ)日志,則可以通過(guò)
access_log? logs/access.log main;
表示采用main的日志格式,記錄在/usr/local/nginx/logs/access.log文件中
(如果把日志存儲(chǔ)路徑定義在其他地方,要確保Nginx進(jìn)程設(shè)置的用戶和組對(duì)該目錄有讀寫(xiě)權(quán)限,否則該日志文件就無(wú)法生成了)

對(duì)于生產(chǎn)系統(tǒng)下的server,由于巨大的訪問(wèn)量會(huì)導(dǎo)致日志文件的增加非?,日志太大會(huì)影響server的效率,同時(shí)為了方便對(duì)日志進(jìn)行分析計(jì)算,所以需要對(duì)日志文件做定時(shí)切割,這里使用按天計(jì)算切割。
先前的文檔提及過(guò)kill -USR1的作用時(shí)重新打開(kāi)日志文件,這樣我們就可以先對(duì)舊的日志文件重命名,通過(guò)kill -USR1重新生成access.log文件。最后借助crontab進(jìn)行按天切割的計(jì)劃任務(wù)。
如下通過(guò)一個(gè)shell腳本進(jìn)行日志切割:


?
  1. #!/bin/bash ?
  2. logs_path1="/usr/local/nginx/oldlog"?
  3. logs_path2="/usr/local/nginx/logs"?
  4. mkdir?-p?$logs_path1 ?
  5. time=`date?+%Y%m%d` ?
  6. mv?${logs_path2}/access.log?${logs_path1}/$time.access.log ?
  7. kill?-USR1?`cat?/usr/local/nginx/logs/nginx.pid` ?
  8. 通過(guò)crontab計(jì)劃任務(wù)實(shí)現(xiàn)每天凌晨3點(diǎn)做一次日志切割 ?
  9. #?chmod?+x?/usr/local/nginx/log.sh ?
  10. #?crontab?-l ?
  11. *?3?*?*?*?/usr/local/nginx/log.sh?


3、Nginx的壓縮輸出配置與自動(dòng)列目錄配置
3.1、Nginx的壓縮輸出配置
gzip(GNU-ZIP)是一種壓縮技術(shù),通過(guò)gzip壓縮后的頁(yè)面可以變?yōu)樵瓉?lái)的30%,使得用戶瀏覽頁(yè)面的時(shí)候速度會(huì)快很多,gzip的壓縮需要browser和server都支持。其過(guò)程是server端進(jìn)行g(shù)zip壓縮,browser端解壓并解析。目前大多數(shù)browser都支持gzip過(guò)的頁(yè)面,如IE、firefox、chrome。
Nginx的壓縮輸出由一組gzip指令來(lái)實(shí)現(xiàn),默認(rèn)的Nginx配置文件僅僅為
gzip? on;
這么個(gè)簡(jiǎn)單的指令,所以我們需要參考gzip模塊相關(guān)介紹,實(shí)現(xiàn)gzip的具體壓縮功能
如下:
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.1;
gzip_comp_level 2;
gzip_vary on;
3.2、 Nginx的自動(dòng)列目錄配置
當(dāng)指定目錄下不存在index指令設(shè)置的默認(rèn)首頁(yè)文件,當(dāng)訪問(wèn)該頁(yè)面的時(shí)候會(huì)出現(xiàn)403 Forbidden
的信息,所以可以通過(guò)在Nginx的主配置文件中的location / {......}目錄控制中配置自動(dòng)列目錄,如下代碼:
location / {
?autoindex on;
}
這樣就可以訪問(wèn)頁(yè)面顯示出該目錄下的文件或目錄,而不是403 Forbidden信息。
3.3、 Nginx的瀏覽器本地緩存設(shè)置
browser caching是為了加速瀏覽,在用戶磁盤(pán)上對(duì)最近請(qǐng)求過(guò)的文檔進(jìn)行存儲(chǔ)。當(dāng)訪問(wèn)者再次請(qǐng)求這個(gè)頁(yè)面的時(shí)候,browser就可以直接從本地磁盤(pán)顯示文檔,從而加速頁(yè)面的閱覽,最終到達(dá)節(jié)約網(wǎng)絡(luò)資源。
browser caching通過(guò)expires指令輸出header頭來(lái)實(shí)現(xiàn),該指令語(yǔ)法如下:
語(yǔ)法:expires [time|epoch|max|off]
默認(rèn)值: expires off
作用域: http ,server ,location
假設(shè)一個(gè)html頁(yè)面會(huì)引用到一些javascript文件、圖片文件,而這些格式的文件很少會(huì)被修改,則可以通過(guò)expires設(shè)置browser caching
eg:對(duì)常見(jiàn)格式的圖片、flash文件在瀏覽器本地緩存30天,對(duì)Js、css文件在本地緩存1個(gè)小時(shí):
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
?expires 30d;
}
location ~ .*\.(js|css)?$
{
?expires 1h;
}

四、Nginx與PHP(FastCGI)的安裝、配置與優(yōu)化

CGI全稱是“公共網(wǎng)關(guān)接口”(Common Gateway Interface),HTTP服務(wù)器與你的或其它機(jī)器上的程序進(jìn)行“交談”的一種工具,其程序須運(yùn)行在網(wǎng)絡(luò)服務(wù)器上。
FastCGI是語(yǔ)言無(wú)關(guān)的、可伸縮架構(gòu)的CGI開(kāi)放擴(kuò)展,其主要行為是將CGI解釋器進(jìn)程保持在內(nèi)存中并因此獲得較高的性能。眾所周知,CGI解釋器的反復(fù)加載是CGI性能低下的主要原因,如果CGI解釋器保持在內(nèi)存中并接受FastCGI進(jìn)程管理器調(diào)度,則可以提供良好的性能、伸縮性、Fail- Over特性等等。

FastCGI的工作原理(摘自百度百科)
1、web server(Nginx)啟動(dòng)時(shí)載入FastCGI進(jìn)程管理器
2、FastCGI進(jìn)程管理器自身初始化,啟動(dòng)多個(gè)CGI解釋器進(jìn)程(可見(jiàn)多個(gè)php-cgi)并等待來(lái)自web server的連接
3、當(dāng)客戶端請(qǐng)求到達(dá)web server時(shí),F(xiàn)astCGI進(jìn)程管理器選擇并連接到一個(gè)CGI解釋器。web server將CGI環(huán)境變量和標(biāo)準(zhǔn)輸入發(fā)送到FastCGI子進(jìn)程php-cgi
4、FastCGI子進(jìn)程完成處理后將標(biāo)準(zhǔn)輸出和錯(cuò)誤信息從同一個(gè)連接返回web server,當(dāng)FastCGI子進(jìn)程關(guān)閉連接時(shí),請(qǐng)求便高處理完成。FastCGI子進(jìn)程接著等待并處理來(lái)自FastCGI進(jìn)程管理器的下一個(gè)連接。

所以,如果是使用CGI技術(shù)的話,每一個(gè)Web請(qǐng)求PHP都必須重新解析php.ini、重新載入全部擴(kuò)展并重初始化全部數(shù)據(jù)結(jié)構(gòu)。使用FastCGI,所有這些都只在進(jìn)程啟動(dòng)時(shí)發(fā)生一次。然而不足之處在于FastCGI比CGI消耗更多的系統(tǒng)內(nèi)存,因?yàn)镕astCGI是多進(jìn)程的,CGI是多線程的。

1、安裝PHP所需庫(kù)(FastCGI模式)
1.1、 編譯安裝PHP所需的支持庫(kù)

1>libiconv
GNU的libiconv是為nicode和其他的傳統(tǒng)編碼兩種應(yīng)用設(shè)計(jì)的編碼轉(zhuǎn)換庫(kù)
http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.13.1.tar.gz
? tar zxvf libiconv-1.13.1.tar.gz
? cd libiconv-1.13.1
? ./configure --prefix=/usr/local/
? make && make install

2>libmcrypt
Libmcrypt is a library which provides a uniform interface to several symmetric encryption algorithms. It is intended to have a simple interface to access encryption algorithms in ofb, cbc, cfb, and ecb modes. The algorithms it supports are DES, 3DES, RIJNDAEL, Twofish, IDEA, GOST, CAST-256, ARCFOUR, SERPENT, SAFER+, and more. The algorithms and modes are also modular so you can add and remove them on the fly without recompiling the library.
主要功能用于加密解密

下載libmcrypt-2.5.7.tar.gz http://www.linuxidc.com/Linux/2011-01/31361.htm
? tar zxvf libmcrypt-2.5.7.tar.gz
? cd libmcrypt-2.5.7
? ./configure
? make && make install
? /sbin/ldconfig???? #ldconfig通常在系統(tǒng)啟動(dòng)時(shí)運(yùn)行,當(dāng)用戶安裝了一個(gè)新的動(dòng)態(tài)鏈接庫(kù)時(shí),就需要手工運(yùn)行這個(gè)命令
? cd libltdl/
? ./configure --enable-ltdl-install
? make && make install

3>mhash
mhash是哈希函數(shù)庫(kù),比如用來(lái)計(jì)算消息的校驗(yàn)碼之類的
http://sourceforge.net/projects/mhash/files/mhash/0.9.9/mhash-0.9.9.tar.gz/download
? tar jxvf mhash-0.9.9.9.tar.bz2
? cd mhash-0.9.9.9
? ./configure
? make && make install

4>mcrypt
Mcrypt擴(kuò)展庫(kù)可以對(duì)數(shù)據(jù)進(jìn)行加密和解密
http://code.google.com/p/lcmp/downloads/detail?name=mcrypt-2.6.8.tar.gz
? tar zxvf mcrypt-2.6.8.tar.gz.gz
? cd mcrypt-2.6.8
? /sbin/ldconfig
? ./configure
? make && make install

5>建立軟連接
? ln -s /usr/local/lib/libmcrypt.la /usr/lib/libmcrypt.la
? ln -s /usr/local/lib/libmcrypt.so /usr/lib/libmcrypt.so
? ln -s /usr/local/lib/libmcrypt.so.4 /usr/lib/libmcrypt.so.4
? ln -s /usr/local/lib/libmcrypt.so.4.4.7 /usr/lib/libmcrypt.so.4.4.7
? ln -s /usr/local/lib/libmhash.* /usr/lib/

?

2、安裝mysql
http://www.mysql.com/downloads/mysql/5.1.html#downloads
選擇下拉“source code”最后一個(gè)
? useradd mysql
? tar zxvf mysql-5.1.56.tar.gz
? cd mysql-5.1.56
? ./configure --prefix=/usr/local/mysql --enable-assembler --with-extra-charsets=complex --enable-thread-safe-client --with-big-tables --with-readline --with-ssl --with-embedded-server --enable-local-infile --with-plugins=innobase
? make && make install
? cp support-files/my-medium.cnf /etc/my.cnf
? cd /usr/local/mysql/
? bin/mysql_install_db --user=mysql
? chown -R root .
? chown -R mysql var/
? chgrp -R mysql .
? bin/mysqld_safe --user=mysql &
? ln -s /usr/local/mysql/bin/* /usr/bin/
? mysqladmin -uroot password 123456
? mysql -uroot -p123456
mysql> GRANT ALL PRIVILEGES ON *.* TO
'admin'@'localhost' IDENTIFIED BY '123456';


3、安裝PHP
1、編譯安裝PHP(FastCGI模式)
? tar zxvf php-5.2.17.tar.gz
? gzip -cd php-5.2.17-fpm-0.5.14.diff.gz | patch -d php-5.2.17 -p1 //打補(bǔ)丁
? cd php-5.2.17
? ./configure --prefix=/usr/local/php --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr/ --enable-xml --disable-rpath --enable-discard-path --enable-safe-mode --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --with-curlwrappers --enable-mbregex --enable-fastcgi --enable-fpm --enable-force-cgi-redirect --enable-mbstring --with-mcrypt --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-ldap --with-ldap-sasl --with-xmlrpc --enable-zip --enable-soap --without-pear --with-mysql=/usr/local/mysql/
? make ZEND_EXTRA_LTBS='-liconv'
在執(zhí)行編譯的時(shí)候,這里遇到一個(gè)error:
xxx:undefined reference to `libiconv_open'
xxx: undefined reference to `libiconv'
xxx: undefined reference to `libiconv_close'
解決辦法是:
編輯Makefile
EXTRA_LIBS = -lcrypt ...
在最后添加-liconv
然后重新編譯
? make ZEND_EXTRA_LTBS='-liconv'
? make install
? cp php.ini-dist /usr/local/php/etc/php.ini
? cp php.ini-dist /usr/local/lib/php.ini

4、編譯安裝php5擴(kuò)展模塊
1>memcache
Memcache是一個(gè)高性能的分布式的內(nèi)存對(duì)象緩存系統(tǒng),通過(guò)在內(nèi)存里維護(hù)一個(gè)統(tǒng)一的巨大的hash表,它能夠用來(lái)存儲(chǔ)各種格式的數(shù)據(jù),包括圖像、視頻、文件以及數(shù)據(jù)庫(kù)檢索的結(jié)果等。
它可以應(yīng)對(duì)任意多個(gè)連接,使用非阻塞的網(wǎng)絡(luò)IO。由于它的工作機(jī)制是在內(nèi)存中開(kāi)辟一塊空間,然后建立一個(gè)HashTable,Memcached自管理這些HashTable。
php中的所講的memcache是PHP的一個(gè)擴(kuò)展,是一個(gè)客戶端,用于連接memcached。

http://pecl.php.net/get/memcache-2.2.6.tgz
? tar zxvf memcache-2.2.6.tgz
? cd memcache-2.2.6
? /usr/local/php/bin/phpize
? ./configure --with-php-config=/usr/local/php/bin/php-config
? make && make install

2>eaccelerator
eAccelerator是一個(gè)自由開(kāi)放源碼php加速器,優(yōu)化和動(dòng)態(tài)內(nèi)容緩存,提高了php腳本的緩存性能,使得PHP腳本在編譯的狀態(tài)下,對(duì)服務(wù)器的開(kāi)銷幾乎完全消除。 它還有對(duì)腳本起優(yōu)化作用,以加快其執(zhí)行效率。使PHP程序代碼執(zhí)效率能提高1-10倍;
http://bart.eaccelerator.net/source/0.9.6.1/eaccelerator-0.9.6.1.tar.bz2
? tar jxvf eaccelerator-0.9.6.1.tar.bz2
? cd eaccelerator-0.9.6.1
? /usr/local/php/bin/phpize
? ./configure --enable-eaccelerator=shared --with-php-config=/usr/local/php/bin/php-config
? make && make install

3>PDO_MYSQL
PDO_MYSQL is a driver that implements the PHP Data Objects (PDO) interface to enable access from PHP to MySQL 3.x, 4.x and 5.x databases.
http://pecl.php.net/get/PDO_MYSQL-1.0.2.tgz
? tar zxvf PDO_MYSQL-1.0.2.tgz
? cd PDO_MYSQL-1.0.2
? /usr/local/php/bin/phpize
? ./configure --with-php-config=/usr/local/php/bin/php-config --with-pdo-mysql=/usr/local/mysql/
? make && make install

4>ImageMagick
ImageMagick是一套功能強(qiáng)大、穩(wěn)定而且免費(fèi)的工具集和開(kāi)發(fā)包,可以用來(lái)讀、寫(xiě)和處理超過(guò)89種基本格式的圖片文件,包括流行的TIFF, JPEG, GIF, PNG, PDF以及PhotoCD等格式。利用ImageMagick,你可以根據(jù)web應(yīng)用程序的需要?jiǎng)討B(tài)生成圖片, 還可以對(duì)一個(gè)(或一組)圖片進(jìn)行改變大小、旋轉(zhuǎn)、銳化、減色或增加特效等操作,并將操作的結(jié)果以相同格式或其它格式保存。
ftp://ftp.imagemagick.org/pub/ImageMagick/ImageMagick.tar.gz
? tar zxvf ImageMagick-6.6.5-10.tar.gz
? cd ImageMagick-6.6.5-10
? ./configure
? make && make install

5>imagick
imagick 是PHP的一個(gè)擴(kuò)展程序,它是默認(rèn)的GD圖象函數(shù)庫(kù)的絕佳替代方案。面向?qū)ο蟮腜HP編程使用非常方便。?
imagick 默認(rèn)并沒(méi)有在PHP的安裝包里,需要去PHP網(wǎng)站上下載,并在PHP.INI中打開(kāi)此擴(kuò)展。

http://pecl.php.net/get/imagick-3.0.1.tgz 或者
http://pecl.php.net/get/imagick-3.0.0.tgz
? tar zxvf imagick-3.0.0.tgz
? cd imagick-3.0.0
? /usr/local/php/bin/phpize
? ./configure --with-php-config=/usr/local/php/bin/php-config
? make && make install

6>修改php.ini文件,配置eaccelerator加速PHP
1、查找/usr/local/php/etc/php.ini中的extension_dir = "./"
修改extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/"
并在此行后添加如下幾行用于調(diào)用上面的擴(kuò)展模塊
extension = "memcache.so"
extension = "pdo_mysql.so"
extension = "imagick.so"
最后查找output_buffering = Off,修改成output_buffering = On
2、創(chuàng)建目錄/usr/local/eaccelerator_cache
mkdir /usr/local/eaccelerator_cache
修改/usr/local/php/etc/php.ini在最后添加如下:
[eaccelerator]
zend_extension="/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/eaccelerator.so"
eaccelerator.shm_size="64"
eaccelerator.cache_dir=/usr/local/eaccelerator_cache
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"
eaccelerator.debug="0"
eaccelerator.filter=""
eaccelerator.shm_max="0"
eaccelerator.shm_ttl="3600"
eaccelerator.shm_prune_period="3600"
eaccelerator.shm_only="0"
eaccelerator.compress="1"
eaccelerator.compress_level="9"


5、配置啟用php-cgi
/usr/sbin/groupadd www
/usr/sbin/useradd -g www www
修改php-fpm配置文件(php-fpm是為PHP打的一個(gè)FastCGI管理補(bǔ)丁),可以實(shí)現(xiàn)平滑變更php.ini配置而無(wú)需重啟php-cgi
vim /usr/local/php/etc/php-fpm.conf
把兩處nobody修改成www,并且去掉<--!-->這樣的注釋,表示使用www啟用進(jìn)程php-cgi
然后通過(guò) /usr/local/php/sbin/php-fpm start 來(lái)啟用php-cgi。
ps -ef |grep php-cgi 可以查看php-cgi進(jìn)程


6、配置Nginx支持PHP
修改Nginx的主配置文件/usr/local/nginx/conf/nginx.conf
去掉下面代碼前面的#號(hào):
location ~ \.php$ {
??????????? root?????????? html;
??????????? fastcgi_pass?? 127.0.0.1:9000;
??????????? fastcgi_index? index.php;
??????????? fastcgi_param? SCRIPT_FILENAME? /usr/local/nginx/html$fastcgi_script_name;
??????????? include??????? fastcgi_params;
??????? }
然后在/usr/local/nginx/html目錄下創(chuàng)建index.php文件測(cè)試即可

相信大家在看完本文的Nginx的詳細(xì)介紹后,希望能給大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助~

標(biāo)簽: [db:TAGG]

版權(quán)申明:本站文章部分自網(wǎng)絡(luò),如有侵權(quán),請(qǐng)聯(lián)系:west999com@outlook.com
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀點(diǎn)!
本站所提供的圖片等素材,版權(quán)歸原作者所有,如需使用,請(qǐng)與原作者聯(lián)系。

上一篇:熱門的Linux服務(wù)器配置介紹

下一篇:Hadoop的安全模式介紹