设为首页收藏本站

LinuxTone | 运维专家网论坛 - 最棒的Linux运维与开源架构技术交流社区!

 找回密码
 注册

QQ登录

只需一步,快速开始

#公告#抱歉,网站将关闭,不再开放。由于PC时代已远逝 。在这个后移动互联网时代,我们继续携手前行,保持对技术的热情。共同构建linuxtone知识星球欢迎加入,一起讨论技术、招聘人才、分享资源。请新老linuxtone人 扫码移步到 知识星球:linuxtone

学习是一种信仰!分享是一种快乐!能力= 心态 * 沟通 * 知识 (你的每一天需要正能量!)

 网站的发展需要你贡献一份力量!希望你能每天坚持看贴1小时,并回答网友的问题!祝你在浏览论坛的过程中取得进步!谢谢!linuxtone加油!大家加油! 友情提示: 你今天学习了吗?你今天进步了吗?少一点抱怨!多一点进步!Life is short ! Why not linuxtone ?  

网站的发展、感谢每位坛友的努力!

查看: 49075|回复: 42

[nginx] LEMP构建高性能WEB服务器(第二版) [复制链接]

LT管理团队

社区首席勤杂工

Rank: 9Rank: 9Rank: 9

签到
475
注册时间
2008-5-19
最后登录
2019-11-16
在线时间
1946 小时
阅读权限
200
积分
59419
帖子
2551
主题
1209
精华
25
UID
1

LT总司令

发表于 2008-5-30 18:59:46 |显示全部楼层
原名:利用Nginx替代apache实现高性能的Web环境(第二版)
作者:NetSeek http://bbs.linuxtone.org(IT运维专家网|集群架构|性能调优)
欢迎转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明.
更新时间:2008-06-23

前言:
本文基于step by step的结构向大家介绍Nginx构建高性能WEB的全过程.并且我们在
生产服务器上运行一个月非常稳定,所以整理出来供大家分享。希望能够帮助
更多的初学者轻松构建高性能的WEB服务器。对文中提到的相关操作有任何问题都可以
到LinuxTone论坛去交流提问,我们将第一时间为你解答,同时把网友的建议加入,及
时更新相关内容.

系统环境:
CentOS 5.1+nginx-0.6.31+php-5.2.6+memcache-2.2.3+xcache-1.2.2+mysql-5.0.51b

一、系统安装
1. 系统分区
   /boot 100M左右
   SWAP  物理内存的2倍(如果你的物理内存大于4G以上,分配4G即可)
   /     分区15~20G
   /usr/local 20G (用于安装软件)
   /data 剩余所有空间
   *具体分区请根据相关业务划分,具体安装本文不作介绍.

2.系统初始化脚本(根据具体需求关闭不需要的服务)
#vi init.sh
  1. #welcome
  2. cat << EOF
  3. +--------------------------------------------------------------+
  4. |         === Welcome to CentOS System init ===                |
  5. +--------------http://www.linuxtone.org------------------------+
  6. +--------------------------------------------------------------+
  7. EOF

  8. #disable ipv6
  9. cat << EOF
  10. +--------------------------------------------------------------+
  11. |         === Welcome to Disable IPV6 ===                      |
  12. +--------------------------------------------------------------+
  13. EOF
  14. echo "alias net-pf-10 off" >> /etc/modprobe.conf
  15. echo "alias ipv6 off" >> /etc/modprobe.conf
  16. /sbin/chkconfig --level 35 ip6tables off
  17. echo "ipv6 is disabled!"

  18. #disable selinux
  19. sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config
  20. echo "selinux is disabled,you must reboot!"

  21. #vim
  22. sed -i "8 s/^/alias vi='vim'/" /root/.bashrc
  23. echo 'syntax on' > /root/.vimrc

  24. #LANG=en
  25. sed -i -e 's/^LANG=.*/LANG="en"/'   /etc/sysconfig/i18n

  26. #tunoff services
  27. #--------------------------------------------------------------+
  28. cat << EOF
  29. +--------------------------------------------------------------+
  30. |         === Welcome to Tunoff services ===                   |
  31. +--------------------------------------------------------------+
  32. EOF
  33. #--------------------------------------------------------------+
  34. for i in `ls /etc/rc3.d/S*`
  35. do
  36.              CURSRV=`echo $i|cut -c 15-`

  37. echo $CURSRV
  38. case $CURSRV in
  39.          crond | irqbalance | microcode_ctl | network | random | sendmail | sshd | syslog | local | mysqld )
  40.      echo "Base services, Skip!"
  41.      ;;
  42.      *)
  43.          echo "change $CURSRV to off"
  44.          chkconfig --level 235 $CURSRV off
  45.          service $CURSRV stop
  46.      ;;
  47. esac
  48. done
复制代码
#sh init.sh (执行上面保存的脚本,仍后重启)


二、编译安装基本环境
1. 安装准备
   1) 系统约定
    软件源代码包存放位置        /usr/local/src
    源码包编译安装位置(prefix)        /usr/local/software_name
    脚本以及维护程序存放位置        /usr/local/sbin
    MySQL 数据库位置        /data/mysql/data(可按情况设置)
    网站根目录        /data/www/wwwroot(可按情况设置)
    虚拟主机日志根目录        /data/logs(可按情况设置)
    Nginx运行账户        www:www  
    in_software_name.sh  存放编译参数脚本    习惯将所有编译脚本存放在in_software_name.sh便于升级和更新软件.

    创建网站账号及相关存放目录
  1.     groupadd www -g 48
  2.     useradd -u 48 -g www www
  3.     mkdir -p /data/www/wwwroot
  4.     mkdir -p /data/logs
  5.     chmod +w /data/www/wwwroot
  6.     chown -R www:www /data/www/wwwroot
