centors下搭建nginx+php+zend+memcached+mysql

1. 安装gcc

机器上缺少kernel-headers,导致yum安装GCC不成功,所以先要安装对应版本的/kernel-headers

uname -a

wget ftp://mirror.switch.ch/pool/1/mirror/scientificlinux/57/x86_64/updates/security/kernel-headers-2.6.18-274.12.1.el5.x86_64.rpm

rpm -ivh kernel-headers-2.6.18-274.12.1.el5.x86_64.rpm
yum -y install gcc gcc-g++

yum -y install make

2. 安装依赖包

yum -y install pcre-devel zlib-devel md5-devel openssl



3. 安装php

yum -y install php

安装gd库

yum install php-gd*

4. 安装zend

下载和解压tar -xzf ZendOptimizer-3.3.9-linux-glibc23-x86_64.tar.gz

cp data/5_1_x_comp/ZendOptimizer.so /opt/php/lib/      ##这里的路径看你自己的安装情况,我这里是把php的lib放到这里

5. 安装nginx

   wget http://nginx.org/download/nginx-1.3.0.tar.gz
   tar -xzf nginx-1.3.0.tar.gz
   cd nginx-1.3.0

   ./configure; make ; make install;

6. 安装mysql

yum -y install mysql mysql-server php-mysql


7. 安装fastcgi

wget http://download.lighttpd.net/spawn-fcgi/releases-1.6.x/spawn-fcgi-1.6.3.tar.gz

tar -xzf spawn-fcgi-1.6.3.tar.gz
然后就是./configure; make; make install


8. 安装memcached

yum -y install  libevent-devel

wget http://memcached.googlecode.com/files/memcached-1.4.13.tar.gz

解压编译。。。

 vi scripts/memcached.sysv
 cp scripts/memcached.sysv /etc/init.d/memcached
 chmod 755 /etc/init.d/memcached
  chkconfig --add memcached
  chkconfig memcached on

或者安装redis

wget http://redis.googlecode.com/files/redis-2.6.0-rc3.tar.gz


9. 配置

9.1 环境配置

groupadd www -g 49

useradd -u 49 -g www www

9.2 修改mysql默认密码

mysql -u root mysql
mysql> 状态下输入  update user set password=password('新密码') whereuser='root';

增加用户:

 grant all privileges on *.* to www@localhost identified by 'hainan' with grant option;

#grant all privileges on *.* to '用户名'@'%' identified by '密码';
flush privileges;

修改已有密码的数据库

       1.首先停止正在运行的MySQL进程
  运行 killall -TERM mysqld
  2、以安全模式启动MySQL (数据库安装路径自行修改)
  运行 /usr/local/mysql/bin/mysqld_safe --skip-grant-tables &
  3、完成以后就可以不用密码进入MySQL了
  运行 /usr/local/mysql/bin/mysql -u root -p 进入
  4、更改密码
  >use mysql
  >update user set password=password("新密码") where user="root";
  >flush privileges;


9.3 配置默认启动

echo "/usr/local/nginx/sbin/nginx">> /etc/rc.d/rc.local

echo "spawn-fcgi -C 10 -p 9000 -a 0.0.0.0 -f /usr/bin/php-cgi" >> /etc/rc.d/rc.local

chkconfig mysqld on


9.4 应用配置

【nginx】

location ~ \.php$ {
            root           /opt/wwwn;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME /opt/www$fastcgi_script_name;
            include        fastcgi_params;
        }

 location / {
            root   /opt/www;
            index  index.html index.htm index.php;
        }

【php】
vi /etc/php.ini

[Zend]
zend_optimizer.optimization_level=1023
zend_extension=/opt/php/lib/ZendOptimizer.so


9.5 启动

/usr/local/nginx/sbin/nginx

/usr/local/bin/spawn-fcgi -C 10 -p 9000 -a 0.0.0.0 -f /usr/bin/php-cgi


9.6配置定时任务

*/3 * * * * /usr/bin/curl -o /dev/null http://localhost/xxx.php /dev/null 2>&1



///fpm fastcgi

四、 PHP与PHP-FPM的安装及优化

