设为首页 收藏本站
查看: 687|回复: 0

[经验分享] CentOS 5.4搭建nginx+php+spawn-fcgi+mysql高性能php平台

[复制链接]
发表于 2018-12-22 13:07:25 | 显示全部楼层 |阅读模式
  nginx+php+spawn-fcgi+mysql高性能php平台 一、安装准备  1.1平台环境:
CentOS 5.4 x86_64 GNU/Linux  nginx-0.8.21
  php-5.2.9
  spawn-fcgi-1.6.3
  mysql-5.1.34
1.2系统安装及分区:  1.2.1操作系统安装:
  安装过程中选择最少的包,采用文本模式安装,不安装图形。
  1.2.3系统分区:
  /boot  100M    (大约100左右)
  SWAP  4G      物理内存的2倍(如果你的物理内存大于4G,分配4G即可)
  /       50G
  /data             剩余所有空间.
  注:具体分区请根据相关业务划分
  1.2.4系统软件包安装规范
  系统约定:
  软件源代码包存放位置             /usr/local/src
  源码包编译安装位置(prefix)     /usr/local/software_name
  脚本以及维护程序存放位置       /usr/local/sbin
  MySQL 数据库位置                /data/mysql/data(可按情况设置)
  网站根目录                          /data/www/wwwroot(可按情况设置)
  虚拟主机日志根目录               /data/logs(可按情况设置)
  Nginx运行账户                     www:www
  install_software_name.sh     //存放编译参数脚本习惯将所有编译脚本存放在install_software_name.sh便于升级和更新软件.
  1.3.系统初始化
  #vi init_network.sh
#welcome  cat  /etc/modprobe.conf
  echo "alias ipv6 off" >> /etc/modprobe.conf
  /sbin/chkconfig --level 35 ip6tables off
  echo "ipv6 is disabled!"
  #disable selinux
  sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config
  echo "selinux is disabled,you must reboot!"
  #vim
  sed -i "8 s/^/alias vi='vim'/" /root/.bashrc
  echo 'syntax on' > /root/.vimrc
  #zh_cn
  sed -i -e 's/^LANG=.*/LANG="en"/'   /etc/sysconfig/i18n
  #init_ssh
  ssh_cf="/etc/ssh/sshd_config"
  sed -i -e '74 s/^/#/' -i -e '76 s/^/#/' $ssh_cf
  sed -i "s/#UseDNS yes/UseDNS no/" $ssh_cf
  #client
  sed -i -e '44 s/^/#/' -i -e '48 s/^/#/' $ssh_cf
  echo "ssh is init is ok.............."
  #chkser
  #tunoff services
  #--------------------------------------------------------------------------------
  cat  /dev/null 2>&11.7下载相关软件包#cd /usr/local/src  #vi list_tar.list
http://docs.linuxtone.org/soft/lemp/ImageMagick.tar.gz  http://docs.linuxtone.org/soft/lemp/PDO_MYSQL-1.0.2.tgz
  http://docs.linuxtone.org/soft/lemp/eaccelerator-0.9.5.3.tar.bz2
  http://docs.linuxtone.org/soft/lemp/imagick-2.2.2.tgz
  http://docs.linuxtone.org/soft/lemp/libiconv-1.13.tar.gz
  http://docs.linuxtone.org/soft/lemp/libmcrypt-2.5.8.tar.gz
  http://docs.linuxtone.org/soft/lemp/mcrypt-2.6.8.tar.gz
  http://docs.linuxtone.org/soft/lemp/memcache-2.2.5.tgz
  http://docs.linuxtone.org/soft/lemp/mhash-0.9.9.9.tar.gz
  http://docs.linuxtone.org/soft/lemp/mysql-5.1.34.tar.gz
  http://docs.linuxtone.org/soft/lemp/pcre-7.8.tar.gz
  http://www.lighttpd.net/download/spawn-fcgi-1.6.3.tar.gz
  http://docs.linuxtone.org/soft/lemp/php-5.2.9.tar.bz2
  http://sysoev.ru/nginx/nginx-0.8.21.tar.gz
  http://docs.linuxtone.org/soft/lemp/ZendOptimizer-3.3.3-linux-glibc23-x86_64.tar.gz
#wget -i list_tar.list  1.8.添加nginx 运维账户:
  #vi add_webuser.sh
/usr/sbin/groupadd www  /usr/sbin/useradd -g www www
  mkdir -p /data/www/wwwroot
  chmod +w /data/www/wwwroot
  chown www:www /data/www/wwwroot -R
#sh add_webuser.sh
二.编译安装  2.1 编译安装pcre
#tar zxvf pcre-7.8.tar.gz  #cd pcre-7.8
  #./configure && make && make install