复制代码
2) 系统环境部署及调整
   检查系统是否正常
   # tail -n100 /var/log/messages        (检查有无系统级错误信息)
   # dmesg (检查硬件设备是否有错误信息)
   # ifconfig(检查网卡设置是否正确)
   # ping www.linuxtone.org        (检查网络是否正常)

  3) 使用 yum 程序安装所需开发包(以下为标准的 RPM 包名称)
   添加国内镜像源加速软件安装下载速度请参照:http://bbs.linuxtone.org/thread-158-1-1.html
  1.    yum -y install ntp vim-enhanced gcc gcc-c++ gcc-g77 flex bison autoconf automake bzip2-devel \
  2.    ncurses-devel libtool* zlib-devel libxml2-devel libjpeg-devel libpng-devel libtiff-devel \
  3.    fontconfig-devel freetype-devel libXpm-devel gettext-devel  curl curl-devel pam-devel kernel
  4.   
复制代码
◆因网友说照我的方法YUM装的时候还是有一些错误,这次是按最少的包装的:)不过还是希望网友在安装系统的  时候就把相关的开

发包装上。

   4) 定时校正服务器时钟,定时与中国国家授时中心授时服务器同步
   # crontab -e
   加入一行:
   15 3 * * * /usr/sbin/ntpdate 210.72.145.44 > /dev/null 2>&1

  5) 下载编译相关的源码包.
     #vi list 在list文件里填入以后下载地址列表.
  1. http://www.libgd.org/releases/gd-2.0.35.tar.bz2
  2. http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.12.tar.gz
  3. http://jaist.dl.sourceforge.net/sourceforge/mcrypt/libmcrypt-2.5.8.tar.bz2
  4. http://jaist.dl.sourceforge.net/sourceforge/mcrypt/mcrypt-2.6.7.tar.gz
  5. http://www.openssl.org/source/openssl-0.9.8h.tar.gz
  6. http://openbsd.md5.com.ar/pub/OpenBSD/OpenSSH/portable/openssh-5.0p1.tar.gz

  7. ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-7.7.tar.gz
  8. http://sysoev.ru/nginx/nginx-0.6.31.tar.gz

  9. http://mysql.byungsoo.net/Downloads/MySQL-5.0/mysql-5.0.51b.tar.gz

  10. http://cn2.php.net/get/php-5.2.6.tar.bz2/from/this/mirror
  11. http://php-fpm.anight.org/downloads/head/php-5.2.6-fpm-0.5.8.diff.gz
  12. http://pecl.php.net/get/memcache-2.2.3.tgz
  13. http://xcache.lighttpd.net/pub/Releases/1.2.2/xcache-1.2.2.tar.gz
  14. http://downloads.phpchina.com/zend/optimizer/3.3.3/ZendOptimizer-3.3.3-linux-glibc23-i386.tar.gz
复制代码
#vi down.sh 创建下载脚本.
  1. #!/bin/bash
  2. for i in `cat list`
  3. do
  4. wget -c $i
  5. done         
复制代码
#sh down.sh 执行下载脚本即可下载相关软件包.
或更简捷直接使用命令
  1. wget -i list
复制代码
下载

2. 编译安装软件包
   源码编译安装所需包(Source)
   1) 升级OpenSSL及OpenSSH
  1.       tar xvf openssl-0.9.8h.tar.gz
  2.       cd openssl-0.9.8h
  3.       #vi in_openssl.sh
  4.       ./config --prefix=/usr/local/openssl
  5.       make
  6.       make test
  7.       make install
  8.       # sh in_openssl.sh
  9.   
  10.       #tar xvf openssh-5.0p1.tar.gz
  11.       #cd openssh-5.0p1
  12.       # vi in_openssh.sh
  13.       ./configure  \
  14.       "--prefix=/usr" \
  15.       "--with-pam" \
  16.       "--with-zlib" \
  17.       "--sysconfdir=/etc/ssh" \
  18.       "--with-ssl-dir=/usr/local/openssl" \
  19.       "--with-md5-passwords"
  20.       make
  21.       make install
  22.       # sh in_openssh.sh
复制代码
禁用 SSH V1 协议:找到#Protocol 2,1改为:Protocol 2

   禁用服务器端GSSAPI找到以下两行,并将它们注释:
   GSSAPIAuthentication yes
   GSSAPICleanupCredentials yes

   禁用 DNS 名称解析
   找到:#UseDNS yeas改为:UseDNS no

   禁用客户端 GSSAPI
   # vi /etc/ssh/ssh_config 找到:GSSAPIAuthentication yes 将这行注释掉。
   最后,确认修改正确后重新启动 SSH 服务
   # service sshd restart
   # ssh -v    确认 OpenSSH 以及 OpenSSL 版本正确。

   以上SSH配置可利用以下脚本自动修改:
   #vi init_ssh.sh
  1.    #init_ssh.sh
  2.    ssh_cf="/etc/ssh/sshd_config"
  3.    sed -i -e '74 s/^/#/' -i -e '76 s/^/#/' $ssh_cf
  4.    sed -i "s/#UseDNS yes/UseDNS no/" $ssh_cf
  5.    #client
  6.    sed -i -e '44 s/^/#/' -i -e '48 s/^/#/' $ssh_cf
  7.    echo "ssh is init is ok.............."
