Linux系统安装LNMP后的相关配置优化,Nginx安装配置

Nginx :0.8.15

系统环境:

平台环境

Linux系统安装LNMP后的相关配置优化

1、安装Nginx所需的pcre库:

SUSE Linux Enterprise
Server 10 SP1 (x86_64)

centos 6.2 64位 nginx-1.2.1 php-5.3.14 mysql-5.5.25

 

  1. #cd /usr/local/src/tarbag  
  2. #tar zxvf pcre-7.9.tar.gz -C ../software  
  3. #cd ../software/pcre-7.9/  
  4. #./configure  
  5. #make && make install  
  6. #cd ../../tarbag  

注:所有软件包都放置在/data/software目录下

一、安装依赖库和开发环境

1、设置 开机主动 启动Nginx + PHP

2、安装Nginx

nginx_tcp_proxy_module:

 安装gcc的

vim /etc/rc.local

  1. #tar zxvf nginx-0.8.15.tar.gz -C ../software  
  2. #cd ../software/nginx-0.8.15/  
  3. #./configure –user=nobody –group=nobody –prefix=/usr/local/nginx –with-http_stub_status_module–with-http_ssl_module  
  4. #make && make install  
  5. #cd ../../tarbag  

 

错误 提示:kernel-headers >= 2.2.1

 

3、创建Nginx日志目录

nginx-hmux-module:

解决办法是,打开 /etc/yum.conf 然后找到这行: 

/home/mysql/mysql start

  1. mkdir -p /opt/www/nginx/logs  
  2. chmod +w /www/nginx/logs  
  3. chown -R nobody:nobody /www/nginx/logs  

exclude=kernel* 

ulimit -SHn 65535

4、创建Nginx配置文件
在/usr/local/nginx/conf/目录中创建nginx.conf文件:

ngx_cache_purge:

修改为: 

/usr/local/webserver/php/sbin/php-fpm start

  1. rm -f /usr/local/nginx/conf/nginx.conf  
  2. vi /usr/local/nginx/conf/nginx.conf  
  3. user  nobody nobody;  
  4. worker_processes 8;  
  5. error_log  /opt/www/nginx/logs/nginx_error.log  crit;  
  6. pid        /usr/local/nginx/nginx.pid;  
  7. #Specifies the value for maximum file descriptors that can be opened by this process.worker_rlimit_nofile 65535;  
  8. events  
  9. {  
  10. use epoll;  
  11. worker_connections 65535;  
  12. }  
  13. http  
  14. {  
  15. include       mime.types;  
  16. default_type  application/octet-stream;  
  17. #charset  gb2312;  
  18. server_names_hash_bucket_size 128;  
  19. client_header_buffer_size 32k;  
  20. large_client_header_buffers 4 32k;  
  21. client_max_body_size 8m;  
  22. sendfile on;  
  23. tcp_nopush     on;  
  24. keepalive_timeout 60;  
  25. tcp_nodelay on;  
  26. gzip on;  
  27. gzip_min_length  1k;  
  28. gzip_buffers     4 16k;  
  29. gzip_http_version 1.0;  
  30. gzip_comp_level 2;  
  31. gzip_types       text/plain application/x-javascript text/css application/xml;  
  32. gzip_vary on;  
  33.     log_format  access    ‘$remote_addr – $remote_user [$time_local] ‘  
  34.                     “$request” $status $bytes_sent ‘  
  35.                     ‘”$http_referer” “$http_user_agent” ‘  
  36.                     “$gzip_ratio”‘;  
  37. log_format  wwwlogs  ‘$remote_addr – $remote_user [$time_local] ‘  
  38.                          ‘”$request” $status $bytes_sent ‘  
  39.                          ‘”$http_referer” “$http_user_agent” ‘  
  40.                          ‘”$http_range” “$sent_http_content_range”‘;  
  41. include     vhosts.conf  
  42. }  

exclude= 

/usr/local/webserver/nginx/sbin/nginx

在/usr/local/nginx/conf/目录中创建vhosts.conf文件:

#———————————————————————————————————————————————

就可以安装 gcc 了。

 

  1. vi /usr/local/nginx/conf/vhosts.conf  
  2. #limit_zone  crawler  $binary_remote_addr  10m;  
  3. server  
  4. {  
  5. listen       80;  
  6. server_name  www.hsf.com;  
  7. index index.html index.htm index.php;  
  8. root  /www/blog;  
  9. #limit_conn   crawler  20;  
  10.         access_log  /opt/www/nginx/logs/access.log  access;  
  11. }  
  12. server  
  13. {  
  14. listen       80;  
  15. server_name  www.hsf.com;  
  16. index index.html index.htm index.php;  
  17. root  /www/www;  
  18. access_log  /www/nginx/wwwlogs.log  wwwlogs;  
  19. }  
  20. server  
  21. {  
  22. listen  80;  
  23. server_name  status.www.hsf.com;  
  24. location /  
  25. {  
  26. stub_status on;  
  27. access_log   off;      
  28. }    
  29. }  

1、内存管理库

 

2、优化Linux内核参数

5、启动Nginx

# tar -zxvf libunwind-1.0.1.tar.gz

安装升级所需程序库

vi /etc/sysctl.conf

  1. ulimit -SHn 65535  
  2. /usr/local/nginx/sbin/nginx  

# cd libunwind-1.0.1

  1. sudo -s 
  2. LANG=C 
  3. 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 

末端 加上

优化Linux内核参数

# LAGS=-fPIC ./configure –prefix=/usr/local

 

# Add

  1. vi /etc/sysctl.conf  

# make LAGS=-fPIC

64位编译mysql5.5.25a可能会出现各种各样的问题,下面的库也一起安装吧,有部分重复的自己去掉

net.ipv4.tcp_max_syn_backlog = 65536

在末尾增加以下内容:

# make LAGS=-fPIC install

  1. yum -y install bison gcc gcc-c++ autoconf automake zlib* libxml* ncurses-devel libtool-ltdl-devel* mysql-devel 

net.core.netdev_max_backlog =  32768

  1. # Add  
  2. net.ipv4.tcp_max_syn_backlog = 65536  
  3. net.core.netdev_max_backlog =  32768  
  4. net.core.somaxconn = 32768  
  5. net.core.wmem_default = 8388608  
  6. net.core.rmem_default = 8388608  
  7. net.core.rmem_max = 16777216  
  8. net.core.wmem_max = 16777216  
  9. net.ipv4.tcp_timestamps = 0  
  10. net.ipv4.tcp_synack_retries = 2  
  11. net.ipv4.tcp_syn_retries = 2  
  12. net.ipv4.tcp_tw_recycle = 1  
  13. #net.ipv4.tcp_tw_len = 1  
  14. net.ipv4.tcp_tw_reuse = 1  
  15. net.ipv4.tcp_mem = 94500000 915000000 927000000  
  16. net.ipv4.tcp_max_orphans = 3276800  
  17. #net.ipv4.tcp_fin_timeout = 30  
  18. #net.ipv4.tcp_keepalive_time = 120  
  19. net.ipv4.ip_local_port_range = 1024  65535  

 

三、下载所需程序

net.core.somaxconn = 32768

使配置立即生效:

