`
zhaohaolin
  • 浏览: 1010687 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

基于CentOS 5.4搭建nginx+php+spawn-fcgi+mysql

 
阅读更多

基于CentOS 5.4搭建nginx+php+spawn-fcgi+mysql高性能php平台

         作者:pkfeiyang    主页:pkfeiyang.cublog.cn


    首先介绍下支持php的cgi有php-fpm和spawn-fcgi 目前比较常用
对于php-fpm支持cgi的安装lemp安装详解:http://blog.chinaunix.net/u3/103362/showart_2301020.html

下面主要介绍
nginx+php+spawn-fcgi+mysql 
 什么是spawn-fcgi?
spawn-fcgi是一个通用的FastCGI管理服务器

   她是lighttpd中的一部份,但目前已经单独成为一个项目,最新的lighttpd没有这一块,但可以在以前版本中找到她在lighttpd-1.4.15( http://www.lighttpd.net/download/lighttpd-1.4.15.tar.gz )中就有她Note注:最新的spawn-fcgi可以到lighttpd.net网站搜索“spawn-fcgi”找到她的最新版本发布地址目前她的下载地址是http://redmine.lighttpd.net/news/2 最新版本是http://www.lighttpd.net/download/spawn-fcgi-1.6.0.tar.gz

下载软件包:

下载软件包:
     pcre 下载
   wget http://downloads.sourceforge.net/project/pcre/pcre/8.10/pcre-8.10.tar.gz
     nginx 下载 
   wget http://nginx.org/download/nginx-0.8.49.tar.gz
     gd库下载
   wget http://www.libgd.org/releases/gd-latest.tar.gz
     lib库下载
   wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.13.tar.gz
  wget http://cdnetworks-kr-1.dl.sourceforge.net/project/mcrypt/Libmcrypt/2.5.8/libmcrypt-2.5.8.tar.bz2
     算法需要的
 wget http://acelnmp.googlecode.com/files/mhash-0.9.9.9.tar.gz
 
 wget http://sourceforge.net/projects/mcrypt/files/MCrypt/2.6.8/mcrypt-2.6.8.tar.gz
 wget http://downloads.sourceforge.net/project/mcrypt/MCrypt/2.6.8/mcrypt-2.6.8.tar.gz
 wget http://downloads.mysql.com/archives/mysql-5.1/mysql-5.1.48.tar.gz
 wget http://php-fpm.org/downloads/php-5.2.13-fpm-0.5.14.diff.gz
 wget http://cn.php.net/get/php-5.3.3.tar.gz
 wget http://pecl.php.net/get/memcache-2.2.5.tgz
 wget http://pecl.php.net/get/PDO_MYSQL-1.0.2.tgz
 wget http://bart.eaccelerator.net/source/0.9.6.1/eaccelerator-0.9.6.1.tar.bz2

  添加用户名
 71  useradd www
   72  groupadd www
   73  usermod -a -G www www
   74  mkdir -p /website/web001
   75  chmod +w /website/web001/ -R
   76  chown www:www /website/web001/ -R
   77  useradd web001
   78  usermod -g web001 www
   79  chown -R web001:www /website/web001/
调节时间
crontab -e
加入:15 3 * * * /usr/sbin/ntpdate 210.72.145.44 >/dev/null 2>&1

安装需要的软件包:
 yum -y install ntp vim-enhanced gcc gcc-c++ gcc-g77 flex bison autoconf automake bzip2-devel ncurses-devel opens
sl-devel libtool* zlib-devel libxml2-devel libjpeg-devel libpng-devel libtiff-devel fontconfig-devel freetype-devel 
libXpm-devel gettext-devel curl curl-devel pam-devel e2fsprogs-devel krb5-devel libidn libidn-devel libevent-devel libevent 

安装mysql  


157  CFLAGS="-march=nocona -O3 -pipe"

  158  CXXFLAGS="{CFLAGS}"
 
  161  tar -xzf mysql-5.1.48.tar.gz 
  162  cd mysql-5.1.48

 ./configure --prefix=/usr/local/mysql5 --localstatedir=/data/mysql/data --with-comment=Source --with-mysqld-u
ser=mysql --without-debug --with-big-tables --with-charset=gbk --with-extra-charsets=all --with-pthread --enable-sta
tic --with-collation=gbk_chinese_ci --enable-thread-safe-client --with-client-ldflags=-all-static --with-mysqld-ldfl
ags=-all-static --enable-assembler --with-plugins=all --without-ndb-debug 

make
make install
useradd mysql -d /data/mysql -s/sbin/nologin
/usr/local/mysql/bin/mysql_install_db--user=mysql
/usr/local/mysql5/bin/mysqld_safe --user=mysql &(注意)
cd /usr/local/mysql
chown -R root:mysql .
mkdir -p /data/mysql/data
chown -R mysql /data/mysql/data
cp share/mysql/my-huge.cnf /etc/my.cnf
cp share/mysql/mysql.server/etc/rc.d/init.d/mysqld
chmod 755 /etc/rc.d/init.d/mysqld
chkconfig --add mysqld
/etc/rc.d/init.d/mysqld start

安装php

tar -xjf gd-2.0.35.tar.bz2 
  106  
  107  cd gd-2.0.35
  108  
  109  ./configure --prefix=/usr/local/gd2 
  110  make && make install
  111  cd ..
  112 
  113  tar -xjf libmcrypt-2.5.8.tar.bz2 
  114  cd libmcrypt-2.5.8
  115  
  116  ./configure --prefix=/usr 
  117 
  118  make && make install
  119  
  122  tar -xzf libiconv-1.13.tar.gz 
  123  cd libiconv-1.13
  124  ls
  125  ./configure --prefix=/usr 
  126  make && make install
  127  
  128  
  129  tar -xzf mhash-0.9.9.9.tar.gz 
  130  cd mhash-0.9.9.9
  131  ./configure --prefix=/usr 
  132  make && make install
  133  vi /etc/ld.so.conf
        加上/usr/lib

         ldconfig
tar zxvf php-5.2.5.tar.gz(注意php-cgi 需要指定--enable-fastcgi和 --enable-force-cgi-redirect,并且好要注意php-cgi的生成和版本有关,5.2.x 的版本是可以的,5.3.x 以上集成了php-fpm 对于生成php-cgi没有多大效果)
cd php-5.2.5/
./configure --prefix=/usr/local/php-fcgi --with-config-file-path=/usr/loca/php-fcgi/etc --with-mysql=/usr/local/mysql5 --with-iconv-dir=/usr/local --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir --enable-xml --disable-debug --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-force-cgi-redirect --enable-mbstring --with-mcrypt
--enable-pdo --with-pdo-mysql=shared --with-pdo-sqlite=shared (这个需要加上 如果你用pdo 来连接数据库的话)
sed -i 's#-lz -lm -lxml2 -lz -lm -lxml2 -lz -lm -lcrypt#& -liconv#' Makefile
make
make install
cp php.ini-dist /usr/local/webserver/php/etc/php.ini

编辑php.ini
 sed -i 's#extension_dir = "./"#extension_dir = "/usr/local/php-fcgi/lib/php/extensions/no-debug-non-zts-20060613/"\nextension = "memcache.so"\nextension = "gd.so"\n#' /usr/local/php-fcgi/etc/php.ini


安装memache
tar -xzf memcache-2.2.5.tgz
cd memcache-2.2.5
/usr/local/php-fcgi/bin/phpize
./configure --with-php-config=/usr/local/php-fcgi/bin/php-config
make && make install
安装eaccelerator
tar -xjf eaccelerator-0.9.6.1.tar.bz2
/usr/local/php-fcgi/bin/phpize
cd eaccelerator-0.9.6.1
/usr/local/php-fcgi/bin/phpize
./configure --enable-eaccelerator=shared --with-php-config=/usr/local/php-fcgi/bin/php-config
安装PDO_MYSQL
tar -xzf PDO_MYSQL-1.0.2.tgz
cd PDO_MYSQL-1.0.2
/usr/local/php-fcgi/bin/phpize
./configure --with-php-config=/usr/local/php-fcgi/bin/php-config --with-pdo-mysql=/usr/local/mysql5
make && make install
安装ZendOptimizer 这个版本高,不用安装了
tar -xzf ZendOptimizer-3.3.9-linux-glibc23-i386.tar.gz

安装spawn-fcgi


#tar zvxf spawn-fcgi-1.6.3.tar.gz
#cd spawn-fcgi-1.6.3
#./configure --prefix=/usr/local/spawn-fcgi 
 make && make install
/usr/local/spawn/bin/spawn-fcgi -a 127.0.0.1 -p 10080 -C 64 -u www -f /usr/bin/php-cgi
启动php-cgi进程,监听127.0.0.1的10080端口,进程数为64(如果服务器内存小于3GB,可以只开启25个进程),用户为www:

参数含义如下:
-f <fcgiapp> 指定调用FastCGI的进程的执行程序位置,根据系统上所装的PHP的情况具体设置。
-a <addr> 绑定到地址addr。
-p <port> 绑定到端口port。
-s <path> 绑定到unix socket的路径path。
-C <childs> 指定产生的FastCGI的进程数,默认为5。(仅用于PHP)
-P <path> 指定产生的进程的PID文件路径。
-u和-g FastCGI使用什么身份(-u 用户 -g 用户组)运行,CentOS下可以使用apache用户,其他的根据情况配置,如nobody、www-data等。

4. 将这行代码加入到/etc/rc.local文件底部,这样系统启动的时候就可以同时启动PHP的FastCGI进程
 


安装nginx
安装 pcre
tar -xzf pcre-8.10.tar.gz
cd pcre-8.10
./configure 
 make && make install

wget 
http://labs.frickle.com/files/ngx_cache_purge-1.0.tar.gz
tar zxvf ngx_cache_purge-1.0.tar.gz
tar -xzf nginx-0.8.49.tar.gz

cd nginx-0.8.49

./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-openssl=/usr/lib   
--add-module=../ngx_cache_purge-1.0--add-module=/Users/mikewest/Repositories/nginx-static-etags (当nginx需要使用etags 进行页面缓
存的设置时就需要加载这个模块 然后在nginx。conf 添加这个参数
--add-module=../ngx_cache_purge-1.0 编译ngx_cache_purge-1.0.tar.gz时
location / {
...
FileETag on;
...
}

make && make install

编辑nginx.conf文件



user  www www;
worker_processes 50;
#worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;
pid /var/run/nginx.pid;
# [ debug | info | notice | warn | error | crit ]
#error_log  /dev/null;
error_log  /var/www/logs/nginx_error.log error;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;
#Specifies the value for maximum file descriptors that can be opened by this process.
worker_rlimit_nofile 6553;

events{
       use epoll;

       #maxclient = worker_processes * worker_connections / cpu_number
       worker_connections 6553;
}
http{
       include       mime.types;
       default_type  application/octet-stream;
       charset  utf-8;

       log_format  main  '$remote_addr - $remote_user [$time_local] $request '
                         '"$status" $body_bytes_sent "$http_referer" '
       #access_log  /dev/null;

       #General Options
       server_names_hash_bucket_size 128;
       client_header_buffer_size 32k;
       large_client_header_buffers 4 64k;

       ignore_invalid_headers   on;
       recursive_error_pages    on;
       server_name_in_redirect off;

       sendfile                 on;

       #timeouts
       keepalive_timeout 60;

       #TCP Options
       tcp_nopush  on;
       tcp_nodelay on;

       #fastcgi options
       fastcgi_connect_timeout 300;
       fastcgi_send_timeout 300;
       fastcgi_read_timeout 300;
       fastcgi_temp_path /var/www/tmp/fastcgi_temp_path;
       fastcgi_cache_methods GET HEAD;
       fastcgi_cache_min_uses 3;
       #fastcgi_cache fastcgi_cache;
       fastcgi_cache_valid 200 302 20m;
       fastcgi_cache_valid 301 1h;
       fastcgi_cache_valid any 20m;
       fastcgi_cache_key 127.0.0.1:9000$request_uri;
       fastcgi_buffer_size 128k;
       fastcgi_buffers 4 128k;
       fastcgi_busy_buffers_size 128k;
       fastcgi_temp_file_write_size 128k;
       fastcgi_intercept_errors on;
       ###limit
      limit_zone one $binary_remote_addr 10m;
      limit_conn one 5;
     #    limit_req_zone $binary_remote_addr zone=one2:10m rate=5r/s;
     #    limit_req zone=one2 burst=5;
       #size limits
       client_max_body_size       50m;
       client_body_buffer_size    256k;

       #gzip  compression
       gzip on;
       gzip_min_length  0;
       gzip_buffers     16 8k;
       gzip_http_version 1.0;
       gzip_comp_level 9;
       gzip_types       text/plain text/css image/x-icon image/png;
       gzip_vary on;

       #temp files
       proxy_temp_path            /var/www/tmp/proxy_temp_path;
#       fastcgi_temp_path           /var/www/tmp/fastcgi_temp;
       client_body_temp_path       /var/www/tmp/client_body_temp;
       #client_body_temp_path  /usr/local/nginx8/client_body_temp 1 2;
       #proxy_temp_path        /usr/local/nginx8/proxy_temp 1 2;
       #fastcgi_temp_path      /usr/local/nginx8/fastcgi_temp 1 2;
       #proxy 麓煤?铆禄潞麓忙?猫??
            #proxy
           proxy_buffering on;
          proxy_cache_min_uses 3;
          proxy_cache_path /var/www/tmp/proxy_cache_path levels=1:2 keys_zone=cache:500m inactive=30m max_size=10000M;
          proxy_cache_valid any 10m;
          proxy_cache_methods GET HEAD;
          proxy_cache_key "$host:$server_port$uri$is_args$args";
          proxy_ignore_client_abort off;
          proxy_intercept_errors on;
          proxy_next_upstream error timeout invalid_header;
          proxy_redirect off;
          proxy_set_header X-Forwarded-For $remote_addr;
          proxy_connect_timeout 60;
          proxy_send_timeout 60;
          proxy_read_timeout 60;
        #upstream ?枚录炉?潞?? 
        upstream  spawn  {
        # ip_hash;
         server   127.0.0.1:10080;
         #server   127.0.0.1:9002;
        # include         vhosts/tv.feiyang.com.conf;
          }


       # The following includes are specified for virtual hosts
          include         vhosts/tv.feiyang.com.conf;
}

编辑tv.feiyang.com.conf
server {
    listen       80;
    server_name  tv.feiyang.com;
    index index.html index.htm index.php;
    root  /website/web001;
    error_page 404 500 502 503 504 http://tv.feiyang.com;
    ##servername chong ding xiang
    #  rewrite ^/(.*) http://192.168.188.133/$1 last;
    #     rewrite ^/(.*) /test.php last;
    location / {


     proxy_next_upsteam http_502 http_504 error timeout invalid_header;
     proxy_cache_use_stale error timeout invalid_header updating http_500     http_502 http_503 http_504;
        proxy_ignore_headers Expires Cache-Control;
             }
    location ~ .*\.(php|php5)?$
    {
   
     #  fastcgi_pass spawn;
       fastcgi_pass  127.0.0.1:10080;
       include spawn_php5.conf;
       fastcgi_index  index.php;
      }
       location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|js|css)$
    {
        expires      3d;
    }
    log_format  wwwlogs  '$http_x_forwarded_for - $remote_addr - $remote_user [$time_local] "$request" '
               '$status $body_bytes_sent "$http_referer" '
               '"$http_user_agent" $http_x_forwarded_for';
    access_log  /var/www/logs/access.feiyang.log  wwwlogs;
  }


编辑spawn_php5.conf
 fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
fastcgi_param  SERVER_SOFTWARE    nginx;
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  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
fastcgi_param  REQUEST_URI        $request_uri;
fastcgi_param  DOCUMENT_URI       $document_uri;
fastcgi_param  DOCUMENT_ROOT      $document_root;
fastcgi_param  SERVER_PROTOCOL    $server_protocol;
fastcgi_param  REMOTE_ADDR        $remote_addr;
fastcgi_param  REMOTE_PORT        $remote_port;
fastcgi_param  SERVER_ADDR        $server_addr;
fastcgi_param  SERVER_PORT        $server_port;
fastcgi_param  SERVER_NAME        $server_name;
# PHP only, required if PHP was built with --enable-force-cgi-redirect
#fastcgi_param  REDIRECT_STATUS    200;



5、启动Nginx

ulimit -SHn 51200
/usr/local/webserver/nginx/sbin/nginx -c /usr/local/webserver/nginx/conf/nginx.conf


  四、配置开机自动启动Nginx + PHP

vi /etc/rc.local
  在末尾增加以下内容:


引用
ulimit -SHn 51200
/usr/local/webserver/php/bin/spawn-fcgi -a 127.0.0.1 -p 10080 -C 64 -u www -f /usr/local/webserver/php/bin/php-cgi
/usr/local/webserver/nginx/sbin/nginx -c /usr/local/webserver/nginx/conf/nginx.conf


  五、优化Linux内核参数

vi /etc/sysctl.conf
  在末尾增加以下内容:


引用
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 300
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.ip_local_port_range = 5000    65000

  使配置立即生效:

/sbin/sysctl -p


  六、在不停止Nginx服务的情况下平滑变更Nginx配置
  (1)、修改/usr/local/webserver/nginx/conf/nginx.conf配置文件后,请执行以下命令检查配置文件是否正确:

/usr/local/webserver/nginx/sbin/nginx -t
  如果屏幕显示以下两行信息,说明配置文件正确:
  the configuration file /usr/local/webserver/nginx/conf/nginx.conf syntax is ok
  the configuration file /usr/local/webserver/nginx/conf/nginx.conf was tested successfully


  (2)、这时,输入以下命令查看Nginx主进程号:

ps -ef | grep "nginx: master process" | grep -v "grep" | awk -F ' ' '{print $2}'
  屏幕显示的即为Nginx主进程号,例如:
  6302
  这时,执行以下命令即可使修改过的Nginx配置文件生效:


kill -HUP 6302

 

分享到:
评论

相关推荐

    基于CentOS 5.4搭建nginx+php+spawn-fcgi+mysql高性能php平台

    ### 基于CentOS 5.4搭建nginx+php+spawn-fcgi+mysql高性能PHP平台 #### 平台概述 在《基于CentOS 5.4搭建nginx+php+spawn-fcgi+mysql高性能php平台》这篇技术文章中,作者哈密瓜详细介绍了如何在CentOS 5.4上构建一...

    CentOS6.3系统Yum安装php+spawn-fcgi+nginx和数据库mysql详细教程.pdf

    在本文中,我们将深入探讨如何在CentOS 6.3系统上使用Yum安装PHP、spawn-fcgi、Nginx以及MySQL数据库。首先,确保你的系统已经安装了最新的CentOS 6.3版本,并完成了最基本的网络配置。 1. **系统安装与网络配置** ...

    CentOS5.4简易安装NginxPHPMysql.pdf

    在IT领域,尤其是在服务器搭建和运维中,CentOS操作系统经常被用作基础平台,而Nginx、PHP和MySQL这三者则是构建高效Web服务的关键组件。本文将详细阐述如何在CentOS 5.4环境下简易安装这三者,以及它们的优缺点。 ...

    centos5.4 LAMP平台搭建

    在搭建高性能的php平台部分,推荐使用nginx+php+spawn-fcgi+mysql的组合。nginx是一个高性能的HTTP和反向代理服务器,它具有资源占用少、并发能力强的特点。php通过spawn-fcgi启动,这样可以有效管理多个PHP进程,...

    spawn搭建轻量化web服务器

    "spawn-fcgi"是一个小巧而强大的工具,常用于搭建轻量级的FastCGI Web服务器。本篇文章将详细介绍spawn-fcgi以及如何利用它来创建高效运行的Web环境。 FastCGI是一种协议,用于将Web服务器的工作负载分发到外部进程...

    lamp环境迁移lnmp

    - **上传安装文件**:将Nginx的安装文件和spawn-fcgi的安装文件上传到Nginx服务器的`/tmp`目录中。 - **挂载yum源**:使用`mount /dev/cdrom /mnt/cdrom/`命令挂载yum源镜像。 - **安装Nginx**:执行`rpm -ivh /tmp/...

    centos7搭建nginx

    搭建nginx-1.16.1 1.安装 gcc 环境 yum -y install gcc gcc-c++ #nginx编译时依赖gcc环境 2.安装 pcre yum -y install pcre pcre-devel #让nginx支持重写功能 3.安装 zlib yum -y install zlib zlib-devel #zlib库...

    Nginx_0.7搭建教程

    7. 启动Nginx和PHP FastCGI进程管理器(如spawn-fcgi或php-fpm)。 8. 验证安装,检查Nginx状态页面以监控活动连接数。 作者提供的Nginx配置示例中可能会包含状态监控页面的配置,以实时查看服务器性能。在生产环境...

    LNMP在CentOS_6下的配置[借鉴].pdf

    LNMP(Linux, Nginx, MySQL, PHP)是一种常见的服务器环境配置,常用于搭建高效能的Web服务。本文将详细阐述如何在CentOS 6操作系统上配置LNMP环境,特别强调了在CentOS 6下与在CentOS 5下配置的主要区别。 首先,...

    fastcgi-2.4.0安装包

    这个脚本可以使用`spawn-fcgi`(如果已安装)或`fcgiwrap`工具来启动FastCGI进程,并将其绑定到特定的端口或套接字。 6. **启动和测试**:使用创建的服务脚本启动FastCGI进程,并通过访问Web服务器上的一个PHP或...

    centos icinga 安装配置

    此外,为了提升Web服务性能,可以安装额外的工具如`autoreconf`, `autotools`, `autotools-dev`, `autoconf`, `libfcgi-dev`, `spawn-fcgi`等,并优化Nginx配置以更好地支持CGI请求。 通过以上步骤,你已经在CentOS...

    fcgiwrapfcgi 搭建轻量化web服务器

    对于大型或者高并发的站点,可能需要使用更强大的FastCGI服务器,如PHP-FPM或者spawn-fcgi。 总的来说,fcgiwrap是一个简洁、高效的FastCGI服务器,适用于快速搭建轻量级Web环境。通过合理配置,它可以与Nginx等Web...

Global site tag (gtag.js) - Google Analytics