复制代码
#sh init_ssh.sh
  
   [root@servers src]# /etc/init.d/sshd restart
   Stopping sshd:                                             [  OK  ]
   Starting sshd:                                             [  OK  ]
   [root@servers src]# ssh -v
   OpenSSH_5.0p1, OpenSSL 0.9.8h 28 May 2008


   2) GD2
      # cd /usr/local/src
      # tar xvf gd-2.0.35.tar.gz
      # cd gd-2.0.35
      # vi in_gd2.sh
  1.       aclocal
  2.       ./configure --prefix=/usr/local/gd2
  3.       make && make install
  4.       # sh in_gd2.sh
复制代码
3) tar xvf libmcrypt-2.5.8.tar.bz2
      cd libmcrypt-2.5.8
  1.       #vi in_libmcrypt.sh
  2.       ./configure --prefix=/usr/local/libmcrypt && make && make install
  3.       #sh in.sh
复制代码
4) #tar xvf libiconv-1.12.tar.gz
      #cd libiconv-1.12
      #vi in_iconv.sh
  1.       ./configure --prefix=/usr && make && make install
复制代码
#sh in_iconv.sh
   5) 编译安装MySQL
     
     # tar xvf mysql-5.0.51b.tar.gz
     # cd mysql-5.0.51b
     # vi in_mysql.sh
  1.     CFLAGS="-O3" CXX=gcc CXXFLAGS="-O3 -felide-constructors \
  2.     -fno-exceptions -fno-rtti -fomit-frame-pointer -ffixed-ebp"
  3.     ./configure \
  4.         "--prefix=/usr/local/mysql" \
  5.         "--localstatedir=/data/mysql/data" \
  6.         "--with-comment=Source" \
  7.         "--with-server-suffix=-LinuxTone.Org" \
  8.         "--with-mysqld-user=mysql" \
  9.         "--without-debug" \
  10.         "--with-big-tables" \
  11.         "--with-charset=utf8" \
  12.         "--with-collation=utf8_chinese_ci" \
  13.         "--with-extra-charsets=all" \
  14.         "--with-pthread" \
  15.         "--enable-static" \
  16.         "--enable-thread-safe-client" \
  17.         "--with-client-ldflags=-all-static" \
  18.         "--with-mysqld-ldflags=-all-static" \
  19.         "--enable-assembler" \
  20.         "--without-isam" \
  21.         "--without-innodb" \
  22.         "--without-ndb-debug"
  23.     make && make install
  24.     useradd mysql -d /data/mysql -s /sbin/nologin
  25.     /usr/local/mysql/bin/mysql_install_db --user=mysql
  26.     cd /usr/local/mysql
  27.     chown -R root:mysql .
  28.     chown -R mysql /data/mysql/data
  29.     cp share/mysql/my-huge.cnf /etc/my.cnf
  30.     cp share/mysql/mysql.server /etc/rc.d/init.d/mysqld
  31.     chmod 755 /etc/rc.d/init.d/mysqld
  32.     chkconfig --add mysqld
  33.     /etc/rc.d/init.d/mysqld start

  34.     cd /usr/local/mysql/bin   
  35.     for i in *; do ln -s /usr/local/mysql/bin/$i /usr/bin/$i; done
复制代码
#sh in_mysql.sh
&amp;lt;-sina_sign,1762622645,2a5b1a59,10-&amp;gt;感谢大家对linuxtone的支持!&amp;lt;/strong&amp;gt;

LT管理团队

社区首席勤杂工

Rank: 9Rank: 9Rank: 9

注册时间
2008-5-19
最后登录
2019-11-16
在线时间
1946 小时
阅读权限
200
积分
59419
帖子
2551
主题
1209
精华
25
UID
1

LT总司令

发表于 2008-6-23 16:27:36 |显示全部楼层
三、编译安装PHP及Nginx
1.PHP(Fastcgi)编译安装

  1)php-fpm 给PHP(Fastcgi)打补丁
    #tar xvf php-5.2.6.tar.bz2
    #gzip -cd php-5.2.6-fpm-0.5.8.diff.gz | patch -d php-5.2.6 -p1

  2)PHP(Fastcgi)安装.
    #cd php-5.2.6
    #vi in_php5.sh
  1. ./configure \
  2.         "--prefix=/usr/local/php-fcgi" \
  3.         "--enable-fastcgi" \
  4.         "--enable-fpm" \
  5.         "--enable-discard-path" \
  6.         "--enable-force-cgi-redirect" \
  7.         "--with-config-file-path=/usr/local/php-fcgi/etc" \
  8.         "--enable-zend-multibyte" \
  9.         "--with-mysql=/usr/local/mysql" \
  10.         "--with-libxml-dir" \
  11.         "--with-iconv-dir=/usr/lib" \
  12.         "--with-xmlrpc" \
  13.         "--with-gd=/usr/local/gd2" \
  14.         "--with-jpeg-dir" \
  15.         "--with-png-dir" \
  16.         "--with-bz2" \
  17.         "--with-freetype-dir" \
  18.         "--with-zlib-dir " \
  19.         "--with-openssl=/usr/local/openssl" \
  20.         "--with-mcrypt=/usr/local/libmcrypt" \
  21.         "--enable-sysvsem" \
  22.         "--enable-inline-optimization" \
  23.         "--enable-soap" \
  24.         "--enable-gd-native-ttf" \
  25.         "--enable-ftp" \
  26.         "--enable-mbstring" \
  27.         "--enable-exif" \
  28.         "--disable-debug" \
  29.         "--disable-ipv6"
  30.      make && make install
  31.      cp php.ini-dist /usr/local/php-fcgi/etc/php.ini