# tar -zxvf gperftools-2.0.tar.gz

  1. mkdir -p /data0/soft 
  2. cd /data0/soft 
  3. wget  
  4. wget  
  5. wget  
  6. wget  
  7. wget  
  8. wget  
  9. wget  
  10. wget  
  11. wget  
  12. wget  
  13. wget  
  14. wget  
  15. wget  
  16. wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.30.tar.gz 

 

  1. /sbin/sysctl -p  

# cd gperftools-2.0

四、安装PHP 5.3.14

net.core.wmem_default = 8388608

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

# ./configure –prefix=/usr/local

  1. tar zxvf libiconv-1.14.tar.gz 
  2. cd libiconv-1.14/ 
  3. ./configure –prefix=/usr/local 
  4. make 
  5. make install 
  6. cd ../ 

net.core.rmem_default = 8388608

  1. /usr/local/nginx/sbin/nginx -t  

# make && make install

 

net.core.rmem_max = 16777216

  如果屏幕显示以下两行信息,说明配置文件正确:

 

  1. tar zxvf libmcrypt-2.5.8.tar.gz  
  2. cd libmcrypt-2.5.8/ 
  3. ./configure 
  4. make 
  5. make install 
  6. /sbin/ldconfig 
  7. cd libltdl/ 
  8. ./configure –enable-ltdl-install 
  9. ca88手机登录,make 
  10. make install 
  11. cd ../../ 

net.core.wmem_max = 16777216

  1.   the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok  
  2.   the configuration file /usr/local/nginx/conf/nginx.conf was tested successfully  

#———————————————————————————————————————————————

 

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

2、正则库

  1. tar zxvf mhash-0.9.9.9.tar.gz 
  2. cd mhash-0.9.9.9/ 
  3. ./configure 
  4. make 
  5. make install 
  6. cd ../ 

net.ipv4.tcp_timestamps = 0

  1. ps -ef | grep “nginx: master process” | grep -v “grep” | awk -F ‘ ‘ ‘{print $2}’  

# tar -xvzf pcre-8.32.tar.gz

 

net.ipv4.tcp_synack_retries = 2

  屏幕显示的即为Nginx主进程号,例如:

# cd pcre-8.32

  1. ln -s /usr/local/lib/libmcrypt.la /usr/lib/libmcrypt.la 
  2. ln -s /usr/local/lib/libmcrypt.so /usr/lib/libmcrypt.so 
  3. ln -s /usr/local/lib/libmcrypt.so.4 /usr/lib/libmcrypt.so.4 
  4. ln -s /usr/local/lib/libmcrypt.so.4.4.8 /usr/lib/libmcrypt.so.4.4.8 
  5. ln -s /usr/local/lib/libmhash.a /usr/lib/libmhash.a 
  6. ln -s /usr/local/lib/libmhash.la /usr/lib/libmhash.la 
  7. ln -s /usr/local/lib/libmhash.so /usr/lib/libmhash.so 
  8. ln -s /usr/local/lib/libmhash.so.2 /usr/lib/libmhash.so.2 
  9. ln -s /usr/local/lib/libmhash.so.2.0.1 /usr/lib/libmhash.so.2.0.1 
  10. ln -s /usr/local/bin/libmcrypt-config /usr/bin/libmcrypt-config 

net.ipv4.tcp_syn_retries = 2

  1. 6302  

 

 

 

  这时,执行以下命令即可使修改过的Nginx配置文件生效:

# LAGS=-fPIC ./configure –prefix=/usr/local

  1. tar zxvf mcrypt-2.6.8.tar.gz 
  2. cd mcrypt-2.6.8/ 
  3. /sbin/ldconfig 
  4. ./configure 
  5. make 
  6. make install 
  7. cd ../ 

net.ipv4.tcp_tw_recycle = 1

  1. kill -HUP 6302  

# make LAGS=-fPIC

 

#net.ipv4.tcp_tw_len = 1

  或者无需这么麻烦,找到Nginx的Pid文件:

# make LAGS=-fPIC install

五、编译安装MySQL 5.5.25a

net.ipv4.tcp_tw_reuse = 1

  1. kill -HUP `cat /usr/local/nginx/nginx.pid`  

 

  1. tar zxvf cmake-2.8.8.tar.gz 
  2. cd cmake-2.8.8 
  3. ./configure 
  4. gmake  
  5. gmake install  
  6. cd ../ 

 

  七、编写每天定时切割Nginx日志的脚本
  1、创建脚本/usr/local/scripts/cut_nginx_log.sh

#———————————————————————————————————————————————

net.ipv4.tcp_mem = 94500000 915000000 927000000

  1. vi /usr/local/scripts/cut_nginx_log.sh  

3、OpenSSL库

64位系统安装cmake后执行cmake命令,如不能找到命令,是环境变量的问题,可到cmake目录再执行cmake命令  或添加环境变量,如能直接执行,此步可省略,设置环境变量# export PATH=/usr/local/bin:$PATH  

net.ipv4.tcp_max_orphans = 3276800

  输入以下内容:

# tar xvzf openssl-1.0.1g.tar.gz

  1. /usr/sbin/groupadd mysql 
  2. /usr/sbin/useradd -g mysql mysql 
  3. tar zxvf mysql-5.5.25a.tar.gz 
  4. cd mysql-5.5.25a 

 

  1. #!/bin/bash  
  2. # This script run at 00:00  
  3. # The Nginx logs path  
  4. logs_path=”/www/nginx/logs/”  
  5. mkdir -p ${logs_path}$(date -d “yesterday” +”%Y”)/$(date -d “yesterday” +”%m”)/mv ${logs_path}access.log ${logs_path}$(date -d “yesterday” +”%Y”)/$(date -d “yesterday” +”%m”)/access_$(date -d “yesterday” +”%Y%m%d”).log  
  6. kill -USR1 `cat /usr/local/nginx/nginx.pid`  

# cd openssl-1.0.1g

#net.ipv4.tcp_fin_timeout = 30

  2、设置crontab,每天凌晨00:00切割nginx访问日志

# ./config shared –prefix=/usr/local

  1. cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/webserver/mysql \
  2. -DEXTRA_CHARSETS=all \
  3. -DWITH_READLINE=1 \
  4. -DWITH_SSL=system \
  5. -DWITH_EMBEDDED_SERVER=1 \
  6. -DENABLED_LOCAL_INFILE=1 \
  7. -DWITH_INNOBASE_STORAGE_ENGINE=1 \
  8. -DWITHOUT_PARTITION_STORAGE_ENGINE=1
  9. make 
  10. make intall 

#net.ipv4.tcp_keepalive_time = 120

  1. crontab -e  

# make && make install

 

net.ipv4.ip_local_port_range = 1024  65535

  输入以下内容:

 

  1. chmod +w /usr/local/webserver/mysql 
  2. chown -R mysql:mysql /usr/local/webserver/mysql 
  3. cd ../ 

 

  1. 00 00 * * * /bin/bash  /usr/local/scripts/cut_nginx_log.sh  

#———————————————————————————————————————————————

 

立即 奏效适才 所设置 的

ca88手机登录 1

4、IP地理位置定位组件

附:以下为附加步骤,如果你想在这台服务器上运行MySQL数据库,则执行以下几步。如果你只是希望让PHP支持MySQL扩展库,能够连接其他服务器上的MySQL数据库,那么,以下两步无需执行。
①、创建MySQL数据库存放目录