1.下载安装包
www.php.net官方网站下载PHP源码包,这里下载的是稳定版php-5.2.13.tar.gz。
http://php-fpm.org/downloads/下载对应的PHP-FPM源码包,这里下载的是php-5.2.13-fpm-0.5.13.diff.gz。
需要注意,在下载软件包版本时,尽量使PHP和PHP-FPM版本一致,如果版本之间相差太大,可以会出现兼容问题。

2.配置安装环境
安装PHP需要下面软件包的支持,如果没有安装,请自行安装。

 
 
  1. gcc gcc-c++ libxml2 libxml2-devel autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel  zlib zlib-devel glibc glibc-devel glib2 glib2-devel   

由于各个Linux系统版本的不确定性,读者也可以在安装PHP过程中,根据错误提示信息,安装对应的软件库。

3.开始编译安装PHP和PHP-FPM
编译安装PHP和PHP-FPM很简单,下面是安装过程:

 
 
  1. [root@localhost local]#tar zxvf php-5.2.13.tar.gz  
  2. [root@localhost local]#gzip -cd php-5.2.13-fpm-0.5.13.diff.gz | patch -d php-5.2.13 -p1  
  3. [root@localhost local]#cd php-5.2.13  
  4. [root@localhost php-5.2.13]#./configure  --prefix=/usr/local/php --enable-fastcgi --enable-fpm  
  5. [root@localhost php-5.2.13]#make  
  6. [root@localhost php-5.2.13]#make install  
  7. [root@localhost php-5.2.13]cp php.ini-dist /usr/local/php/lib/php.ini  

其中,第二步将PHP-FPM作为补丁加入PHP源码中。
在“./configure”编译选项中,指定将PHP安装到/usr/local下,“--enable-fastcgi”是启用对PHP的FastCGI支持,“--enable-fpm”是激活对FastCGI模式的fpm支持。
在编译PHP时可以加入很多编译选项,但是这里为了介绍PHP的FastCGI功能没有加入更多的编译选项。

4.配置与优化PHP-FPM
PHP的全局配置文件是php.ini,在上面的步骤中,已经将此文件复制到了/usr/local/php/lib/php.ini下。可以根据每个应用需求的不同,对php.ini进行相应的配置。
下面重点介绍PHP-FPM引擎的配置文件。
 

根据上面指定的安装路径,PHP-FPM的默认配置文件为/usr/local/php/etc/php-fpm.conf。
php-fpm.conf是一个XML格式的纯文本文件,其内容很容易看明白。这里重点介绍几个重要的配置标签:
 

标签listen_address是配置fastcgi进程监听的IP地址以及端口,默认是127.0.0.1:9000。
<value name="listen_address">127.0.0.1:9000</value>
 

标签display_errors用来设置是否显示PHP错误信息,默认是0,不显示错误信息,设置为1可以显示PHP错误信息。
<value name="display_errors">0</value>
 

标签user和group用于设置运行FastCGI进程的用户和用户组。需要注意的是,这里指定的用户和用户组要和Nginx配置文件中指定的用户和用户组一致。
<value name="user">nobody</value>
<value name="group">nobody</value>
 

标签max_children用于设置FastCGI的进程数。根据官方建议,小于2GB内存的服务器,可以只开启64个进程,4GB以上内存的服务器可以开启200个进程。
<value name="max_children">5</value>
 

标签request_terminate_timeout用于设置FastCGI执行脚本的时间。默认是0s,也就是无限执行下去,可以根据情况对其进行修改。
<value name="request_terminate_timeout">0s</value>
 

标签rlimit_files用于设置PHP-FPM对打开文件描述符的限制,默认值为1024。这个标签的值必须和Linux内核打开文件数关联起来,例如要将此值设置为65535,就必须在Linux命令行执行'ulimit -HSn 65536'。
<value name="rlimit_files">1024</value>
 

标签max_requests指明了每个children最多处理多少个请求后便会被关闭,默认的设置是500。
<value name="max_requests">500</value>
 

标签allowed_clients用于设置允许访问FastCGI进程解析器的IP地址。如果不在这里指定IP地址,Nginx转发过来的PHP解析请求将无法被接受。
<value name="allowed_clients">127.0.0.1</value>