复制代码
#sh in_php5.sh


  4)安装Xcache
  tar xvf xcache-1.2.2.tar.gz
  cd xcache-1.2.2
  #vi in_xcache.sh
  1.   /usr/local/php-fcgi/bin/phpize
  2.   ./configure --enable-xcache --enable-xcache-coverager --with-php-config=/usr/local/php-fcgi/bin/php-config \
  3.    --enable-inline-optimization --disable-debug
  4.   make && make install
复制代码
#sh in_xcache.sh
  
  #vi /usr/local/php-fcgi/etc/php.ini  #编辑php.ini在其内容最后加入如下内容:
  1. [xcache-common]
  2. zend_extension      = /usr/local/php-fcgi/lib/php/extensions/no-debug-non-zts-20060613/xcache.so

  3. [xcache.admin]
  4. xcache.admin.user   = "admin"
  5. ;如何生成md5密码: echo -n "password"| md5sum
  6. xcache.admin.pass   = "035d849226a8a10be1a5e0fec1f0f3ce"  #密码为52netseek

  7. [xcache]
  8. ; Change xcache.size to tune the size of the opcode cache
  9. xcache.size         = 24M
  10. xcache.shm_scheme   = "mmap"
  11. xcache.count        = 4
  12. xcache.slots        = 8K
  13. xcache.ttl          = 0
  14. xcache.gc_interval  = 0

  15. ; Change xcache.var_size to adjust the size of variable cache
  16. xcache.var_size     = 8M
  17. xcache.var_count    = 1
  18. xcache.var_slots    = 8K
  19. xcache.var_ttl      = 0
  20. xcache.var_maxttl   = 0
  21. xcache.var_gc_interval =     300
  22. xcache.test         = Off
  23. xcache.readonly_protection = On
  24. xcache.mmap_path    = "/dev/zero"
  25. xcache.coredump_directory =   ""
  26. xcache.cacher       = On
  27. xcache.stat         = On
  28. xcache.optimizer    = Off

  29. [xcache.coverager]
  30. xcache.coverager    = On
  31. xcache.coveragedump_directory = ""
复制代码
4)安装Memcache
  cd memcache-2.2.3
#vi in_memcache.sh
  1.   /usr/local/php-fcgi/bin/phpize
  2. ./configure --with-php-config=/usr/local/php-fcgi/bin/php-config
  3. make && make install
复制代码
#sh in_memcache.sh

  5) PHP初始化脚本
# cat init_fcgi.sh
  1. #!/bin/bash
  2. #php-fastcgi.php
  3. fcgi_cf="/usr/local/php-fcgi/etc/php.ini"
  4. sed -i '205 s#;open_basedir =#open_basedir = /data/www/wwwroot:/tmp#g' $fcgi_cf
  5. sed -i '210 s#disable_functions =#disable_functions =

  6. phpinfo,passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_alter,ini_restore,

  7. dl,pfsockopen,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server#g' $fcgi_cf
  8. sed -i '/expose_php/s/On/Off/' $fcgi_cf
  9. sed -i '/display_errors/s/On/Off/' $fcgi_cf
  10. sed -i 's#extension_dir = "./"#extension_dir = "/usr/local/php-fcgi/lib/php/extensions/no-debug-non-zts-20060613/"\nextension

  11. = "memcache.so"\n#' $fcgi_cf
复制代码
6)ZendOptimizer-3.3.3-linux-glibc23-i386 (解压后进入目录./install,安提示选择相关的目录及配置文件存放目录即可)

2.安装Nginx
1)Nginx编译安装
cd pcre-7.7/
  ./configure
  make && make install
  cd ../


cd nginx-0.6.31
#vi in_nginx.sh
  1. ./configure --user=www --group=www --prefix=/usr/local/nginx/ --with-http_stub_status_module --with-

  2. openssl=/usr/local/openssl
  3. make && make install
复制代码
sh in_nginx.sh

2)初始化Nginx相关配置
  #mkdir /usr/local/nginx/conf/vhosts  创建存放虚拟主机配置文件目录
  #cd /usr/local/nginx/conf
  #mv nginx.conf nginx.conf_back 将原配置文件备份供以后参考.
  #vi nginx.conf 重新创建nginx主配置文件
  1. user  www www;

  2. worker_processes 8;

  3. pid /var/run/nginx.pid;
  4. # [ debug | info | notice | warn | error | crit ]
  5. #error_log  /var/log/nginx.error_log  info;
  6. #Specifies the value for maximum file descriptors that can be opened by this process.
  7. worker_rlimit_nofile 51200;

  8. events
  9. {
  10.        use epoll;

  11.        #maxclient = worker_processes * worker_connections / cpu_number
  12.        worker_connections 51200;
  13. }

  14. http
  15. {
  16.          include       mime.types;
  17.        default_type  application/octet-stream;
  18.        charset  gb2312;
  19.        server_names_hash_bucket_size 128;
  20.        client_header_buffer_size 32k;
  21.        large_client_header_buffers 4 32k;

  22.        log_format  main  '$remote_addr - $remote_user [$time_local] $request '
  23.                          '"$status" $body_bytes_sent "$http_referer" '
  24.                          '"$http_user_agent" "$http_x_forwarded_for"';

  25.        #access_log  /data/www/logs/access.log  main;
  26.        access_log  /dev/null;

  27.        sendfile on;
  28.        tcp_nopush     on;

  29.        keepalive_timeout 60;
  30.        tcp_nodelay on;

  31.        fastcgi_connect_timeout 300;
  32.        fastcgi_send_timeout 300;
  33.        fastcgi_read_timeout 300;
  34.        fastcgi_buffer_size 128k;
  35.        fastcgi_buffers 4 128k;
  36.        fastcgi_busy_buffers_size 128k;
  37.        fastcgi_temp_file_write_size 128k;
  38.        fastcgi_intercept_errors on;

  39.        gzip  on;
  40.        gzip_comp_level     4;
  41.        gzip_min_length  1100;
  42.        gzip_buffers     4 8k;
  43.        gzip_http_version 1.0;
  44.        gzip_proxied        any;
  45.        gzip_types       text/plain text/xml text/javascript application/x-javascript text/css text/html application/xml;

  46.        #
  47.        client_max_body_size       10m;
  48.        client_body_buffer_size    256k;
  49.        #
  50.        #proxy_temp_path            /dev/shm/proxy_temp;
  51.        fastcgi_temp_path          /dev/shm/fastcgi_temp;
  52.        client_body_temp_path      /dev/shm/client_body_temp;


  53.        # The following includes are specified for virtual hosts
  54.        include          vhosts/bbs.linxutone.org.conf;
  55.        include          vhosts/down.redocn.com.conf;
  56.        include          vhosts/count.linuxtone.org.conf;
  57. }
