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

[经验分享] nginx+PHP(FastCGI)配置

[复制链接]

尚未签到

发表于 2018-11-15 08:26:50 | 显示全部楼层 |阅读模式
  这篇文章配置是看过张宴的博客自己做了实验,加上自己的理解写出。
  1、升级所需的程序库
  #yum -y install gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel openldap openldap-devel nss_ldap openldap-clients openldap-servers
  [root@www ~]# rpm  -qa |grep libjpeg
  [root@www ~]#rpm  -vhi  libjpeg-devel        //安装软件包
  [root@www ~]# rpm -qa |grep freetype
  freetype-2.2.1-20.el5_2
  freetype-devel-2.2.1-20.el5_2
  [root@www ~]# rpm -qa |grep libpng
  libpng-1.2.10-7.1.el5_0.1
  libpng-devel-1.2.10-7.1.el5_0.1                       //所需的软件包,一般是devel的缺少,需要安装
  下载源代码包
  mkdir -p /data0/software
  cd /data0/software
  wget http://sysoev.ru/nginx/nginx-0.7.51.tar.gz
  wget http://www.php.net/get/php-5.2.8.tar.gz/from/this/mirror
  wget http://php-fpm.anight.org/downloads/head/php-5.2.8-fpm-0.5.10.diff.gz
  wget http://dev.mysql.com/get/Downloads/MySQL-5.1/mysql-5.1.33.zip/from/http://mysql.mirror.redwire.net/
  wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.13.tar.gz
  wget "http://downloads.sourceforge.net/mcrypt/libmcrypt-2.5.8.tar.gz?modtime=1171868460&big_mirror=0"
  wget "http://downloads.sourceforge.net/mcrypt/mcrypt-2.6.8.tar.gz?modtime=1194463373&big_mirror=0"
  wget http://pecl.php.net/get/memcache-2.2.5.tgz
  wget "http://downloads.sourceforge.net/mhash/mhash-0.9.9.9.tar.gz?modtime=1175740843&big_mirror=0"
  wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-7.8.tar.gz
  wget http://bart.eaccelerator.net/source/0.9.5.3/eaccelerator-0.9.5.3.tar.bz2
  wget http://pecl.php.net/get/PDO_MYSQL-1.0.2.tgz
  wget http://blog.s135.com/soft/linux/nginx_php/imagick/ImageMagick.tar.gz
  wget http://pecl.php.net/get/imagick-2.2.2.tgz
  wget http://blog.s135.com/soft/linux/nginx_php/nginx/nginx-0.7.51.tar.gz
  wget http://blog.s135.com/soft/linux/nginx_php/php/php-5.2.8.tar.gz
  wget http://blog.s135.com/soft/linux/nginx_php/phpfpm/php-5.2.8-fpm-0.5.10.diff.gz
  wget http://blog.s135.com/soft/linux/nginx_php/mysql/mysql-5.1.33.zip
  wget http://blog.s135.com/soft/linux/nginx_php/libiconv/libiconv-1.13.tar.gz
  wget http://blog.s135.com/soft/linux/nginx_php/mcrypt/libmcrypt-2.5.8.tar.gz
  wget http://blog.s135.com/soft/linux/nginx_php/mcrypt/mcrypt-2.6.8.tar.gz
  wget http://blog.s135.com/soft/linux/nginx_php/memcache/memcache-2.2.5.tgz
  wget http://blog.s135.com/soft/linux/nginx_php/mhash/mhash-0.9.9.9.tar.gz
  wget http://blog.s135.com/soft/linux/nginx_php/pcre/pcre-7.8.tar.gz
  wget http://blog.s135.com/soft/linux/nginx_php/eaccelerator/eaccelerator-0.9.5.3.tar.bz2
  wget http://blog.s135.com/soft/linux/nginx_php/pdo/PDO_MYSQL-1.0.2.tgz
  wget http://blog.s135.com/soft/linux/nginx_php/imagick/ImageMagick.tar.gz
  wget http://blog.s135.com/soft/linux/nginx_php/imagick/imagick-2.2.2.tgz          //张宴博客下载
  2、安装PHP5.2.8(FastCGI)
  编译安装PHP所需的支持库
  tar zxvf libiconv-1.13.tar.gz                           //用于编码转换库,处理字符使用
  cd libiconv-1.13/
  ./configure --prefix=/usr/local
  make
  make install
  cd ../
  tar zxvf libmcrypt-2.5.8.tar.gz                  //加密扩展,里面包含不少的加密算法
  cd libmcrypt-2.5.8/
  ./configure
  make
  make install
  /sbin/ldconfig
  cd libltdl/
  ./configure --enable-ltdl-install
  make
  make install
  cd ../../
  tar zxvf mhash-0.9.9.9.tar.gz                      //用于支持多种的Hash算法:MD5等
  cd mhash-0.9.9.9/
  ./configure
  make
  make install
  cd ../
  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.8 /usr/lib/libmcrypt.so.4.4.8
  ln -s /usr/local/lib/libmhash.a /usr/lib/libmhash.a
  ln -s /usr/local/lib/libmhash.la /usr/lib/libmhash.la
  ln -s /usr/local/lib/libmhash.so /usr/lib/libmhash.so
  ln -s /usr/local/lib/libmhash.so.2 /usr/lib/libmhash.so.2
  ln -s /usr/local/lib/libmhash.so.2.0.1 /usr/lib/libmhash.so.2.0.1
  tar zxvf mcrypt-2.6.8.tar.gz                  //加密算法扩展,有22种算法
  cd mcrypt-2.6.8/
  /sbin/ldconfig
  ./configure
  make
  make install
  cd ../
  3、编译安装Mysql,在web服务器不运行mysql,下面编译的mysql只是希望php支持mysql扩展库,能够连接其它服务器上的Mysql
  /usr/sbin/groupadd mysql
  /usr/sbin/useradd -g mysql mysql
  unzip mysql-5.1.33.zip
  cd mysql-5.1.33/
  ./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
  chmod +w /usr/local/webserver/mysql
  chown -R mysql:mysql /usr/local/webserver/mysql
  cp support-files/my-medium.cnf /usr/local/webserver/mysql/my.cnf
  cd ../
  4、编译安装PHP(FastCGI模式)
  tar zxvf php-5.2.8.tar.gz
  gzip -cd php-5.2.8-fpm-0.5.10.diff.gz | patch -d php-5.2.8 -p1
  cd php-5.2.8/
  ./configure --prefix=/usr/local/webserver/php --with-config-file-path=/usr/local/webserver/php/etc --with-mysql=/usr/local/webserver/mysql --with-mysqli=/usr/local/webserver/mysql/bin/mysql_config --with-iconv-dir=/usr/local --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
  make ZEND_EXTRA_LIBS='-liconv'
  make install
  cp php.ini-dist /usr/local/webserver/php/etc/php.ini
  cd ../
  5、编译安装PHP扩展模块
  tar zxvf memcache-2.2.5.tgz                      //用于缓存,分担数据库压力
  cd memcache-2.2.5/
  /usr/local/webserver/php/bin/phpize
  ./configure --with-php-config=/usr/local/webserver/php/bin/php-config
  make
  make install
  cd ../
  tar jxvf eaccelerator-0.9.5.3.tar.bz2                 //PHP加速器,提高程序效率
  cd eaccelerator-0.9.5.3/
  /usr/local/webserver/php/bin/phpize
  ./configure --enable-eaccelerator=shared --with-php-config=/usr/local/webserver/php/bin/php-config
  make
  make install
  cd ../
  tar zxvf PDO_MYSQL-1.0.2.tgz                    //PDO扩展为PHP访问数据库定义了一个轻量级的、一致性的接口,它提供了一个数据访问抽象层,这样,无论使用什么数据库,都可以通过一致的函数执行查询和获取数据。PDO随PHP5.1发行,在PHP5.0的PECL扩展中也可以使用。
  cd PDO_MYSQL-1.0.2/
  /usr/local/webserver/php/bin/phpize
  ./configure --with-php-config=/usr/local/webserver/php/bin/php-config --with-pdo-mysql=/usr/local/webserver/mysql
  make
  make install
  cd ../
  tar zxvf ImageMagick.tar.gz               //用于读写图片格式文件,可以根据web应用程序动态生成图片
  cd ImageMagick-6.5.1-2/
  ./configure
  make
  make install
  cd ../
  tar zxvf imagick-2.2.2.tgz                     //图像处理库
  cd imagick-2.2.2/
  /usr/local/webserver/php/bin/phpize
  ./configure --with-php-config=/usr/local/webserver/php/bin/php-config
  make
  make install
  cd ../
  6、修改php.ini文件
  手工修改:查找/usr/local/webserver/php/etc/php.ini中的extension_dir = "./"
  修改为extension_dir = "/usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20060613/"
  并在此行后增加以下几行,然后保存:
  extension = "memcache.so"
  extension = "pdo_mysql.so"
  extension = "imagick.so"
  7、配置eAccelerator加速PHP:
  mkdir -p /usr/local/eaccelerator_cache
  vi /usr/local/webserver/php/etc/php.ini
  按 “]]” 两下到文件末尾加上
  [eaccelerator]
  zend_extension="/usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20060613/eaccelerator.so"
  eaccelerator.shm_size="128"
  eaccelerator.cache_dir="/usr/local/webserver/eaccelerator_cache"
  eaccelerator.enable="1"
  eaccelerator.optimizer="1"
  eaccelerator.check_mtime="1"
  eaccelerator.debug="0"
  eaccelerator.filter=""
  eaccelerator.shm_max="0"
  eaccelerator.shm_ttl="300"
  eaccelerator.shm_prune_period="120"
  eaccelerator.shm_only="0"
  eaccelerator.compress="1"
  eaccelerator.compress_level="9"                       //保存
  8、修改配置文件
  vi /etc/sysctl.conf
  kernel.shmmax = 134217728
  sysctl -p                                        //使其生效
  9、创建www用户和组以供:www.zhao.com和www.chen.com两个虚拟主机使用
  groupadd www
  useradd -g www www
  mkdir -p /data0/htdocs/blog
  chmod +w /data0/htdocs/blog
  chown -R www:www /data0/htdocs/blog
  mkdir -p /data0/htdocs/www
  chmod +w /data0/htdocs/www
  chown -R www:www /data0/htdocs/www
  10、、创建php-fpm配置文件(php-fpm是为PHP打的一个FastCGI管理补丁,可以平滑变更php.ini配置而无需重启php-cgi):
  在/usr/local/webserver/php/etc/目录中创建php-fpm.conf文件:
  rm -f /usr/local/php/etc/php-fpm.conf
  vi /usr/local/php/etc/php-fpm.conf                 //输入以下内容
  将以下的0改为1,以便显示PHP错误信息,否则,Nginx 会报状态为500的空白错误页):
  
  

  All>  
  Pid file
  /usr/local/php/logs/php-fpm.pid
  Error log file
  /usr/local/php/logs/php-fpm.log
  Log level
  notice
  When this amount of php processes exited with SIGSEGV or SIGBUS ...
  10
  ... in a less than this interval of time, a graceful restart will be initiated.
  Useful to work around accidental curruptions in accelerator's shared memory.
  "/usr/local/php/etc/php-fpm.conf" 156L, 5811C
  
  

  All>  
  Pid file
  /usr/local/php/logs/php-fpm.pid
  Error log file
  /usr/local/php/logs/php-fpm.log
  Log level
  notice
  When this amount of php processes exited with SIGSEGV or SIGBUS ...
  10
  ... in a less than this interval of time, a graceful restart will be initiated.
  Useful to work around accidental curruptions in accelerator's shared memory.
  1m
  Time limit on waiting child's reaction on signals from master
  5s
  Equivalent to PHP_FCGI_MAX_REQUESTS
  500
  Comma separated list of ipv4 addresses of FastCGI clients that allowed to connect.
  Equivalent to FCGI_WEB_SERVER_ADDRS environment in original php.fcgi (5.2.2+)
  Makes sense only with AF_INET listening socket.
  127.0.0.1
  Pass environment variables like LD_LIBRARY_PATH
  All $VARIABLEs are taken from current environment
  
  $HOSTNAME
  /usr/local/bin:/usr/bin:/bin
  /tmp
  /tmp
  /tmp
  $OSTYPE
  $MACHTYPE
  2
  
  
  
  
  
  

  All>  
  Pid file
  /usr/local/php/logs/php-fpm.pid
  Error log file
  /usr/local/php/logs/php-fpm.log
  Log level
  notice
  When this amount of php processes exited with SIGSEGV or SIGBUS ...
  10
  ... in a less than this interval of time, a graceful restart will be initiated.
  Useful to work around accidental curruptions in accelerator's shared memory.
  1m
  Time limit on waiting child's reaction on signals from master
  5s
  Equivalent to PHP_FCGI_MAX_REQUESTS
  500
  Comma separated list of ipv4 addresses of FastCGI clients that allowed to connect.
  Equivalent to FCGI_WEB_SERVER_ADDRS environment in original php.fcgi (5.2.2+)
  Makes sense only with AF_INET listening socket.
  127.0.0.1
  Pass environment variables like LD_LIBRARY_PATH
  All $VARIABLEs are taken from current environment
  
  $HOSTNAME
  /usr/local/bin:/usr/bin:/bin
  /tmp
  /tmp
  /tmp
  $OSTYPE
  $MACHTYPE
  2
  
  
  
  
  #ulimit -SHn 51200                        //设置文件描述符
  #/usr/local/php/sbin/php-fpm start    //启动php-cgi进程,监听127.0.0.1:9000端口
  9           //用于修改php-cgi进程数(服务器内存小于3G可以只开启64个进程),用户为www
  安装nginx-0.7.51
  tar zxvf pcre-7.8.tar.gz                 //让nginx支持rewrite重写
  cd pcre-7.8/
  ./configure
  make && make install
  cd ../
  tar zxvf nginx-0.7.51.tar.gz
  cd nginx-0.7.51/
  ./configure --user=www --group=www --prefix=/usr/local/webserver/nginx --with-http_stub_status_module --with-http_ssl_module
  make && make install
  cd ../
  (1)
  #mkdir  /usr/local/www
  #chmod +w  www
  #chown  www:www   www   -R
  (2)
  #mkdir  /usr/local/blog
  #chmod +w  blog
  #chown  www:www   www   -R
  (3)编辑配置文件
  #vi   /usr/local/nginx/conf/nginx.conf
  user  www www;
  worker_processes  4;
  error_log  /data/logs/nginx.error.log crit;
  pid         /usr/local/nginx/logs/nginx.pid;
  worker_rlimit_nofile 51200;
  events {
  use epoll;
  worker_connections  51200;
  }
  http {
  include       mime.types;
  default_type  application/octet-stream;
  #charset  gb2312;
  server_names_hash_bucket_size 128;
  client_header_buffer_size 4k;
  large_client_header_buffers 4 8k;
  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 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;
  server
  {
  listen       80;
  server_name  www.zhao.com;
  index index.html index.htm index.php;
  root   /usr/local/www;
  #limit_conn   crawler  20;
  location ~ .*\.(php|php5)?$
  {
  #fastcgi_pass  unix:/tmp/php-cgi.sock;
  fastcgi_pass  127.0.0.1:9000;
  fastcgi_index index.php;
  include fcgi.conf;
  }
  location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
  {
  expires      30d;
  }
  location ~ .*\.(js|css)?$
  {
  expires      1h;
  }
  log_format  access  '$remote_addr - $remote_user [$time_local] "$request" '
  '$status $body_bytes_sent "$http_referer" '
  '"$http_user_agent" $http_x_forwarded_for';
  access_log  /data/logs/access.log  access;
  }
  server
  {
  listen       80;
  server_name  www.qiao.com;
  index index.html index.htm index.php;
  root  /data/htdocs/www;
  location ~ .*\.(php|php5)?$
  {
  #fastcgi_pass  unix:/tmp/php-cgi.sock;
  fastcgi_pass  127.0.0.1:9000;
  fastcgi_index index.php;
  include fcgi.conf;
  }
  log_format  wwwlogs  '$remote_addr - $remote_user [$time_local] "$request" '
  '$status $body_bytes_sent "$http_referer" '
  '"$http_user_agent" $http_x_forwarded_for';
  access_log  /data/logs/wwwlogs.log  wwwlogs;
  }
  server
  {
  listen  80;
  server_name  status.zhaochen.com;                   //此配置为,nginx日志,记录nginx的活动连接数记录
  location / {
  stub_status on;
  access_log   off;
  }
  }
  }
  # vi /usr/local/nginx/conf/fcgi.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;
  ulimit -SHn 51200
  /usr/local/webserver/nginx/sbin/nginx                  //启动nginx
  #vi  /etc/rc.d/rc.local                             //开机自动启动
  ulimit -SHn 51200
  /usr/local/webserver/php/sbin/php-fpm start
  /usr/local/webserver/nginx/sbin/nginx
  #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
  #sysctl -p                       //配置生效
  #/usr/local/nginx/sbin/nginx -t                       //检测配置是否正确
  # kill -HUP `cat /usr/local/nginx/logs/nginx.pid`              //修改nginx.conf后无需重启nginx,使其生效
  #!/bin/bash
  day=`date +%Y%m%d`
  cd /usr/local/nginx/logs/
  mv bruce.com.access.log bruce.com.$day.access.log
  kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`
  #crontab  -e
  00  00   *   *    *    /bin/sh  /opt/file.sh                           //进行日志切割, 每天凌晨12点开始执行
  安装webbench做压力测试。
  wget http://blog.s135.com/soft/linux/webbench/webbench-1.5.tar.gz
  tar zxvf webbench-1.5.tar.gz
  cd webbench-1.5
  make && make install
  # webbench -c 100 -t 30 http://192.168.1.21/phpinfo.php           //进行测试,100个并发连接


运维网声明 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-635196-1-1.html 上篇帖子: nginx与php,mysql的安装,配置与优化 下篇帖子: cakephp+nginx 的路径重写
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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