5.管理FastCGI进程
在配置完php-fpm后,就可以启动FastCGI进程了。启动fastcgi进程有两种方式:

 
 
  1. /usr/local/php/bin/php-cgi --fpm   
  2. 或者  
  3. /usr/local/php/sbin/php-fpm  start  

建议采用第二种方式启动FastCGI进程。
 /usr/local/php/sbin/php-fpm还有其他参数,具体为start|stop|quit|restart|reload|logrotate。
每个启动参数的含义如下:

 
 
  1.  start,启动PHP的FastCGI进程。  
  2.  stop,强制终止PHP的FastCGI进程。  
  3.  quit,平滑终止PHP的FastCGI进程。  
  4.  restart, 重启PHP的FastCGI进程。  
  5.  reload, 重新加载PHP的php.ini。  
  6.  logrotate, 重新启用log文件。  

reload是个很重要的参数,它可以在PHP的FastCGI进程不中断的情况下重新加载改动过的php.ini,因此通过php-fpm可以平滑变更FastCGI模式下的PHP设置。


在FastCGI进程启动后,其监听的IP地址和端口也随即启动,可以通过ps和netstat查看相关信息。

 
 
  1.  [root@localhost php]# netstat -antl|grep 9000  
  2. tcp        0      0 127.0.0.1:9000              0.0.0.0:*                   LISTEN    
  3. [root@localhost php]# ps -ef|grep php-cgi  
  4. root      3567     1     0  17:06 ?       00:00:00 /usr/local/php/bin/php-cgi --fpm --fpm-config /usr/local/php/etc/php-fpm.conf  
  5. nobody    3568  3567  0  17:06 ?        00:00:00 /usr/local/php/bin/php-cgi --fpm --fpm-config /usr/local/php/etc/php-fpm.conf  
  6. nobody    3569  3567  0  17:06 ?        00:00:00 /usr/local/php/bin/php-cgi --fpm --fpm-config /usr/local/php/etc/php-fpm.conf  
  7. nobody    3570  3567  0  17:06 ?        00:00:00 /usr/local/php/bin/php-cgi --fpm --fpm-config /usr/local/php/etc/php-fpm.conf  
  8. nobody    3571  3567  0  17:06 ?        00:00:00 /usr/local/php/bin/php-cgi --fpm --fpm-config /usr/local/php/etc/php-fpm.conf  
  9. nobody    3572  3567  0  17:06 ?        00:00:00 /usr/local/php/bin/php-cgi --fpm --fpm-config /usr/local/php/etc/php-fpm.conf  
  10. root      3583  3524  0 17:09 pts/1    00:00:00 grep php-cgi  

五、配置Nginx来支持PHP
Nginx的安装特别简单,前面已经对此进行了详细介绍,这里不再进行讲述。下面重点介绍Nginx如何通过php-fpm的FastCGI进程对PHP进行解析处理。
由于Nginx本身不会对PHP进行解析,因此要实现Nginx对PHP的支持,其实是将对PHP页面的请求交给fastCGI进程监听的IP地址及端口。如果把php-fpm当做动态应用服务器,那么Nginx其实就是一个反向代理服务器。Nginx通过反向代理功能实现对PHP的解析,这就是Nginx实现PHP动态解析的原理。
这里假定Nginx的安装目录为/usr/local,则Nginx配置文件的路径为/usr/local/nginx/conf/nginx.conf。下面是在Nginx下支持PHP解析的一个虚拟主机配置实例。

 
 
  1.         server {  
  2.  include port.conf;  
  3.  server_name www.ixdba.net ixdba.net;  
  4.  
  5.   location / {  
  6.  index index.html index.php;  
  7.  root /web/www/www.ixdba.net;  
  8.  }  
  9.  
  10.  location ~ \.php$ {  
  11.             root           html;  
  12.             fastcgi_pass   127.0.0.1:9000;  
  13.             fastcgi_index  index.php;  
  14.             fastcgi_param  SCRIPT_FILENAME  html$fastcgi_script_name;  
  15.             include        fastcgi_params;  
  16.         }  
  17. }  
  18.  