复制代码
#vi /enable_php5.conf Nginx支持PHP配置文件.
  1. fastcgi_pass  127.0.0.1:8085;
  2. fastcgi_index index.php;

  3. fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
  4. fastcgi_param  SERVER_SOFTWARE    nginx;

  5. fastcgi_param  QUERY_STRING       $query_string;
  6. fastcgi_param  REQUEST_METHOD     $request_method;
  7. fastcgi_param  CONTENT_TYPE       $content_type;
  8. fastcgi_param  CONTENT_LENGTH     $content_length;

  9. fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
  10. fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
  11. fastcgi_param  REQUEST_URI        $request_uri;
  12. fastcgi_param  DOCUMENT_URI       $document_uri;
  13. fastcgi_param  DOCUMENT_ROOT      $document_root;
  14. fastcgi_param  SERVER_PROTOCOL    $server_protocol;

  15. fastcgi_param  REMOTE_ADDR        $remote_addr;
  16. fastcgi_param  REMOTE_PORT        $remote_port;
  17. fastcgi_param  SERVER_ADDR        $server_addr;
  18. fastcgi_param  SERVER_PORT        $server_port;
  19. fastcgi_param  SERVER_NAME        $server_name;

  20. # PHP only, required if PHP was built with --enable-force-cgi-redirect
  21. #fastcgi_param  REDIRECT_STATUS    200;
复制代码
3)配置修改php-fpm脚本
配置php-fpm脚本:
cd /usr/local/php-fcgi/etc/
vi php-fpm.conf  修改如下内容:(进入vi编辑器,输入:set nu 显示行号.)
  1. 41                         <value name="listen_address">127.0.0.1:8085</value>
  2. 62                         Unix user of processes
  3. 63                         <value name="user">www</value>
  4. 65                         Unix group of processes
  5. 66                         <value name="group">www</value>
  6. 79                                 <value name="max_children">128</value>
  7. 80
  8. 81                                 Settings group for 'apache-like' pm style
  9. 82                                 <value name="apache_like">
  10. 83
  11. 84                                         Sets the number of server processes created on startup.
  12. 85                                         Used only when 'apache-like' pm_style is selected
  13. 86                                         <value name="StartServers">20</value>
  14. 87
  15. 88                                         Sets the desired minimum number of idle server processes.
  16. 89                                         Used only when 'apache-like' pm_style is selected

  17. 90                                         <value name="MinSpareServers">5</value>
  18. 91
  19. 92                                         Sets the desired maximum number of idle server processes.
  20. 93                                         Used only when 'apache-like' pm_style is selected
  21. 94                                         <value name="MaxSpareServers">250</value>
  22. 104                         Set open file desc rlimit
  23. 105                         <value name="rlimit_files">51200</value>
  24. 106
  25. 107                         Set max core size rlimit
  26. 108                         <value name="rlimit_core">0</value>
  27. 109
  28. 110                         Chroot to this directory at the start
  29. 111                         <value name="chroot"></value>
  30. 112
  31. 113                         Chdir to this directory at the start
  32. 114                         <value name="chdir"></value>
  33. 115
  34. 116                         Redirect workers' stdout and stderr into main error log.
  35. 117                         If not set, they will be redirected to /dev/null, according to FastCGI specs
  36. 118                         <value name="catch_workers_output">yes</value>
  37. 119
  38. 120                         How much requests each process should execute before respawn.
  39. 121                         Useful to work around memory leaks in 3rd party libraries.
  40. 122                         For endless request processing please specify 0
  41. 123                         Equivalent to PHP_FCGI_MAX_REQUESTS
  42. 124                         <value name="max_requests">51200</value>
复制代码
4) Nginx+PHP(fastcgi)启动脚本参考:http://bbs.linuxtone.org/thread-372-1-2.html
&amp;lt;-sina_sign,1762622645,2a5b1a59,10-&amp;gt;感谢大家对linuxtone的支持!&amp;lt;/strong&amp;gt;

使用道具 举报

LT管理团队

社区首席勤杂工

Rank: 9Rank: 9Rank: 9

注册时间
2008-5-19
最后登录
2019-11-16
在线时间
1946 小时
阅读权限
200
积分
59419
帖子
2551
主题
1209
精华
25
UID
1

