nginx0.8 + php-5.3.4 + memcached#-- 编码转换库 Unicode和其他的传统编码之间转换的需求 --#wget http://mozbuildtools.googlecode.com/files/libiconv-1.13.1.tar.gztar -zxvf libiconv-1.13.1.tar.gzcd libiconv-1.13.1./configure --prefix=/usr/local && make && make install#-- 修改动态链接载入的目录查找文件 --#echo "/usr/local/lib" >> /etc/ld.so.conf/sbin/ldconfig#-- libmcrypt是加密算法扩展库 --#wget http://www.sfr-fresh.com/unix/privat/libmcrypt-2.5.8.tar.gztar -zxvf libmcrypt-2.5.8.tar.gzcd libmcrypt-2.5.8/./configure && make && make install/sbin/ldconfigcd libltdl/./configure --enable-ltdl-install && make && make install#-- 支持多种哈稀演算法的函数库(php使用哈稀) --#wget http://cdnetworks-kr-1.dl.sourceforge.net/project/mhash/mhash/0.9.9.9/mhash-0.9.9.9.tar.gztar -zxvf mhash-0.9.9.9.tar.gz cd mhash-0.9.9.9./configure && make && make installln -s /usr/local/bin/libmcrypt-config /usr/bin/libmcrypt-config#-- mcrypt是一个双向加密算法 函数库 (php) --#wget http://www.sfr-fresh.com/unix/privat/mcrypt-2.6.8.tar.gztar -zxvf mcrypt-2.6.8.tar.gzcd mcrypt-2.6.8LD_LIBRARY_PATH=/usr/local/lib ./configure && make && make install***********************************************************#-- libevent作为一个事件与回调框架,它提供了一些接口,同时也提供了一些处理IO与信号的流程 --#wget http://monkey.org/~provos/libevent-2.0.9-rc.tar.gztar -zxvf libevent-2.0.9-rc.tar.gzcd libevent-2.0.9-rc./configure --prefix=/usr/local/libevent && make && make install出的。。wget http://jaist.dl.sourceforge.net/project/buluoos/0.1/src/jpegsrc.v8b.tar.gztar xzvf jpegsrc.v8b.tar.gzcd jpegsrc.v8b./configure --enable-static --enable-shared && make && make installwget http://www.sfr-fresh.com/unix/misc/libpng-1.2.44.tar.gztar xzvf libpng-1.2.44.tar.gzcd libpng-1.2.44./configure && make && make install安装报错:没有找到libpng.so文件时,需要安装libpng-devel和freetype-devel两个包wget http://www.libgd.org/releases/gd-2.0.35.tar.gztar xzvf gd-2.0.35.tar.gzcd gd-2.0.35./configure --with-png --with-freetype --with-jpeg make (如果出错,就执行make clean,然后再make)			make install#-- memcached  (memcache 服务端)--#wget http://memcached.googlecode.com/files/memcached-1.4.5.tar.gztar -zxvf memcached-1.4.5.tar.gz cd memcached-1.4.5./configure --prefix=/usr/local/memcached --with-libevent=/usr/local/libevent && make && make installln -s /usr/local/libevent/lib/libevent-2.0.so.5 /usr/lib64/libevent-2.0.so.5/usr/local/memcached/bin/memcached  -d  -m 128 -l 0.0.0.0 -p 11211 -u root				#启动memcached		*****(-d 以守护程序(daemon)方式运行 memcached;								#启动参数说明-m 设置 memcached 可以使用的内存大小,单位为 M;-M 设置memcached 不LRU-l 设置监听的 IP 地址,如果是本机的话,通常可以不设置此参数;-p 设置监听的端口,默认为 11211,所以也可以不设置此参数;-u 指定用户,如果当前为 root 的话,需要使用此参数指定用户。-P 记录memcache运行的PID到文件/usr/local/bin/memcached.pid-n 设置初始chunk的大小-f chunk size factor的增长因子,默认是1.25)#--nginx pcre 包含了perl兼容的正规表达式库,些在执行正规表达式模式匹配时用 --#wget http://www.sfr-fresh.com/unix/misc/pcre-8.11.tar.gztar -zxvf pcre-8.11.tar.gzcd pcre-8.11./configure && make && make install#-- nginx --#wget http://nginx.org/download/nginx-0.8.54.tar.gztar -zxvf nginx-0.8.54.tar.gzcd nginx-0.8.54./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_modulemake && make install附加:如果nginx安装有错误,就是zlib库、openssl库、pcre库没有安装,需要安装后才开始安装nginx,可以选择tar包安装,也可以进行yum安装,执行yum语句:yum -y install pcre-devel   yum -y install openssl openssl-devel  yum -y install zlib zlib-devel openssl openssl--devel pcre pcre-devel  yum -y install gcc gcc-c++ autoconf automake#-- libjpeg --#locate libjpeg.socd /usr/lib/ln -s /usr/lib/libjpeg.so.62 /usr/lib/libjpeg.soln -s /usr/lib64/libjpeg.so.62 /usr/lib64/libjpeg.so#-- php php-5.3.3 或 以上已经包含了php-fpm--#wget http://at2.php.net/distributions/php-5.3.4.tar.gztar -zxvf php-5.3.4.tar.gz cd php-5.3.4./configure \--prefix=/usr/local/php \--with-config-file-path=/usr/local/php/etc \--with-curl \--with-curlwrappers \--enable-gd-native-ttf \--with-gd \--with-jpeg-dir \--with-png-dir \--with-freetype-dir \--with-iconv-dir=/usr/local/libiconv \--with-libxml-dir=/usr/local/ \--with-mhash \--with-mcrypt \--with-mysql=mysqlnd \--with-mysqli=mysqlnd \--with-openssl \--with-xmlrpc \--with-zlib \--disable-debug \--disable-rpath \--enable-bcmath \--enable-fpm \--enable-inline-optimization \--enable-mbregex \--enable-mbstring \--enable-pcntl \--enable-safe-mode \--enable-shmop \--enable-soap \--enable-sockets \--enable-sysvsem \--enable-xml \--enable-zip \--with-libdir=lib64 \--without-pear#--   --with-libdir=lib64    64位系统添加此项 否则去掉 --#安装报错:没有找到libpng.so文件时,需要安装libpng-devel和freetype-devel两个包可以利用yum来安装make ZEND_EXTRA_LIBS='-liconv' && make installcp ./php.ini-production /usr/local/php/etc/php.ini#-- zlib 数据压缩库 --#wget http://www.p_w_picpathmagick.org/download/delegates/zlib-1.2.5.tar.gztar zxvf zlib-1.2.5.tar.gzcd zlib-1.2.5./configure --prefix=/usr/local/zlib --64 --libdir=/usr/libmake && make install#-- php 扩展memcache (memcache 客户端) --#										#####wget http://pecl.php.net/get/memcache-3.0.5.tgztar -zxvf memcache-3.0.5.tgzcd memcache-3.0.5/usr/local/php/bin/phpize#(如果没有configure文件,就执行:yum -y install autoconf)./configure --enable-memcache --with-php-config=/usr/local/php/bin/php-config --with-zlib-dir=/usr/local/zlibmake && make install 会出现下面的消息:(Installing shared extensions:     /usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/)#-- apc 用于加速php APC提供两种缓存功能 提供一些接口将用户数据驻留在内存中 --#wget http://pecl.php.net/get/APC-3.1.4.tgztar -zxvf APC-3.1.4.tgz cd APC-3.1.4/usr/local/php/bin/phpize./configure --with-php-config=/usr/local/php/bin/php-configmake && make installcp /usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/apc.so /usr/local/php/lib/php/extensions/apc.so          # xxxxno-debug-non-zts-20090626 是编译apc 成功后输出信息chmod 755 /usr/local/php/lib/php/extensions/apc.so#-- 安装完毕 开始配置 --##-- php.ini 配置 --#vi /usr/local/php/etc/php.ini#extension_dir = "ext"  在这行下添加 以下 路径是extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/"							###extension=apc.soextension=imagick.soextension=memcache.so#再查找output_buffering=Off#修改为output_buffering=On再查找;cgi.fix_pathinfo=1修改为cgi.fix_pathinfo=0,防止Nginx文件类型错误解析漏洞# 按 shift+g 键 跳到文件未尾 添加以下[APC]apc.enabled=1apc.ttl=7200apc.shm_size=128M								#每个共享内存块的大小(以MB为单位,建议值为128~256)。												#要开启上传文件功能时要添加以下参数apc.cache_by_default = on						#是否默认对所有文件启用缓冲apc.shm_segments = 1							#为编译器缓冲区分配的共享内存块数量(建议值为1)。							apc.ttl = 600									#缓存条目在垃圾回收表中能够存在的秒数apc.user_ttl = 600								#类似于apc.ttl,只是针对每个用户而言,建议值为7200~36000apc.num_files_hint = 0							#Web服务器上可能被包含或被请求的不同源文件的大致数量(建议值为1024~4096)。能确定,则设为 0apc.write_lock = On								#是否启用写入锁apc.max_file_size = 1000M						#设置apc所支持上传文件的大小upload_max_filesize = 1000M						##-- php-fpm 配置 --#cd /usr/local/php/etc/cp php-fpm.conf.default php-fpm.confvi php-fpm.conf;emergency_restart_threshold = 0  -> emergency_restart_threshold = 10   // 错误的php进程线;emergency_restart_interval = 0   -> emergency_restart_interval = 1m     // 表示在(60)秒内出现SIGSEGV或者SIGBUS错误的php-cgi进程数如果超过emergency_restart_threshold个,php-fpm就会重启;process_control_timeout = 0      -> process_control_timeout = 5s        //请求处理超时时间;daemonize = yes                  -> daemonize = yes                     //yes 后台运行,no 前台运行listen = 127.0.0.1:9000user = nobody                      -> user = www                       //更改运行用户为wwwgroup = nobody                     -> group = wwwpm = dynamic                       //设置进程管理器如何管理子进程,static - 子进程的数量是固定的,dynamic - 子进程的数量在下面配置的基础上动态设置pm.max_children = 200              //子进程的数量 1个略占2MB内存,pm 设置为 static 时表示创建的,pm 设置为 dynamic 时表示最大可创建的pm.start_servers = 50              //设置启动时创建的子进程数目. 仅在 pm 设置为 dynamic 时使用pm.min_spare_servers = 30          //设置空闲服务进程的最低数目,pm 设置为 dynamic 时使用pm.max_spare_servers = 100         //设置空闲服务进程的最大数目pm.max_requests = 1024             //每个子进程重生之前服务的请求数,对于可能存在内存泄漏的第三方模块来说是非常有用的,如果设置为 '0' 则一直接受请求#500request_terminate_timeout = 5m     //设置单个请求的超时中止时间. 该选项可能会对php.ini设置中的'max_execution_time'因为某些特殊原因没有中止运行的脚本有用request_slowlog_timeout = 30s        //当一个请求该设置的超时时间后,就会将对应的PHP调用堆栈信息完整写入到慢日志中rlimit_files = 65535                  //设置文件打开描述符的rlimit限制,默认值: 系统定义值rlimit_core = 0                      //设置核心rlimit最大限制值. 可用值: 'unlimited' 、0或者正整数. 默认值: 系统定义值;chdir = /var/www                    //设置启动目录,启动时会自动Chdir到该目录. 所定义的目录需要是绝对路径 在这里不需要slowlog = log/$pool.log.slow																(新添加的)#------------------------- end -----------------------#		/usr/local/php/sbin/php-fpm		start				#启动PHP	*******		#-------- nginx.conf 配置 -----------------------------#vi /usr/local/nginx/conf/nginx.confuser www www;																#运行用户和组worker_processes 8;                         #进程的数量,一般推荐为处理器的个数. 可以适当增加,以避免进程在堵塞在IO等待中error_log logs/error.log;                   #错误日志pid logs/nginx.pid;                         #pid文件位置worker_rlimit_nofile 65535;events {	use epoll;        #Linux 下机能最好的 event 模式	#指定 nginx 处理进程的个数,根据硬件调整,和前面工作进程配合起来用,尽量大,但是别把cpu跑到100%就行#其与总处理量的关系用公式表达如下:#MaxClient = worker_processes * worker_connections#因此这两个数的乘积若大于系统最大可用tcp/ip栈数是没有意义.worker_connections 4096;}#-------- HTTP 请求设置 ---------#http {	include mime.types;                     #载入mime类型default_type application/octet-stream;  #默认类型#-------------  日志的格式  -----------------#    #log_format  main  '$remote_addr - $remote_user [$time_local] $request '    #                  '"$status" $body_bytes_sent "$http_referer" '    #                  '"$http_user_agent" "$http_x_forwarded_for"';     #-- 设定请求缓冲 --#		server_names_hash_bucket_size 128;  		client_header_buffer_size 32k;  		large_client_header_buffers 4 32k;  		client_max_body_size 8m; 				sendfile on;  		tcp_nopush     on;  		keepalive_timeout 60;  		tcp_nodelay on;  		fastcgi_connect_timeout 300;  		fastcgi_send_timeout 300;  		fastcgi_read_timeout 300;  		fastcgi_buffer_size 64k;  		fastcgi_buffers 4 64k;  		fastcgi_busy_buffers_size 128k;  		fastcgi_temp_file_write_size 128k;				#-- 开启gzip模块 --#  		gzip on;  		gzip_min_length  1k;  		gzip_buffers     4 16k;  		gzip_http_version 1.0;  		gzip_comp_level 2;  		gzip_types       text/plain application/x-javascript text/css application/xml;  		gzip_vary on; 		log_format  access  '$remote_addr - $remote_user [$time_local] "$request" '  '$status $body_bytes_sent "$http_referer" '  '"$http_user_agent" $http_x_forwarded_for'; 		limit_zone  crawler  $binary_remote_addr  10m;					#限制宽带 10MB		limit_conn  crawler  10;                                #限制单个IP 并发数 10		proxy_set_header        X-Real-IP $remote_addr;         #获取真实ip       #proxy_set_header       X-Forwarded-For   $proxy_add_x_forwarded_for; #获取代理者的真实ip #---- 服务器设置 ---#server {listen 80;              #监听端口server_name localhost;  #WEB服务主机名(域名)#charset utf-8;access_log logs/localhost.access.log access;    #访问日志#--  请求规则 默认请求 --#location / {root /home/www/www;                    #WEB根目录index index.html index.htm index.php;  #默认索引文件名#保留用户真实信息   include proxy.conf;   proxy_set_header Host $host;   proxy_set_header  X-Real-IP  $remote_addr;   proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for; }error_page 404 /404.html;           #页面不存在处理error_page 500 502 503 504 /50x.html;  #服务器错误定向location = /50x.html {root /home/www/www;}#---    PHP 脚本请求全部转发到 FastCGI处理. 使用FastCGI默认配置 ---#location ~ \.php$ {root /home/www/www;fastcgi_pass 127.0.0.1:9000;fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME /home/www/www$fastcgi_script_name;fastcgi_param  QUERY_STRING       $query_string;fastcgi_param  REQUEST_METHOD     $request_method;fastcgi_param  CONTENT_TYPE       $content_type;fastcgi_param  CONTENT_LENGTH     $content_length;fastcgi_param  REQUEST_URI        $request_uri;#保留用户真实信息   include proxy.conf;   proxy_set_header Host $host;   proxy_set_header  X-Real-IP  $remote_addr;   proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for; include        fastcgi_params;}# jsp javalocation ~* \.(jsp|do)$ {	#auth_basic	"this is sports center";	#auth_basic_user_file	/usr/local/www/nginx_passwd;   apache 密码认证  nginx_passwd apache 密码文件	proxy_redirect off;	proxy_set_header Host $host;	proxy_set_header X-Real-IP $remote_addr;	proxy_set_header REMOTE-HOST $remote_addr;	proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;	client_max_body_size 50m;	client_body_buffer_size 256k;	proxy_connect_timeout 30;	proxy_send_timeout 30;	proxy_read_timeout 60;	proxy_buffer_size 256k;	proxy_buffers 4 256k;	proxy_busy_buffers_size 256k;	proxy_temp_file_write_size 256k;	proxy_next_upstream error timeout invalid_header http_500 http_503 http_404;	proxy_max_temp_file_size 128m;        proxy_pass    http://localhost:8080/;    }#------ 禁止访问 .htxxx 文件  ------#location ~ /\.ht {deny all;}#------ 禁止IP访问  ------#server{    server_name _;    return 404;}#---------------------------- end -----------------------------------------------------------------##----- 这个是反向代理的例子 ---#server {	listen 80;    	server_name www.vinbet.com vinbet.com;	location / {		proxy_pass              http://www.vinbet.com/; # vi /etc/host  serverIP www.vinbet.com		proxy_redirect          off;		proxy_set_header        X-Real-IP       $remote_addr;		proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;	}        access_log logs/proxy.access.log ;}#------- 静态文件,nginx自己处理 -------#location ~ ^/(p_w_picpaths|javascript|js|css|flash|media|static)/ {	root /var/www/virtual/big.server.com/htdocs;#过期30天,静态文件不怎么更新,过期可以设大一点,如果频繁更新,则可以设置得小一点。expires 30d;}location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$   {     expires      30d;   }location ~ .*\.(js|css)?$   {     expires      1h;   }#----  把请求转发给后台web服务器,反向代理和fastcgi的区别是,反向代理后面是web服务器,fastcgi后台是fasstcgi监听进程,当然,协议也不一样 --#location / {proxy_pass http://127.0.0.1:8080;}}#-- upstream的负载均衡,weight是权重,可以根据机器配置定义权重。据说nginx可以根据后台响应时间调整。后台需要多个web服务器 --#upstream big_server_com {server 127.0.0.3:8000 weight=5;server 127.0.0.3:8001 weight=5;server 192.168.0.1:8000;server 192.168.0.1:8001;} server {listen 80;server_name big.server.com;access_log logs/big.server.access.log main; #---  Nginx 状况监控设置装备摆设  ---# location ~ ^/NginxStatus/ {     stub_status on;      access_log off;  } #---  禁止访问SEB-INF 目录  ---#  location ~ ^/(WEB-INF)/ {     deny all;  } location / {proxy_pass http://big_server_com;}}#------- upstream的负载均衡 end ----------------------##------   Nginx 监控    ---------------------##---  Nginx 状况监控  ---# location ~ ^/NginxStatus/ {     stub_status on;      access_log off;  }  http://localhost/NginxStatus/ 就可以监控到 Nginx 的运行信息,表现的内容如下Active connections: 70server accepts handled requests 14553819 14553819 19239266Reading: 0 Writing: 3 Waiting: 67 NginxStatus 表现的内容意思如下:•active connections – 当前 Nginx 正处置的勾当毗连数。•server accepts handled requests — 统共处置了 14553819 个毗连 , 乐成建立 14553819 次握手 ( 证实中心没有失败的 ), 统共处置了 19239266 个恳求 ( 均匀每次握手处置了 1.3 个数据恳求 )。•reading — nginx 读取到客户真个 Header 信息数。•writing — nginx 返回给客户真个 Header 信息数。•waiting — 开启 keep-alive 的环境下,这个值即是 active – (reading + writing),意思便是 Nginx 已经处置完正在等待下一次恳求指令的驻留毗连。*****注意文件的权限问题*****