2.2 编译安装nginx#tar zxvf nginx-0.8.21.tar.gz  #cd nginx-0.8.21
2.2.1 附加:修改nginx源代码,伪装nginx服务器(仅供参考,安全还得认真做起^.^):  (1).修改gcc
  #vi auto/cc/gcc
NGX_GCC_OPT="-O"修改为:NGX_GCC_OPT="-O3"(2).修改nginx.h  #vi nginx-0.8.21/src/core/nginx.h
#define NGINX_VERSION      "0.7.58"  #define NGINX_VER          "nginx/" NGINX_VERSION
修改为:#define NGINX_VERSION      "1.0"  #define NGINX_VER          "LTWS/" NGINX_VERSION
(3).修改nginx_http_header_filter_module  #vi nginx-0.8.21/src/http/ngx_http_header_filter_module.c
static char ngx_http_server_string[] = "Server: nginx" CRLF;修改为:static char ngx_http_server_string[] = "Server: LTWS" CRLF;(4).修改ngx_http_special_response.c  #vi nginx-0.8.21/src/http/ngx_http_special_response.c
  将如下
static u_char ngx_http_error_full_tail[] =  "" NGINX_VER "" CRLF
  "" CRLF
  "" CRLF
  ;
  static u_char ngx_http_error_tail[] =
  "nginx" CRLF
  "" CRLF
  "" CRLF
  ;
修改为:static u_char ngx_http_error_full_tail[] =  " "NGINX_VER" " CRLF
  "http://www.linuxtone.com" CRLF
  "" CRLF
  "" CRLF
  ;
  static u_char ngx_http_error_tail[] =
  "HMGWS" CRLF
  "" CRLF
  "" CRLF
  ;
2.2.2 nginx 编译安装./configure \  "--user=www" \
  "--group=www" \
  "--prefix=/usr/local/nginx/" \
  "--with-http_stub_status_module" \
  "--with-http_ssl_module" \
  "--with-md5=/usr/lib" \
  "--with-sha1=/usr/lib"
  make
  make install
2.3 编译安装配置mysql./configure \  "--prefix=/usr/local/mysql" \
  "--localstatedir=/data/mysql/data" \
  "--with-comment=Source" \
  "--with-server-suffix=-Linuxtone.Org" \
  "--enable-assembler" \
  "--with-" \
  "--with-collation=gbk_chinese_ci" \
  "--with-collation=gbk_chinese_ci" \
  "--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
  useradd mysql -d /data/mysql -s /sbin/nologin
  /usr/local/mysql/bin/mysql_install_db --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.bak
  wget http://www.caifw.com/api/my.cnf
  sed -i '50 s/^/#/' /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
  cd /usr/local/mysql/bin
  for i in *; do ln -s /usr/local/mysql/bin/$i /usr/bin/$i; done
2.4 编译安装php  2.4.1安装php相应的lib
  2.4.1.1 libiconv-1.13#tar zxvf libiconv-1.13.tar.gz  #cd libiconv-1.13
  #./configure --prefix=/usr && make && make install
2.4.1.2 libmcrypt-2.5.8#tar zxvf libmcrypt-2.5.8.tar.gz  #cd libmcrypt-2.5.8/
  #./configure --prefix=/usr && make && make install
  #echo "/usr/lib" >> /etc/ld.so.conf
  #ldconfig
  #cd libltdl/
  #./configure --enable-ltdl-install
  #make && make install
2.4.1.3 mhash-0.9.9.9#tar zxvf mhash-0.9.9.9.tar.gz  #cd mhash-0.9.9.9
  #./configure --prefix=/usr && make && make install
  #ldconfig
2.4.1.4 mcrypt-2.6.8#tar zxvf mcrypt-2.6.8.tar.gz  #cd mcrypt-2.6.8
  #./configure --prefix=/usr && make&& make install
  2.4.2 安装spawn-fcgi
#tar zvxf spawn-fcgi-1.6.3.tar.gz  #cd spawn-fcgi-1.6.3
  #./configure && make && make install
  2.4.3 安装php