LT总司令

发表于 2008-6-23 16:27:47 |显示全部楼层
四、Nginx多虚拟主机配置及基本优化(以配置Discuz!论坛为例)

1.配置Nginx虚拟主机(防盗链及expires设置)
#vi /usr/local/nginx/conf/vhosts/bbs.linuxtone.org.conf
  1. server
  2.        {
  3.                listen       80;
  4.                server_name  bbs.linuxtone.org www.linuxtone.org;
  5.                index index.html index.php index.htm;
  6.                root  /data/www/wwwroot/lt/bbs;
  7.                #access_log /var/log/nginx/access_bbs.redocn.com.log  combined;
  8.                location / {
  9.                if (!-e $request_filename) {
  10.                          rewrite ^/archiver/((fid|tid)-[\w\-]+\.html)$   /archiver/index.php?$1 last;
  11.                          rewrite ^/forum-([0-9]+)-([0-9]+)\.html$   /forumdisplay.php?fid=$1&page=$2 last;
  12.                          rewrite ^/thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$  /viewthread.php?tid=$1&extra=page%3D$3&page=$2

  13. last;
  14.                          rewrite ^/space-(username|uid)-(.+)\.html$   /space.php?$1=$2 last;
  15.                          rewrite ^/tag-(.+)\.html$ /tag.php?name=$1 last;
  16.                          break;
  17.                                           }

  18.                 }

  19.                #Preventing hot linking of images and other file types
  20.                location ~* ^.+\.(gif|jpg|png|swf|flv|rar|zip)$ {
  21.                        valid_referers none blocked server_names *.linuxtone.org http://localhost;
  22.                if ($invalid_referer) {
  23.                rewrite   ^/   http://bbs.linuxtone.org/images/default/logo.gif;
  24.                return   403;
  25.                                      }
  26.                                                                }
  27.                # Add expires header for static content
  28.                location ~* \.(js|css|jpg|jpeg|gif|png|swf)$ {
  29.                if (-f $request_filename) {
  30.                   root /data/www/wwwroot/lt/bbs;
  31.                   expires      1d;
  32.                   break;
  33.                   }

  34.                }
  35.                #support php
  36.                location ~ .*\.php?$
  37.                {
  38.                        include enable_php5.conf;
  39.                }

  40.        }
复制代码
2.Nginx搭建下载站点限制并发数和速率.
  1. vi /usr/local/nginx/conf/vhosts/down.redocn.com.conf
  2. limit_zone   one  $binary_remote_addr  10m;
  3. server
  4.        {
  5.                listen       80;
  6.                server_name  down.redocn.com;
  7.                index index.html index.htm index.php;
  8.                root   /data/www/wwwroot/down;
  9.                error_page 404 /index.php;
  10.                # redirect server error pages to the static page /50x.html
  11.                error_page   500 502 503 504  /50x.html;
  12.                location = /50x.html {
  13.                 root   html;
  14.                   }
  15.                #Zone limit
  16.                location / {
  17.                    limit_conn   one  1;
  18.                    limit_rate  20k;
  19.                }


  20.                # serve static files
  21.                location ~ ^/(images|javascript|js|css|flash|media|static)/  {
  22.                root    /data/www/wwwroot/down;
  23.                expires 30d;
  24.                 }
  25.        }
复制代码
3.如何实现Nginx身份验证
实现输入http://count.linuxtone.org/tongji 要求输入用户名和密码验证才可查看内内。配置方法如下:
创建统计配置文件:
  1. mkdir /usr/local/nginx/conf/htpasswd  #创建存放密码的目录
  2. /usr/local/apache2/bin/htpasswd -c /usr/local/nginx/conf/htpasswd/tongji admin

  3. server
  4.        {
  5.                listen       80;
  6.                server_name  count.linuxtone.org;
  7.                index index.html index.php;
  8.                root  /data/www/wwwroot/count;
  9.                access_log /data/logs/access_count.linuxtone.org.log  combined;
  10.                #error page
  11.                error_page 404 http://www.linuxtone.org/error.html;
  12.                error_page 500 502 503 504 http://www.linuxtone.org;
  13.                #support php
  14.                location ~ .*\.php?$
  15.                {
  16.                        include enable_php5.conf;
  17.                }

  18.                #expires static files
  19.                location ~* \.(js|css|jpg|jpeg|gif|png)$ {
  20.                if (-f $request_filename) {
  21.                   access_log   off;
  22.                   expires      1d;
  23.                   break;
  24.                   }
  25.                }
  26.               location ~ ^/(tongji)/  {
  27.                 root    /data/www/wwwroot/count;
  28.                         auth_basic              "LT-COUNT-TongJi";
  29.                         auth_basic_user_file  /usr/local/nginx/conf/htpasswd/tongji;
  30.                 }

  31.       }
复制代码
4.如何实现Nginx目录列表
在相关虚拟主机配置文件加入如下设置即可,更多请参考官方wiki
  1. location  /  {
  2.     autoindex  on;
  3. }
复制代码
5.修改Nginx的header伪装服务器
  1. cd nginx-0.6.31/src/core
  2. #define NGINX_VERSION      "1.2"
  3. #define NGINX_VER          "LTWS/" NGINX_VERSION