/sbin/sysctl -p

# tar xvzf GeoIP-latest.tar.gz

  1. mkdir -p /data0/mysql/3306/data/ 
  2. mkdir -p /data0/mysql/3306/binlog/ 
  3. mkdir -p /data0/mysql/3306/relaylog/ 
  4. chown -R mysql:mysql /data0/mysql/ 

 

# cd GeoIP-1.5.0

 #设置mysql我这里分两种方案,可以任选其一。

3、在不收场Nginx做事的情况下平滑变革 Nginx设置 

# ./configure –prefix=/usr/local

方案一:

改了/usr/local/webserver/nginx/conf/nginx.conf

# make && make install

#在support-files目录中有五个配置信息文件:这里我们选择内存1-2G的

用这个下令 测试 

 

#my-small.cnf (内存<=64M)

/usr/local/webserver/nginx/sbin/nginx -t

#———————————————————————————————————————————————

#my-medium.cnf (内存 128M)

 

5、相关目录创建

#my-large.cnf (内存 512M)

出现

# mkdir -p
/data/nginx_temp/{nginx_client,nginx_proxy,nginx_fastcgi,nginx_temp,nginx_cache}

#my-huge.cnf (内存 1G-2G)

假如 屏幕表现 以下两行信息,阐发 设置 文件精确 :

# mkdir -p /data/logs/{nginx,web} /data/web/{data,conf}

#my-innodb-heavy-4G.cnf (内存 4GB)

the configuration file /usr/local/webserver/nginx/conf/nginx.conf syntax
is ok

 

  1. cd /usr/local/webserver/mysql 
  2. cp ./support-files/my-huge.cnf /etc/my.cnf  
  3. vi /etc/my.cnf 

the configuration file /usr/local/webserver/nginx/conf/nginx.conf was
tested successfully

#———————————————————————————————————————————————

编辑配置文件,在 

代表设置 没有任何题目 ,可以放心起头推行 

6、Tengine编译安装

#在 [mysqld] 段增加

 

# tar xvzf nginx-hmux-module-1.3.tar.gz

 

4、平滑重启NGINX

# tar xvzf nginx_tcp_proxy_module-0.4.5.tar.gz

  1. datadir = /data0/mysql/3306/data #添加MySQL数据库路径 
  2. wait-timeout = 30 
  3. max_connections = 512 
  4. default-storage-engine = MyISAM 
  5. max_allowed_packet = 16M

/usr/local/webserver/nginx/sbin/nginx -s reload

 

方案二:

 

# tar xvzf tengine-1.5.2.tar.gz

关于my.cnf配置文件,我这里贴一个我配置的,仅作参考,可以忽略。如选择此方案,在/etc/my.cnf
里面输入下面的内容 

5、编写每天 定时切割Nginx日记 的脚本

# cd tengine-1.5.2

[client]

vi /usr/local/webserver/nginx/sbin/cut_nginx_log.sh

# patch -p1 < ../nginx_tcp_proxy_module-0.4.5/tcp.patch

default-character-set = utf8

 

 

port    = 3306

#!/bin/bash

 

socket  = /tmp/mysql.sock

# This script run at 00:00

# ./configure –prefix=/usr/local/nginx \

[mysqld]

 

–lock-path=/var/lock/nginx.lock \

character-set-server = utf8

# The Nginx logs path

–pid-path=/var/run/nginx.pid \

replicate-ignore-db = mysql

logs_path=”/usr/local/webserver/nginx/logs/”

–error-log-path=/data/logs/nginx/error.log \

replicate-ignore-db = test

 

–http-log-path=/data/logs/nginx/access.log \

replicate-ignore-db = information_schema

mkdir -p ${logs_path}$(date -d “yesterday” +”%Y”)/$(date -d “yesterday”
+”%m”)/

–user=nobody \

user    = mysql

mv ${logs_path}access.log ${logs_path}$(date -d “yesterday”
+”%Y”)/$(date -d “yesterday” +”%m”)/access_$(date -d “yesterday”
+”%Y%m%d”).log

–group=nogroup \

port    = 3306

kill -USR1 `cat /usr/local/webserver/nginx/nginx.pid`

–with-pcre=../pcre-8.32 \

socket  = /tmp/mysql.sock

添加到定时义务 中去

–with-pcre-opt=-fPIC \

basedir = /usr/local/webserver/mysql

 

–with-openssl=../openssl-1.0.1g \

datadir = /data0/mysql/3306/data

1、设置
开机主动 启动Nginx + PHP vim /etc/rc.local /home/mysql/mysql start
ulimit -SHn 65535 /usr/local/webserver/php/sbin/ph…

–with-openssl-opt=-fPIC \

log-error = /data0/mysql/3306/mysql_error.log

–with-backtrace_module \

pid-file = /data0/mysql/3306/mysql.pid

–with-http_stub_status_module \

#默认10240

–with-http_gzip_static_module \

open_files_limit    = 9600

–with-http_realip_module \

#默认600

–with-http_concat_module=shared \

back_log = 300

–with-http_sysguard_module=shared \

#默认5000

–with-http_limit_conn_module=shared \

max_connections = 2000

–with-http_limit_req_module=shared \

#默认6000

–with-http_split_clients_module=shared \

max_connect_errors = 3000

–with-http_footer_filter_module=shared \

table_cache = 614

–with-http_geoip_module=shared \

table_open_cache = 614

–with-http_sub_module=shared \

external-locking = FALSE

–with-http_access_module=shared \

max_allowed_packet = 32M

–with-http_upstream_ip_hash_module=shared \

sort_buffer_size = 1M

–with-http_upstream_least_conn_module=shared \

join_buffer_size = 1M

–with-http_referer_module=shared \

#默认300

–with-http_rewrite_module=shared \

thread_cache_size = 150

–with-http_memcached_module=shared \

#双核的话设4,4核设8,此处禁止了

–with-http_upstream_session_sticky_module=shared \

#thread_concurrency = 8

–with-http_addition_module=shared \

#默认512

–with-http_xslt_module=shared \

query_cache_size = 256M

–with-http_image_filter_module=shared \

query_cache_limit = 2M

–with-http_user_agent_module=shared \

query_cache_min_res_unit = 2k

–with-http_empty_gif_module=shared \

default-storage-engine = MyISAM

–with-http_browser_module=shared \

thread_stack = 192K

–with-google_perftools_module \

transaction_isolation = READ-COMMITTED

–with-http_map_module=shared \

#默认246

–with-http_userid_filter_module=shared \

tmp_table_size = 128M

–with-http_charset_filter_module=shared \

max_heap_table_size = 246M

–with-http_trim_filter_module=shared \

long_query_time = 3

–with-http_lua_module=shared \

log-slave-updates

–without-http_fastcgi_module \

log-bin = /data0/mysql/3306/binlog/binlog

–without-http_uwsgi_module \

binlog_cache_size = 4M

–without-http_scgi_module \

binlog_format = MIXED

–without-select_module \

max_binlog_cache_size = 8M

–without-poll_module \

max_binlog_size = 1G

–add-module=../nginx-hmux-module-1.3 \

relay-log-index = /data0/mysql/3306/relaylog/relaylog

–add-module=../nginx_tcp_proxy_module-0.4.5 \

relay-log-info-file = /data0/mysql/3306/relaylog/relaylog