通过location指令,将所有以php为后缀的文件都交给127.0.0.1:9000来处理,而这里的IP地址和端口就是FastCGI进程监听的IP地址和端口。
fastcgi_param指令指定放置PHP动态程序的主目录,也就是$fastcgi_script_name前面指定的路径,这里是/usr/local/nginx/html目录,建议将这个目录与Nginx虚拟主机指定的根目录保持一致,当然也可以不一致。
fastcgi_params文件是FastCGI进程的一个参数配置文件,在安装Nginx后,会默认生成一个这样的文件,这里通过include指令将FastCGI参数配置文件包含了进来。
接下来,启动nginx服务。
/usr/local/nginx/sbin/nginx
到此为止,Nginx+PHP已经配置完成。

六、测试Nginx对PHP的解析功能
这里在/usr/local/nginx/html目录下创建一个phpinfo.php文件,内容如下:
<?php phpinfo(); ?>
然后通过浏览器访问http://www.ixdba.net/index.html,默认会在浏览器显示“Welcome to Nginx!”表示Nginx正常运行。
接着在浏览器中访问http://www.ixdba.net/phpinfo.php,如果PHP能够正常解析,会出现PHP安装配置以及功能列表统计信息。

七、实例讲解Nginx中FastCGI参数的优化
在配置完成Nginx+FastCGI之后,为了保证Nginx下PHP环境的高速稳定运行,需要添加一些FastCGI优化指令。下面给出一个优化实例,将下面代码添加到Nginx主配置文件中的HTTP层级。

 
 
  1. fastcgi_cache_path /usr/local/nginx/fastcgi_cache levels=1:2 keys_zone=TEST:10m inactive=5m;    
  2. fastcgi_connect_timeout 300;    
  3. fastcgi_send_timeout 300;    
  4. fastcgi_read_timeout 300;    
  5. fastcgi_buffer_size 64k;    
  6. fastcgi_buffers 4 64k;    
  7. fastcgi_busy_buffers_size 128k;    
  8. fastcgi_temp_file_write_size 128k;    
  9. fastcgi_cache TEST;    
  10. fastcgi_cache_valid 200 302 1h;    
  11. fastcgi_cache_valid 301 1d;    
  12. fastcgi_cache_valid any 1m;     

下面是对上述代码的含义进行介绍。
第一行代码是为FastCGI缓存指定一个文件路径、目录结构等级、关键字区域存储时间和非活动删除时间。
fastcgi_connect_timeout指定连接到后端FastCGI的超时时间。
fastcgi_send_timeout指定向FastCGI传送请求的超时时间,这个值是已经完成两次握手后向FastCGI传送请求的超时时间。
fastcgi_read_timeout指定接收FastCGI应答的超时时间,这个值是已经完成两次握手后接收FastCGI应答的超时时间。

fastcgi_buffer_size用于指定读取FastCGI应答第一部分需要用多大的缓冲区,这个值表示将使用1个64KB的缓冲区读取应答的第一部分(应答头),可以设置为fastcgi_buffers选项指定的缓冲区大小。

fastcgi_buffers指定本地需要用多少和多大的缓冲区来缓冲FastCGI的应答请求。如果一个PHP脚本所产生的页面大小为256KB,那么会为其分配4个64KB的缓冲区来缓存;如果页面大小大于256KB,那么大于256KB的部分会缓存到fastcgi_temp指定的路径中,但是这并不是好方法,因为内存中的数据处理速度要快于硬盘。一般这个值应该为站点中PHP脚本所产生的页面大小的中间值,如果站点大部分脚本所产生的页面大小为256KB,那么可以把这个值设置为“16 16k”、“4 64k”等。

fastcgi_busy_buffers_size的默认值是fastcgi_buffers的两倍。

fastcgi_temp_file_write_size表示在写入缓存文件时使用多大的数据块,默认值是fastcgi_buffers的两倍。

fastcgi_cache表示开启FastCGI缓存并为其指定一个名称。开启缓存非常有用,可以有效降低CPU的负载,并且防止502错误的发生,但是开启缓存也会引起很多问题,要视具体情况而定。
fastcgi_cache_valid、fastcgi用来指定应答代码的缓存时间,实例中的值表示将200和302应答缓存一个小时,将301应答缓存1天,其他应答均缓存1分钟。


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值