复制代码
仍后重新编译nginx即可,查看一下效果:
[root@count ~]# curl -I http://bbs.linuxtone.org
  1. HTTP/1.1 200 OK
  2. Server: LTWS/1.2
  3. Date: Mon, 23 Jun 2008 06:11:17 GMT
  4. Content-Type: text/html; charset=gb2312
  5. Transfer-Encoding: chunked
  6. Connection: keep-alive
  7. Set-Cookie: lt__sid=cJN2FT; expires=Mon, 30-Jun-2008 06:11:17 GMT; path=/
  8. Set-Cookie: lt__onlineusernum=228; expires=Mon, 23-Jun-2008 06:16:17 GMT; path=/
复制代码
6.减小nginx编译后的文件大小 (Reduce file size of nginx)
默认的nginx编译选项里居然是用debug模式(-g)的(debug模式会插入很多跟踪和ASSERT之类),编译以后一个nginx有好几兆。
去掉nginx的debug模式编译,编译以后只有480K(nginx-0.6.31 , gcc4)。
[root@ssatt local]# du -sh nginx
480K    nginx
在auto/cc/gcc,最后几行有:
  1. # debug
  2. CFLAGS="$CFLAGS -g"
复制代码
注释掉或删掉这几行,重新编译即可

7.Nginx日志处理
[root@count ~]# crontab -l
  1. 59 23 * * * /usr/local/sbin/logcron.sh /dev/null 2>&1
复制代码
[root@count ~]# cat /usr/local/sbin/logcron.sh
  1. #!/bin/bash
  2. log_dir="/data/logs"
  3. time=`date +%Y%m%d`  
  4. /bin/mv  ${log_dir}/access_linuxtone.org.log ${log_dir}/access_count.linuxtone.org.$time.log
  5. kill -USR1 `cat  /var/run/nginx.pid`
复制代码
更多的日志分析与处理就关注(同时欢迎你参加讨论):http://bbs.linuxtone.org/forum-8-1.html

8.优化内核参数
vi /etc/sysctl.conf
  1. net.ipv4.tcp_fin_timeout = 30
  2. net.ipv4.tcp_keepalive_time = 300
  3. net.ipv4.tcp_syncookies = 1
  4. net.ipv4.tcp_tw_reuse = 1
  5. net.ipv4.tcp_tw_recycle = 1
  6. net.ipv4.ip_local_port_range = 5000    65000
复制代码
五、基本安全设置策略
  1)SSH安全策略:经常升级OpenSSH,SSH全安(修改SSH端口限制来源IP登陆,或者参考http://bbs.linuxtone.org/thread-106-1-1.html

)
  2)关掉不需要的服务可以利用上文提到的脚本;iptables 封锁相关端口(推荐读CU白金大哥的两小时玩转iptables)
  3)做好系统监控和审计相关的工作,做好系统自动化备份脚本,保证数据短时期可以恢复最近时间段,降低损失!
  4)Linux防Arp攻击策略(http://bbs.linuxtone.org/thread-41-1-1.html)
  5)注意(还是那句老话:安全工作从细节做起!)更多的请实时关注:http://bbs.linuxtone.org/forum-21-1.html (安全专项)

六、附录及相关介绍
1.参考文档(对相关作者分享精神表示感谢!):
  Reduce file size of nginx:  http://bianbian.org/technology/271.html
  构建LEMP相关文章(作者:张宴): http://blog.s135.com/read.php/351.htm
  基于CentOS构建高性能的LAMP平台: http://bbs.linuxtone.org/thread-122-1-1.html
  利用Nginx替代apache实现高性能的Web环境(第一版): http://bbs.linuxtone.org/thread-7-1-1.html
  
2.关于LinuxTone.Org(IT运维专家论坛):

   目标:希望和大家一起努力打造一个专注IT运维,Linux集群架构的开放互动讨论平台!期待您的加入!

   我们很乐意把平时工作中遇到的问题和得到的经验与大家共同分享相互学习!
   如果你是Linux爱好者?
   如果你目前在网站服务器方面遇到很多头痛的问题?
   如果你目前的站就使用了Linux?或者你想将你的Linux的apache迁于至高性能的Nginx?
   如果您使用的是WAMP(即Windows平台的AMP)平台想迁移至LAMP?
   如果你目前的网站需要优化进一步提升硬件性能?
   如果你目前的网站需要负载均衡集群架构方案? 请联系我们!
   我们愿意抽出空余时间免费热心为你解答相关问题,协助你完成所有相关工作!共同分享!共同进步!
   同时也热情期待你能加入http://www.linuxtone.org 帮我一起完善论坛建设工作,完成每版置顶的手册形成可操作 性强的文档及方案,方便大家一起学习进步!联系方式:QQ:67888954 MSN:cnseek@msn.com Gtalk:cnseek@gmail.com
&amp;lt;-sina_sign,1762622645,2a5b1a59,10-&amp;gt;感谢大家对linuxtone的支持!&amp;lt;/strong&amp;gt;

使用道具 举报

LT管理团队

社区首席勤杂工

Rank: 9Rank: 9Rank: 9

注册时间
2008-5-19
最后登录
2019-11-16
在线时间
1946 小时
阅读权限
200
积分
59419
帖子
2551
主题
1209
精华
25
UID
1

LT总司令

发表于 2008-6-23 16:27:56 |显示全部楼层
初稿整理完毕,希望坛内朋友多多提提意见!
看看是否有笔误,花了一下午时间,相关配置附件随后我会上传,供大家下载!

呵呵,看起来比较累,等大家发应了一定的BUG以后,我将制作成带提纲的HTML版供大家查阅!
&amp;lt;-sina_sign,1762622645,2a5b1a59,10-&amp;gt;感谢大家对linuxtone的支持!&amp;lt;/strong&amp;gt;

使用道具 举报

Rank: 3Rank: 3