–with-ld-opt=’-ltcmalloc_minimal’ \

relay-log = /data0/mysql/3306/relaylog/relaylog

–http-client-body-temp-path=/data/nginx_temp/nginx_client \

expire_logs_days = 30

–http-proxy-temp-path=/data/nginx_temp/nginx_proxy \

#默认256

–http-fastcgi-temp-path=/data/nginx_temp/nginx_fastcgi

key_buffer_size = 64M

 

read_buffer_size = 1M

# make && make install

read_rnd_buffer_size = 16M

 

#默认64

#———————————————————————————————————————————————

bulk_insert_buffer_size = 32M

7、Tengine缓存刷新模块

#默认128

# cd /data/software

myisam_sort_buffer_size = 64M

# tar xvzf ngx_cache_purge-2.0.tar.gz

myisam_max_sort_file_size = 10G

# ./dso_tool –add-module=/data/software/ngx_cache_purge-2.0

myisam_repair_threads = 1

 

myisam_recover

#———————————————————————————————————————————————

 

8、Tengine配置

interactive_timeout = 120

# rm -f /usr/local/nginx/html/*.html

wait_timeout = 120

# rm -f /usr/local/nginx/conf/*.default

 

# mkdir /usr/local/nginx/conf/SET

skip-name-resolve

 

#master-connect-retry = 10

# vim /usr/local/nginx/conf/nginx.conf

slave-skip-errors = 1032,1062,126,1114,1146,1048,1396

user nobody nogroup;

 

                                                                       
                                                                       
                                                                       
                 

#master-host     =   192.168.1.2

worker_processes auto;

#master-user     =   username

worker_cpu_affinity auto;

#master-password =   password

                                                                       
                                                                       
                                                                       
                 

#master-port     =  3306

error_log /data/logs/nginx/error.log crit;

 

pid /var/run/nginx.pid;

server-id = 1

google_perftools_profiles /var/tmp/tcmalloc;

 

                                                                       
                                                                       
                                                                       
                 

innodb_additional_mem_pool_size = 16M

worker_rlimit_nofile 65535;

innodb_buffer_pool_size = 512M

                                                                       
                                                                       
                                                                       
                 

innodb_data_file_path = ibdata1:256M:autoextend

dso {

innodb_file_io_threads = 4

    load ngx_http_rewrite_module.so;

innodb_thread_concurrency = 8

    load ngx_http_access_module.so;

innodb_flush_log_at_trx_commit = 2

    load ngx_http_concat_module.so;

innodb_log_buffer_size = 16M

    load ngx_http_limit_conn_module.so;

innodb_log_file_size = 128M

    load ngx_http_limit_req_module.so;

innodb_log_files_in_group = 3

    load ngx_http_sysguard_module.so;

innodb_max_dirty_pages_pct = 90

    load ngx_http_upstream_session_sticky_module.so;

innodb_lock_wait_timeout = 120

    load ngx_http_cache_purge_module.so;

innodb_file_per_table = 0

    load ngx_http_trim_filter_module.so;

#log-slow-queries = /data0/mysql/3306/slow.log

}

#long_query_time = 10

                                                                       
                                                                       
                                                                       
                 

[mysqldump]

events {

quick

    use epoll;

max_allowed_packet = 32M

    worker_connections 10240;

[myisamchk]

}

#默认256

                                                                       
                                                                       
                                                                       
                 

key_buffer_size = 128M