#tar jvxf php-5.2.9.tar.bz2  #vi install_php.sh
  ./configure  \
  "--prefix=/usr/local/php" \
  "--enable-fastcgi" \
  "--enable-fpm" \
  "--enable-discard-path" \
  "--enable-force-cgi-redirect" \
  "--with-config-file-path=/usr/local/php/etc" \
  "--with-mysql=/usr/local/mysql" \
  "--with-mysqli=/usr/local/mysql/bin/mysql_config" \
  "--with-iconv-dir" \
  "--with-freetype-dir" \
  "--with-jpeg-dir" \
  "--with-png-dir" \
  "--with-gd" \
  "--with-zlib" \
  "--with-libxml-dir" \
  "--with-curl" \
  "--with-curlwrappers" \
  "--with-openssl" \
  "--with-mhash" \
  "--with-xmlrpc" \
  "--with-mcrypt" \
  "--with-ldap" \
  "--with-ldap-sasl" \
  "--enable-xml" \
  "--disable-rpath" \
  "--enable-discard-path" \
  "--enable-safe-mode" \
  "--enable-bcmath" \
  "--enable-shmop" \
  "--enable-sysvsem" \
  "--enable-inline-optimization" \
  "--enable-mbregex" \
  "--enable-mbstring" \
  "--enable-gd-native-ttf" \
  "--enable-ftp" \
  "--enable-pcntl" \
  "--enable-sockets" \
  "--enable-zip" \
  "--disable-debug" \
  "--disable-ipv6"
  make ZEND_EXTRA_LIBS='-liconv'
  make install
  cp php.ini-dist /usr/local/php/etc/php.ini
#sh install_php.sh  2.4.4安装PHP扩展模块
  2.4.4.1 memcache-2.2.5
#tar zvxf memcache-2.2.5.tgz  #cd memcache-2.2.5
  #/usr/local/php/bin/phpize
  #./configure --with-php-config=/usr/local/php/bin/php-config
  #make && make install
2.4.4.2 eaccelerator-0.9.5.3#tar jvxf eaccelerator-0.9.5.3.tar.bz2  #cd eaccelerator-0.9.5.3
  #/usr/local/php/bin/phpize
  #./configure --enable-eaccelerator=shared --with-php-config=/usr/local/php/bin/php-config
  #make && make install
2.4.4.3 PDO_MYSQL-1.0.2#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
2.4.4.4 ImageMagick#tar zxvf ImageMagick.tar.gz  #cd ImageMagick-6.5.1-2/
  #./configure --enable-shared --with-modules --without-x --with-gs-font-dir=default --with-perl=yes --with-xml=yes --with-zlib=yes --with-jpeg=yes
  # make && make install
2.4.4.5 imagick-2.2.2#tar zxvf imagick-2.2.2.tgz  #cd imagick-2.2.2/
  #/usr/local/php/bin/phpize
  #./configure --with-php-config=/usr/local/php/bin/php-config
  #make
  #make install