注册时间
2008-5-27
最后登录
2017-9-11
在线时间
8 小时
阅读权限
30
积分
243
帖子
13
主题
2
精华
0
UID
22
发表于 2008-6-23 17:04:58 |显示全部楼层
关闭selinux那块, 其实setenforce 0 就不需要重启机器了

使用道具 举报

LT管理团队

夜归人Dě传奇

Rank: 9Rank: 9Rank: 9

注册时间
2008-5-25
最后登录
2017-6-27
在线时间
59 小时
阅读权限
200
积分
4598
帖子
108
主题
25
精华
0
UID
5

LT粉丝

发表于 2008-6-23 17:32:42 |显示全部楼层
好。 等我装了 在给你提意见吧  o(∩_∩)o...
聚,不是开始。散,不是结束。因为爱过,所以不是敌人。因为伤过,所以不是朋友。我们是最熟熟悉的陌生人。

使用道具 举报

Rank: 8Rank: 8

注册时间
2008-5-26
最后登录
2014-4-6
在线时间
36 小时
阅读权限
150
积分
409
帖子
87
主题
33
精华
5
UID
7

LT粉丝

发表于 2008-6-23 20:39:21 |显示全部楼层
辛苦辛苦,学习了

使用道具 举报

LT技术团队

秋意浓

Rank: 7Rank: 7Rank: 7

注册时间
2008-5-27
最后登录
2012-11-19
在线时间
93 小时
阅读权限
100
积分
418
帖子
56
主题
7
精华
0
UID
21
发表于 2008-6-26 09:38:14 |显示全部楼层
小曹辛苦了,很有精力的小伙,我学习了

使用道具 举报

Rank: 2

注册时间
2008-6-26
最后登录
2017-9-11
在线时间
0 小时
阅读权限
20
积分
63
帖子
1
主题
0
精华
0
UID
109
发表于 2008-6-26 13:37:26 |显示全部楼层
哇塞,好强大,好葱白!

使用道具 举报

Rank: 2

注册时间
2008-7-15
最后登录
2009-1-18
在线时间
25 小时
阅读权限
20
积分
106
帖子
72
主题
10
精华
2
UID
139

LT粉丝

发表于 2008-7-19 17:39:33 |显示全部楼层
个人觉得 nginx 和 lighttpd 有取代 apache 的形式
我用 apache 也有一段时间了 但是 apache 的文档实在太多了 实在看不过来
nginx 和 lighttpd 的配置就相对简明一些

使用道具 举报

Rank: 1

注册时间
2008-7-24
最后登录
2008-7-24
在线时间
0 小时
阅读权限
1
积分
1
帖子
2
主题
0
精华
0
UID
157
发表于 2008-7-24 16:17:52 |显示全部楼层
处女贴献给你 小弟是新手

使用道具 举报

Rank: 1

注册时间
2008-7-24
最后登录
2008-7-24
在线时间
0 小时
阅读权限
1
积分
1
帖子
2
主题
0
精华
0
UID
157
发表于 2008-7-24 16:18:48 |显示全部楼层
目前在做一个站 www.cgvchina.com
但是现在只做好了bbs.cgvchina.com
研究一下怎么弄两个目录

使用道具 举报

LT管理团队

社区首席勤杂工

Rank: 9Rank: 9Rank: 9

注册时间
2008-5-19
最后登录
2019-11-16
在线时间
1946 小时
阅读权限
200
积分
59419
帖子
2551
主题
1209
精华
25
UID
1

LT总司令

发表于 2008-7-24 16:25:50 |显示全部楼层
不错!可以和你做个友情链接,有任何技术问题,交流沟通。
一个服务器放多个站其实了解怎么样配置虚拟主机就可以了,相信你能搞定!
&amp;lt;-sina_sign,1762622645,2a5b1a59,10-&amp;gt;感谢大家对linuxtone的支持!&amp;lt;/strong&amp;gt;

使用道具 举报

Rank: 1

注册时间
2008-7-26
最后登录
2008-8-29
在线时间
6 小时
阅读权限
1
积分
6
帖子
12
主题
3
精华
0
UID
169
发表于 2008-7-26 04:51:59 |显示全部楼层
我已经在我的电脑上装上了,只是nginx现在还无法工作。特别是nginx支持php那部分,看得我一头雾水。版主能否帮忙再详细说明一下吗?

使用道具 举报

LT管理团队

社区首席勤杂工

Rank: 9Rank: 9Rank: 9

注册时间
2008-5-19
最后登录
2019-11-16
在线时间
1946 小时
阅读权限
200
积分
59419
帖子
2551
主题
1209
精华
25
UID
1

LT总司令

发表于 2008-7-28 11:19:31 |显示全部楼层

回复 14# jikila 的帖子

一步一步的来,我觉得文章已经很详细了,你也可以把你的错误贴出来,大家和你一起解决!
&amp;lt;-sina_sign,1762622645,2a5b1a59,10-&amp;gt;感谢大家对linuxtone的支持!&amp;lt;/strong&amp;gt;

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

IT运维专家网感谢您的支持

合作联系: QQ:67888954/MSN:cnseek@msn.com/mail:netseek@linuxtone.org

Archiver|手机版|感谢所有关心和支持过LinuxTone的朋友们 转载本站内容请注明原作者名及出处 ( 京ICP备08103151 )   |

GMT+8, 2020-5-29 14:47 , Processed in 0.038920 second(s), 14 queries , Apc On.

Powered by Discuz! X2 Licensed

© 2001-2011 Comsenz Inc.

回顶部