http {

#默认256

    server_tokens off;

sort_buffer_size = 128M

    server_tag off;

read_buffer = 2M

    autoindex off;

write_buffer = 2M

    access_log off;

[mysqlhotcopy]

    include mime.types;

interactive-timeout

    default_type application/octet-stream;

 

                                                                       
                                                                       
                                                                       
                   

以上配置文件仅作1.5G内存主机参考

    server_names_hash_bucket_size 128;

#生成授权表

    client_header_buffer_size 32k;

  1. ./scripts/mysql_install_db –basedir=/usr/local/webserver/mysql
    –datadir=/data0/mysql/3306/data –user=mysql #生成mysql系统数据库 

    large_client_header_buffers 4 32k;

#更改密码

    client_max_body_size 10m;

  1. /usr/local/webserver/mysql/bin/mysqladmin -u root password ‘12345678’  

    client_body_buffer_size 256k;

#开启mysql

                                                                       
                                                                       
                                                                       
                   

  1. /usr/local/webserver/mysql/bin/mysqld_safe & 

    sendfile on;

#通过命令行登录管理MySQL服务器(提示输入密码时直接回车,上处修改密码了的话这里要输入的):

    tcp_nopush on;

  1. /usr/local/webserver/mysql/bin/mysql -u root -p -S /tmp/mysql.sock 
  2. show databases; 
  3. exit; 

    keepalive_timeout 60;

#设置开机启动

    tcp_nodelay on;

  1. vi /etc/rc.d/rc.local 

                                                                       
                                                                       
                                                                       
                   

#加入

    gzip on;

  1. /usr/local/webserver/mysql/bin/mysqld_safe & 

    gzip_min_length 1k;

 

    gzip_buffers 4 16k;

可以暂时停止mysql

    gzip_http_version 1.0;

/usr/local/webserver/mysql/bin/mysqladmin -u root -p shutdown

    gzip_comp_level 2;

//mysql安装到此截止了,php请看下一章

    gzip_types text/plain application/x-javascript text/css
application/xml;

附:常用mysql命令:

    gzip_vary on;

(1)查看用户信息

                                                                       
                                                                       
                                                                       
                   

select user,host,password from mysql.user;

    proxy_connect_timeout 600;

(2)输入以下SQL语句,创建一个具有root权限的用户(admin)和密码(12345678):

    proxy_read_timeout 600;

GRANT ALL PRIVILEGES ON *.* TO ‘admin’@’localhost’ IDENTIFIED BY
‘12345678’;

    proxy_send_timeout 600;

GRANT ALL PRIVILEGES ON *.* TO ‘admin’@’127.0.0.1’ IDENTIFIED BY
‘12345678’;

    proxy_buffer_size 128k;

(3)创建数据库

    proxy_buffers 4 128k;

/usr/local/webserver/mysql/bin/mysql -u admin -p -S /tmp/mysql.sock

    proxy_busy_buffers_size 256k;

(注意密码是 12345678)

    proxy_temp_file_write_size 256k;

MySQL>create database blog;

    proxy_headers_hash_max_size 1024;

MySQL>flush privileges;

    proxy_headers_hash_bucket_size 128;

查询用户下的数据库

                                                                       
                                                                       
                                                                       
                   

SHOW DATABASES; 

    proxy_redirect off;

查询数据库编码:SHOW VARIABLES LIKE ‘character%’;

    proxy_set_header Host $host;

3、编译安装PHP(FastCGI模式)如果是64位操作系统,需要先进行下步工作

    proxy_set_header X-Real-IP $remote_addr;

 如果是64位操作系统,需要先进行下步工作

    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

 

                                                                       
                                                                       
                                                                       
                   

解决没有安装 patch 工具问题,

    proxy_temp_path /data/nginx_temp/nginx_temp;

解决imagemagick问题     

    proxy_cache_path /data/nginx_temp/nginx_cache levels=1:2
keys_zone=cache_one:2048m inactive=30m max_size=60g;

解决 configure: error: libjpeg.(a|so) not found  错误

                                                                       
                                                                       
                                                                       
                   

解决configure: error: libpng.(a|so) not found

    # backend web server address pool

解决  configure: error: Cannot find ldap libraries in /usr/lib
 错误,上面的错误也可用这种方法解决

    include SET/*.conf;

  1. yum install patch 
  2. yum -y install perl-CPAN 
  3. ln -s /usr/lib64/libjpeg.so /usr/lib/libjpeg.so 
  4. ln -s /usr/lib64/libpng.so /usr/lib/libpng.so 
  5. ln -s /usr/lib64/libldap.so /usr/lib/libldap.so 

                                                                       
                                                                       
                                                                       
                   

    log_format access ‘$remote_addr – $remote_user [$time_local]
“$request”‘

  1. tar zxvf php-5.3.14.tar.gz 
  2. cd php-5.3.14/ 
  3. ln -s /usr/local/webserver/mysql/lib/libmysqlclient.so /usr/lib64/ 
  4. ln -s /usr/local/webserver/mysql/lib/libmysqlclient.so.18 /usr/lib64/libmysqlclient.so.18 

        ‘$status $body_bytes_sent “$http_referer”‘

        ‘”$http_user_agent” $http_x_forwarded_for’;

32位系统应该是下面的,为免出错,可以全做

                                                                       
                                                                       
                                                                       
                   

  1. ln -s /usr/local/webserver/mysql/lib/libmysqlclient.so /usr/lib/ 
  2. ln -s /usr/local/webserver/mysql/lib/libmysqlclient.so.18 /usr/lib/libmysqlclient.so.18 

    # system resource overload protect

    server {

  1. ./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 –with-xmlrpc –enable-zip –enable-soap 

        sysguard on;

                                                                       
                                                                       
                                                                       
                       

  1. make ZEND_EXTRA_LIBS=’-liconv’ 
  2. make install 

        sysguard_load load=10.5 action=/loadlimit;

        sysguard_mem swapratio=20% action=/swaplimit;

  1. cp php.ini-production /usr/local/webserver/php/etc/php.ini 
  2. cd ../ 

        sysguard_mem free=100M action=/freelimit;

4、编译安装PHP5扩展模块

                                                                       
                                                                       
                                                                       
                       

  1. tar zxvf memcache-3.0.6.tgz 
  2. cd memcache-3.0.6/ 
  3. /usr/local/webserver/php/bin/phpize 
  4. ./configure –with-php-config=/usr/local/webserver/php/bin/php-config 
  5. make 
  6. make install 
  7. cd ../ 

        location /loadlimit {

            return 503;

  1. tar jxvf eaccelerator-0.9.6.1.tar.bz2 
  2. cd eaccelerator-0.9.6.1/ 
  3. /usr/local/webserver/php/bin/phpize 
  4. ./configure –enable-eaccelerator=shared –with-php-config=/usr/local/webserver/php/bin/php-config 
  5. make 
  6. make install 
  7. cd ../ 

        }

                                                                       
                                                                       
                                                                       
                       

  1. tar zxvf PDO_MYSQL-1.0.2.tgz 
  2. cd PDO_MYSQL-1.0.2/ 
  3. /usr/local/webserver/php/bin/phpize 
  4. ./configure –with-php-config=/usr/local/webserver/php/bin/php-config –with-pdo-mysql=/usr/local/webserver/mysql 
  5. make 
  6. make install 
  7. cd ../ 

        location /swaplimit {

            return 503;

  1. tar zxvf ImageMagick.tar.gz 
  2. cd ImageMagick-6.5.1-2/ 
  3. ./configure 
  4. make 
  5. make install 
  6. cd ../ 

        }

                                                                       
                                                                       
                                                                       
                       

  1. tar zxvf imagick-2.3.0.tgz 
  2. cd imagick-2.3.0/ 
  3. /usr/local/webserver/php/bin/phpize 
  4. ./configure –with-php-config=/usr/local/webserver/php/bin/php-config 
  5. make 
  6. make install 
  7. cd ../ 

        location /freelimit {

 5、修改php.ini

            return 503;

手工修改:查找/usr/local/webserver/php/etc/php.ini中的找到

        }

找到:;date.timezone =

    }

修改为:date.timezone = PRC #设置时区

                                                                       
                                                                       
                                                                       
                   

找到:expose_php = On

    # refuse request server by ipaddr

修改为:expose_php = OFF #禁止显示php版本的信息

    server {

找到:display_errors = On

        server_name _;

修改为:display_errors = OFF #关闭错误提示

        return 404;

 

    }

查找extension_dir = “./”

                                                                       
                                                                       
                                                                       
                   

修改为extension_dir =
“/usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20090626/”

    # web page cache and proxy setting

  并在此行后增加以下几行,然后保存:

    include /data/web/conf/*.conf;

  extension = “memcache.so”

}

  extension = “pdo_mysql.so”

# vim /usr/local/nginx/conf/SET/NORTH1.conf

  extension = “imagick.so”

upstream NORTH1_SERVER_PROXY {

查找

    consistent_hash $request_uri;

short_open_tag = Off

    server 192.168.1.101:80 weight=1;

修改

    server 192.168.1.102:80 weight=1;

short_open_tag = On

    server 192.168.1.103:80 weight=1;

 

    server 192.168.1.104:80 weight=1;

6、配置eAccelerator加速PHP:

    session_sticky;

  1. mkdir -p /usr/local/webserver/eaccelerator_cache 
  2. chmod 777  /usr/local/webserver/eaccelerator_cache 
  3. vi /usr/local/webserver/php/etc/php.ini 

                                                                       
                                                                       
                                                                       
               

 按shift+g键跳到配置文件的最末尾,加上以下配置信息:

    check interval=3000 rise=2 fall=5 timeout=1000 type=http;

[eaccelerator]

    check_http_send “GET / HTTP/1.0\r\n\r\n”;

zend_extension=”/usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20090626/eaccelerator.so”

    check_http_expect_alive http_2xx http_3xx;

eaccelerator.shm_size=”64″

}

eaccelerator.cache_dir=”/usr/local/webserver/eaccelerator_cache”

# mkdir -p /data/logs/web/test.qq.com

eaccelerator.enable=”1″

# vim /data/web/conf/test.qq.com.conf

eaccelerator.optimizer=”1″

server {

eaccelerator.check_mtime=”1″

    listen 80;

eaccelerator.debug=”0″

    server_name test.qq.com;

eaccelerator.filter=””

    index index.html index.htm index.php;

eaccelerator.shm_max=”0″

    root /data/nginx_temp/nginx_cache;

eaccelerator.shm_ttl=”3600″

    access_log on;

eaccelerator.shm_prune_period=”3600″

                                                                       
                                                                       
                             

eaccelerator.shm_only=”0″

    trim on;

eaccelerator.compress=”1″

    trim_jscss on;

eaccelerator.compress_level=”9″

                                                                       
                                                                       
                             

 7、创建www用户和组,以及供两个虚拟主机使用的目录:

    location / {

  1. /usr/sbin/groupadd www 
  2. /usr/sbin/useradd -g www www 
  3. mkdir -p /data0/htdocs/blog 
  4. chmod +w /data0/htdocs/blog 
  5. chown -R www:www /data0/htdocs/blog 
  6. mkdir -p /data0/htdocs/www 
  7. chmod +w /data0/htdocs/www 
  8. chown -R www:www /data0/htdocs/www 

        proxy_next_upstream http_500 http_502 http_503 http_504
error timeout invalid_header;

 创建php-fpm配置文件(php-fpm是为PHP打的一个FastCGI管理补丁,可以平滑变更php.ini配置而无需重启php-cgi)

        proxy_pass ;

  1. cp /usr/local/webserver/php/etc/php-fpm.conf.default
    /usr/local/webserver/php/etc/php-fpm.conf 

                                                                       
                                                                       
                                 

 修改

        #存在静态首页时,才需添加此规则

  1. vi /usr/local/webserver/php/etc/php-fpm.conf 

        if (-d $request_filename) {

php_flag[display_errors] = off ;不显示错误信息

            rewrite ^/(.*)$ break;

pm.max_children = 36 
;静态方式下开启的php-fpm进程数量,内存小于3g不要超过64

        }

pm.start_servers = 5 ;动态方式下的起始php-fpm进程数量。

    }

pm.min_spare_servers = 5 ;动态方式下的最小php-fpm进程数量

                                                                       
                                                                       
                             

pm.max_spare_servers = 36 ;动态方式下的最大php-fpm进程数量

    location ~ .*\. (php)?$ {

pm.max_requests = 512

        proxy_next_upstream http_500 http_502 http_503 http_504
error timeout invalid_header;

user = www

        proxy_pass ;

group = www 

    }

pm = dynamic ;进程数动态模式不清楚的不要修改

                                                                       
                                                                       
                             

;pm = static ;进程数静态模式不清楚的不要修改

    location ~ /purge(/.*) {

pid = run/php-fpm.pid  ;取消前面的分号

        allow 127.0.0.1;

 #检查语法是否正确

        allow 192.168.1.0/24;

  1. /usr/local/webserver/php/sbin/php-fpm -t 

        deny all;

 #出现NOTICE: configuration file /usr/local/php/etc/php-fpm.conf test
is successful 测试成功

        proxy_cache_purge cache_one $host$1$is_args$args;

启动fpm

    }

  1. /usr/local/webserver/php/sbin/php-fpm & 

                                                                       
                                                                       
                             

 相关命令

    location ~ .*\.(htm|html|js|css|gif|jpg|jpeg|png|bmp|ico|swf|flv)$
{

INT, TERM 立刻终止

        proxy_next_upstream http_500 http_502 http_503 http_504
error timeout invalid_header;

QUIT 平滑终止

        proxy_cache cache_one;

USR1 重新打开日志文件

        proxy_cache_valid 200 304 15m;

USR2 平滑重载所有worker进程并重新载入配置和二进制模块

        proxy_cache_valid 301 302 10m;

示例:

        proxy_cache_valid any 1m;

php-fpm 关闭:

        proxy_cache_key $host$uri$is_args$args;

kill -INT `cat /usr/local/php/var/run/php-fpm.pid`

        add_header Ten-webcache ‘$upstream_cache_status from $host’;

php-fpm 重启:

        proxy_pass ;

kill -USR2 `cat /usr/local/php/var/run/php-fpm.pid`

        expires 30m;

查看php-fpm进程数:

    }

ps aux | grep -c php-fpm

                                                                       
                                                                       
                             

三、安装Nginx 1.2.1

    location ~ /\.ht {

1、安装Nginx所需的pcre库:

        deny all;

  1. tar zxvf pcre-8.30.tar.gz 
  2. cd pcre-8.30/ 
  3. ./configure 
  4. make && make install 
  5. cd ../ 

    }

2、安装Nginx

                                                                       
                                                                       
                             

  1. tar zxvf nginx-1.2.1.tar.gz 
  2. cd nginx-1.2.1/ 
  3. ./configure –user=www –group=www –prefix=/usr/local/webserver/nginx –with-http_stub_status_module –with-http_ssl_module –with-pcre=/data0/soft/pcre-8.30 
  4. make && make install 
  5. cd ../ 

    access_log /data/logs/web/test.qq.com/access.log access;

3、创建Nginx日志目录

}

  1. mkdir -p /data0/logs 
  2. chmod +w /data0/logs 
  3. chown -R www:www /data0/logs 

#———————————————————————————————————————————————

 

9、Tengine启动脚本

 

# vim /etc/init.d/nginx

4、创建Nginx配置文件

#!/bin/sh

  ①、在/usr/local/webserver/nginx/conf/目录中创建nginx.conf文件:

#

  1. rm -f /usr/local/webserver/nginx/conf/nginx.conf 
  2. vi /usr/local/webserver/nginx/conf/nginx.conf 

# nginx – this script start and stop the nginx daemon

 

#

输入以下内容:

# chkconfig: 2345 55 25

user  www www;

# description: Startup script for nginx

worker_processes 8;

# processname: nginx

error_log  /data0/logs/nginx_error.log  crit;

# config: /usr/local/nginx/conf/nginx.conf

pid        /usr/local/webserver/nginx/nginx.pid;

# pidfile: /var/run/nginx.pid

#Specifies the value for maximum file descriptors that can be opened by
this process. 

#

worker_rlimit_nofile 65535;

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

events 

                                                                       
                                                                       
                                                                       

{

DAEMON=/usr/local/nginx/sbin/nginx

  use epoll;

CONFIGFILE=/usr/local/nginx/conf/nginx.conf

  worker_connections 65535;

PIDFILE=/var/run/nginx.pid

}

SCRIPTNAME=/etc/init.d/nginx

http 

LOCKFILE=/var/lock/nginx.lock

{

                                                                       
                                                                       
                                                                       

  include       mime.types;

set -e

  default_type  application/octet-stream;

[ -x “$DAEMON” ] || exit 0

  server_tokens off;

                                                                       
                                                                       
                                                                       

  #charset  gb2312;  

start() {

  server_names_hash_bucket_size 128;

    echo “Startting Nginx……”

  client_header_buffer_size 32k;

    [ -x $DAEMON ] || exit 5

  large_client_header_buffers 4 32k;

    [ -f $CONFIGFILE ] || exit 6

  client_max_body_size 8m;

    $DAEMON -c $CONFIGFILE || echo -n “Nginx already running!”

  sendfile on;

    [ $? -eq 0 ] && touch $LOCKFILE

  tcp_nopush     on;

}

  keepalive_timeout 60;

                                                                       
                                                                       
                                                                       

  tcp_nodelay on;

stop() {

  fastcgi_connect_timeout 300;

    echo “Stopping Nginx……”

  fastcgi_send_timeout 300;

    MPID=`ps aux | grep nginx | awk ‘/master/{print $2}’`

  fastcgi_read_timeout 300;

    if [ “${MPID}X” != “X” ]; then

  fastcgi_buffer_size 64k;

        kill -QUIT $MPID

  fastcgi_buffers 4 64k;

        [ $? -eq 0 ] && rm -f $LOCKFILE

  fastcgi_busy_buffers_size 128k;

    else

  fastcgi_temp_file_write_size 128k;

        echo “Nginx server is not running!”

  gzip on;

    fi

  gzip_min_length  1k;

}

  gzip_buffers     4 16k;

                                                                       
                                                                       
                                                                       

  gzip_http_version 1.0;

reload() {

  gzip_comp_level 2;

    echo “Reloading Nginx……”

  gzip_types       text/plain application/x-javascript text/css
application/xml;

    MPID=`ps aux | grep nginx | awk ‘/master/{print $2}’`

  gzip_vary on;

    if [ “${MPID}X” != “X” ]; then

  #limit_zone  crawler  $binary_remote_addr  10m;

        kill -HUP $MPID

  server

    else

  {

        echo “Nginx can’t reload!”

    listen       80;

    fi

    server_name  42.121.83.101;

}

    index index.html index.htm index.php;

                                                                       
                                                                       
                                                                       

    root  /data0/htdocs/blog;

case “$1” in

    #limit_conn   crawler  20;                        

start)

    location ~ .*\.(php|php5)?$

    start

    {      

    ;;

      #fastcgi_pass  unix:/tmp/php-cgi.sock;

                                                                       
                                                                       
                                                                       

      fastcgi_pass  127.0.0.1:9000;

stop)

      fastcgi_index index.php;

    stop

      include fcgi.conf;

    ;;

    }

                                                                       
                                                                       
                                                                       

    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$

reload)

    {

    reload

      expires      30d;

    ;;

    }

                                                                       
                                                                       
                                                                       

    location ~ .*\.(js|css)?$

restart)

    {

    stop

      expires      1h;

    sleep 1

    }    

    start

      }

    ;;

    log_format  access  ‘$remote_addr – $remote_user [$time_local]
“$request” ‘

                                                                       
                                                                       
                                                                       

              ‘$status $body_bytes_sent “$http_referer” ‘

*)

              ‘”$http_user_agent” $http_x_forwarded_for’;

    echo “Usage: $SCRIPTNAME {start|stop|reload|restart}”

    access_log  /data0/logs/access.log  access;

    exit 3

  server

    ;;

  {

esac

    listen       80;

                                                                       
                                                                       
                                                                       

    server_name  www.s135.com;

exit 0

    index index.html index.htm index.php;

# chmod +x /etc/init.d/nginx

    root  /data0/htdocs/www;

# chkconfig –add nginx

 

# service nginx start

    location ~ .*\.(php|php5)?$

 

    {      

#———————————————————————————————————————————————

      #fastcgi_pass  unix:/tmp/php-cgi.sock;

10、Tengine健康检测

      fastcgi_pass  127.0.0.1:9000;

# mkdir -p /data/web/data/mycheckweb.act.qq.com

      fastcgi_index index.php;

# echo “OK” > /data/web/data/mycheckweb.act.qq.com/index.html

      include fcgi.conf;

# echo “你的内网IP    mycheckweb.act.qq.com” >> /etc/hosts

    }

# touch /var/lock/check_web.lock

  }

 

    log_format  wwwlogs  ‘$remote_addr – $remote_user
[$time_local] “$request” ‘

#vim /data/web/conf/checkweb_for_nginx.conf

               ‘$status $body_bytes_sent “$http_referer” ‘

server {

               ‘”$http_user_agent” $http_x_forwarded_for’;

    listen 80;

    access_log  /data0/logs/wwwlogs.log  wwwlogs;

    server_name mycheckweb.act.qq.com;

  server

    access_log off;

  {

                                                                       
                                                                       
                                                                     

    listen  80;

    location / {

    server_name  status.blog.s135.com;

        root /data/web/data/mycheckweb.act.qq.com;

 

        index index.html;

    location / {

    }

    stub_status on;

                                                                       
                                                                       
                                                                     

    access_log   off;

    location ~ health_status {

    }

        check_status;

  }

        allow 127.0.0.1;

}

        allow 192.168.1.0/24;

 

        deny all;

②、在/usr/local/webserver/nginx/conf/目录中创建fcgi.conf文件:

    }

  1. vi /usr/local/webserver/nginx/conf/fcgi.conf 

}

 输入以下内容:

# vim /usr/local/nginx/sbin/check_web.sh

fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;

#!/bin/bash

fastcgi_param  SERVER_SOFTWARE    nginx;

PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin:/usr/local/sbin

fastcgi_param  QUERY_STRING       $query_string;

                                                                       
                                                                       
                                                           

fastcgi_param  REQUEST_METHOD     $request_method;

retval=`ping -c 3 mycheckweb.act.qq.com | awk ‘/received/ {print $4}’`

fastcgi_param  CONTENT_TYPE       $content_type;

[[ ${retval} -eq 0 ]] && exit 1

fastcgi_param  CONTENT_LENGTH     $content_length;

                                                                       
                                                                       
                                                           

fastcgi_param  SCRIPT_FILENAME  
 $document_root$fastcgi_script_name;

retval=`curl -I -s “” | grep “200 OK”`

fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;

if [[ “${retval}x” = “x” ]]; then

fastcgi_param  REQUEST_URI        $request_uri;

    [[ -e /usr/local/nginx ]] && /sbin/service nginx restart
>/dev/null 2>&1

fastcgi_param  DOCUMENT_URI       $document_uri;

fi

fastcgi_param  DOCUMENT_ROOT      $document_root;

#chmod +x /usr/local/nginx/sbin/check_web.sh

fastcgi_param  SERVER_PROTOCOL    $server_protocol;

# crontab -e

fastcgi_param  REMOTE_ADDR        $remote_addr;

*/5 * * * * (flock –timeout=0 /var/lock/check_web.lock
/usr/local/nginx/sbin/check_web.sh >/dev/null 2>&1)

fastcgi_param  REMOTE_PORT        $remote_port;

 

fastcgi_param  SERVER_ADDR        $server_addr;

#———————————————————————————————————————————————

fastcgi_param  SERVER_PORT        $server_port;

11、Tengine访问日志切割与清理

fastcgi_param  SERVER_NAME        $server_name;

# vim /usr/local/nginx/sbin/cut_nginx_log.sh

# PHP only, required if PHP was built with –enable-force-cgi-redirect

#!/bin/bash

fastcgi_param  REDIRECT_STATUS    200;

PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin:/usr/local/sbin

 

                                                                       
                                                                       
                                                       

 5、启动Nginx

## the nginx access logs base path

  1. /usr/local/webserver/nginx/sbin/nginx & 

WEBLOG_PATH=”/data/logs/web”

 #检测配置文件

                                                                       
                                                                       
                                                       

  1. /usr/local/webserver/nginx/sbin/nginx -t 

retval=`ps aux | grep ngin[x] | wc -l`

 

if [ ${retval} -eq 0 ]; then

#提示表示成功

    echo “The daemon process for nginx has no found.”

#nginx: the configuration file
/usr/local/webserver/nginx/conf/nginx.conf syntax is ok

    exit 1

#nginx: configuration file /usr/local/webserver/nginx/conf/nginx.conf
test is successful

fi

 

                                                                       
                                                                       
                                                       

相关命令

## avoid errors for USR1 signal, and modify 750 privilege

#开启Nginx

chown -R nobody:nogroup /data/logs/{nginx,web}

/usr/local/webserver/nginx/sbin/nginx &

chmod -R 750 /data/logs/{nginx,web}

#平滑重启Nginx

                                                                       
                                                                       
                                                       

/usr/local/webserver/nginx/sbin/nginx -s reload

## cut nginx access logs

 

for LOGFILE in `find ${WEBLOG_PATH} -type f -name access.log`

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

do

  1. vi /etc/rc.d/rc.local  

    LOGPATH=`dirname ${LOGFILE}`

在末尾增加以下内容:

    mv ${LOGPATH}/access.log ${LOGPATH}/access_$(date -d “yesterday”
+”%Y-%m-%d”).log

  1. /usr/local/webserver/php/sbin/php-fpm & 
  2. /usr/local/webserver/nginx/sbin/nginx &

done

五、优化Linux内核参数

                                                                       
                                                                       
                                                       

  1. vi /etc/sysctl.conf 

kill -USR1 `ps aux | grep nginx | awk ‘/master/{print $2}’`

在末尾增加以下内容:

                                                                       
                                                                       
                                                       

# Add

## and then modify original privileges

net.ipv4.tcp_max_syn_backlog = 65536

chown -R nobody:nogroup /data/logs/{nginx,web}

net.core.netdev_max_backlog =  32768

chmod -R 640 /data/logs/{nginx,web}

net.core.somaxconn = 32768

                                                                       
                                                                       
                                                       

net.core.wmem_default = 8388608

## clear 10 days ago’s nginx access logs

net.core.rmem_default = 8388608

LOGFILE=access_$(date -d “10 days ago” +”%Y-%m-%d”).log

net.core.rmem_max = 16777216

find ${WEBLOG_PATH} -type f -name ${LOGFILE} -exec rm -f {} \;

net.core.wmem_max = 16777216

# crontab -e

net.ipv4.tcp_timestamps = 0

00 00 * * * /bin/bash /usr/local/nginx/sbin/cut_nginx_log.sh
>/dev/null 2>&1

net.ipv4.tcp_synack_retries = 2

 

net.ipv4.tcp_syn_retries = 2

#———————————————————————————————————————————————

net.ipv4.tcp_tw_recycle = 1

12、系统优化

#net.ipv4.tcp_tw_len = 1

##网络参数设置

net.ipv4.tcp_tw_reuse = 1

# vim /etc/sysctl.conf

net.ipv4.tcp_mem = 94500000 915000000 927000000

net.ipv4.tcp_syncookies = 1

net.ipv4.tcp_max_orphans = 3276800

net.ipv4.tcp_tw_reuse = 1

#net.ipv4.tcp_fin_timeout = 30

net.ipv4.tcp_tw_recycle = 1

#net.ipv4.tcp_keepalive_time = 120

net.ipv4.tcp_fin_timeout = 30

net.ipv4.ip_local_port_range = 1024  65535

net.ipv4.tcp_keepalive_time = 1200

 使配置立即生效:

                                                                       
                                                                       
                                                 

  1. /sbin/sysctl -p 

net.ipv4.ip_local_port_range = 1024 65000

 六、在不停止Nginx服务的情况下平滑变更Nginx配置

net.ipv4.tcp_max_syn_backlog = 8192

  1、修改/usr/local/webserver/nginx/conf/nginx.conf配置文件后,请执行以下命令检查配置文件是否正确:

net.ipv4.tcp_max_tw_buckets = 80000

/usr/local/webserver/nginx/sbin/nginx -t

                                                                       
                                                                       
                                                 

  如果屏幕显示以下两行信息,说明配置文件正确:

net.core.somaxconn = 32768

  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

net.ipv4.tcp_keepalive_probes = 5

 

net.ipv4.tcp_keepalive_intvl = 20

  2、平滑重启:

                                                                       
                                                                       
                                                 

  ①、对于Nginx
0.8.x版本,现在平滑重启Nginx配置非常简单,执行以下命令即可:

net.core.wmem_default = 8388608

/usr/local/webserver/nginx/sbin/nginx -s reload

net.core.rmem_default = 8388608

 

net.core.rmem_max = 16777216

  ②、对于Nginx
0.8.x之前的版本,平滑重启稍微麻烦一些,按照以下步骤进行即可。输入以下命令

net.core.wmem_max = 16777216

 

                                                                       
                                                                       
                                                 

查看Nginx主进程号:

net.ipv4.tcp_rmem = 4096 87380 16777216

ps -ef | grep “nginx: master process” | grep -v “grep” | awk -F ‘ ‘
‘{print $2}’

net.ipv4.tcp_wmem = 4096 65536 16777216

  屏幕显示的即为Nginx主进程号,例如:

                                                                       
                                                                       
                                                 

  6302

net.core.netdev_max_backlog = 32768

  这时,执行以下命令即可使修改过的Nginx配置文件生效:

                                                                       
                                                                       
                                                 

kill -HUP 6302

net.ipv4.tcp_timestamps = 0

  或者无需这么麻烦,找到Nginx的Pid文件:

net.ipv4.tcp_synack_retries = 2

kill -HUP `cat /usr/local/webserver/nginx/nginx.pid`

net.ipv4.tcp_syn_retries = 2

七、编写每天定时切割Nginx日志的脚本

net.ipv4.tcp_retries2 = 5

 1、创建脚本

                                                                       
                                                                       
                                                 

  1. vi /usr/local/webserver/nginx/sbin/cut_nginx_log.sh 

net.ipv4.tcp_mem = 41943040 73400320 94371840

 输入以下内容:

net.ipv4.tcp_max_orphans = 3276800

#!/bin/bash

fs.file-max = 1300000

# This script run at 00:00

# sysctl -p

# The Nginx logs path

 

logs_path=”/usr/local/webserver/nginx/logs/”mkdir -p
${logs_path}$(date -d “yesterday” +”%Y”)/$(date -d “yesterday”
+”%m”)/mv ${logs_path}access.log ${logs_path}$(date -d “yesterday”
+”%Y”)/$(date -d “yesterday” +”%m”)/access_$(date -d “yesterday”
+”%Y%m%d”).log

 

kill -USR1 `cat /usr/local/webserver/nginx/nginx.pid`

## 文件描述符设置

 2、设置crontab,每天凌晨00:00切割nginx访问日志

# echo “ulimit -SHn 65535” >> /etc/profile

  1. crontab -e 

# source /etc/profile

 

#———————————————————————————————————————————————

输入以下内容:

13、测试

00 00 * * * /bin/bash
 /usr/local/webserver/nginx/sbin/cut_nginx_log.sh

本地HOSTS绑定访问

查看你的定时任务是否加进去了。

  1. crontab -l 

相关阅读


CentOS
6.4制作Tengine的rpm包
http://www.linuxidc.com/Linux/2013-12/93786.htm

Tengine动态开启模块试用
http://www.linuxidc.com/Linux/2012-12/75849.htm

CentOS 6.3用ICC编译PHP5.4.8+Percona5.5.27+Tengine1.4.1
http://www.linuxidc.com/Linux/2012-12/76636.htm

基于淘宝Tengine和Scribe的WEB日志收集方案
http://www.linuxidc.com/Linux/2012-02/52997.htm

基于Tengine部署LNMP环境
http://www.linuxidc.com/Linux/2014-01/95148.htm

Tengine
的详细介绍
:请点这里
Tengine
的下载地址
:请点这里

本文永久更新链接地址:http://www.linuxidc.com/Linux/2015-09/123058.htm

ca88手机登录 2

发表评论

电子邮件地址不会被公开。 必填项已用*标注