2.4.5脚本配置php.ini# vi init_php.ini  #!/bin/bash
  fcgi_cf="/usr/local/php/etc/php.ini"
  ea(){
  cat > $fcgi_cf
  #config for php.ini
  sed -i '205 s#;open_basedir =#open_basedir = /data/www/wwwroot:/tmp#g' $fcgi_cf
  sed -i '210 s#disable_functions =#;disable_functions = phpinfo,passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_alter,ini_restore,dl,pfsockopen,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server#g' $fcgi_cf
  sed -i '/expose_php/s/On/Off/' $fcgi_cf
  sed -i '/display_errors/s/On/Off/' $fcgi_cf
  sed -i 's#extension_dir = "./"#extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/"\nextension = "memcache.so"\nextension = "pdo_mysql.so"\nextension = "imagick.so"\n#' $fcgi_cf
  sed -i 's#output_buffering = Off#output_buffering = On#' $fcgi_cf
2.5安装Zend#tar zvxf ZendOptimizer-3.3.3-linux-glibc23-x86_64.tar.gz  # cd ZendOptimizer-3.3.3-linux-glibc23-x86_64
  # ./install
注:php.ini的位置为/usr/local/php/etc 服务器不选用apache
  三、配置整合  3.1 配置nginx
  注:本文spawn-fcgi开启9000跟9001两个端口,利用nginx的upstream负载均衡php程序到不同的fcgi端口上面,解决502 gateway错误
  #cd /usr/local/nginx/conf
  #cp nginx.conf nginx.conf.linuxtone
  #vi nginx.conf
user  www www;  worker_processes 10;
  pid /var/run/nginx.pid;
  # [ debug | info | notice | warn | error | crit ]
  error_log  /dev/null;
  #error_log /data/logs/nginxerror.log;
  #Specifies the value for maximum file descriptors that can be opened by this process.
  worker_rlimit_nofile 51200;
  events
  {
  use epoll;
  #maxclient = worker_processes * worker_connections / cpu_number
  worker_connections 51200;
  }
  http
  {
  include       /usr/local/nginx/conf/mime.types;
  default_type  application/octet-stream;
  #charset  gb2312;
  charset gbk;
  log_format  main  '$remote_addr - $remote_user [$time_local] $request '
  '"$status" $body_bytes_sent "$http_referer" '
  '"$http_user_agent" "$http_x_forwarded_for"';
  #access_log  /data/www/logs/access.log  main;
  access_log  /dev/null;
  #General Options
  server_names_hash_bucket_size 128;
  client_header_buffer_size 32k;
  large_client_header_buffers 4 32k;
  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_buffer_size 128k;
  fastcgi_buffers 4 128k;
  fastcgi_busy_buffers_size 128k;
  fastcgi_temp_file_write_size 128k;
  fastcgi_intercept_errors on;
  ssi on;
  ssi_silent_errors on;
  ssi_types text/shtml;
  #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            /dev/shm/proxy_temp;
  fastcgi_temp_path          /dev/shm/fastcgi_temp;
  client_body_temp_path      /dev/shm/client_body_temp;
  #client_body_temp_path  /usr/local/nginx/client_body_temp 1 2;
  #proxy_temp_path        /usr/local/nginx/proxy_temp 1 2;
  #fastcgi_temp_path      /usr/local/nginx/fastcgi_temp 1 2;
  #upstream
  upstream  spawn {
  # ip_hash;
  server   127.0.0.1:9000 max_fails=0 fail_timeout=30s;
  server   127.0.0.1:9001 max_fails=0 fail_timeout=30s;
  }
  # The following includes are specified for virtual hosts
  #www.linuxtone.org
  include          /usr/local/nginx/conf/vhosts/www.linuxtone.org.conf;
  }
#mkdir vhosts  #vi vhosts/www.linuxtone.org.conf
server  {
  listen       80;
  server_name  www.linuxtone.org .linuxtone.org;
  index index.html index.htm index.php;
  root  /data/www/wwwroot/linuxtone;
  error_page 404 http://www.linuxtone.org;
  #rewrite ^/bbs/(.*) http://bbs.linuxtone.org/$1;
  location ~ .*\.php?$
  {
  fastcgi_pass spawn;
  include /usr/local/nginx/conf/spawn_php5.conf;
  fastcgi_index  index.php;
  }
  location ~* \.(js|css|jpg|jpeg|gif|png)$ {
  if (-f $request_filename) {
  access_log   off;
  expires      1d;
  break;
  }
  }
  }
#vi /usr/local/nginx/conf/spawn_php5.conffastcgi_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;
3.2 配置spawn-fcgi启动脚本  #mkdir /usr/local/php/sbin
  # vi /usr/local/php/sbin/spawn-fcgi
#! /bin/sh  set -e
  PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
  DESC="spawn-fcgi daemon"
  NAME=spawn-fcgi
  DAEMON=/usr/local/bin/$NAME
  # Gracefully exit if the package has been removed.
  test -x $DAEMON || exit 0
  d_start() {
  $DAEMON -a 127.0.0.1 -p 9000 -C 128 -u www -g www -f /usr/local/php/bin/php-cgi > /dev/null 2>&1
  $DAEMON -a 127.0.0.1 -p 9001 -C 128 -u www -g www -f /usr/local/php/bin/php-cgi > /dev/null 2>&1 || echo -n " already running"
  }
  d_stop() {
  /usr/bin/killall -9 php-cgi > /dev/null 2>&1 || echo -n " not running"
  }
  case "$1" in
  start)
  echo -n "Starting $DESC: $NAME"
  d_start
  echo "."
  ;;
  stop)
  echo -n "Stopping $DESC: $NAME"
  d_stop
  echo "."
  ;;
  restart)
  echo -n "Restarting $DESC: $NAME"
  d_stop
  sleep 1
  d_start
  echo "."
  ;;
  *)
  echo "Usage: $SCRIPTNAME {start|stop|restart}" >&2
  exit 3
  ;;
  esac
  exit 0
#chmod 755 /usr/local/php/sbin/spawn-fcgi
四、启动WEB服务  4.1.启动spawn-fcgi
  #/usr/local/php/sbin/spawn-fcgi start
  4.2.启动nginx
  4.2.1检查nginx配置:
  # /usr/local/nginx/sbin/nginx –t     //返回如下信息说明配置正确
the configuration file /usr/local/nginx//conf/nginx.conf syntax is ok  configuration file /usr/local/nginx//conf/nginx.conf test is successful
#/usr/local/nginx/sbin/nginx    //启动nginx  4.3.加入开机启动
  #vi /etc/rc.local
  在最后加入:
ulimit -SHn 51200  /usr/local/nginx/sbin/nginx
  /usr/local/php/sbin/spawn-fcgi start
五、测试#mkdir /data/www/wwwroot/linuxtone  #vi phpinfo.php

打开浏览器输入:http://www.linuxtone.org/phpinfo.php  即可查看当前配置环境. 查看完成后出于安全考虑请再将此函数禁掉.



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-654437-1-1.html 上篇帖子: php获取输入流 file_get_contents('php://input') 下篇帖子: PHP名词库(php新手必须掌握的知识点)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表