ZBlogger技术交流中心

 找回密码
 注册

QQ登录

只需一步,快速开始

Z-BlogPHP 最新开发动态 下载最新版:Z-BlogPHP 1.5 Zero Wordpress转换 - Emlog转换 - 找回密码

Z-BlogASP 最新开发动态 下载最新版:Z-Blog 2.2 Prism Build 140101 转换到Z-BlogPHP - 1.8升级指南 - 找回密码

DBS官方主机/域名/VPS 推荐:Z-BlogPHP主机-Z-BlogASP主机 联系值班客服(每天9:00-21:30)

搜索
【聚划算】宅男最新神器!你懂的!环球外贸论坛
查看: 3659|回复: 0

CentOS+Nginx+PHP+Mysql环境配置(四)

[复制链接]
发表于 2014-8-21 04:53:28 | 显示全部楼层 |阅读模式
[启动php-cgi进程,监听127.0.0.1的9000端口]
  1. # ulimit -SHn 51200
  2. # /usr/local/webserver/php/sbin/php-fpm start
复制代码

[安装Nginx所需的pcre库]
  1. # tar zxvf pcre-7.7.tar.gz
  2. # cd pcre-7.7/
  3. # ./configure --enable-utf8 --enable-unicode-properties
  4. # make && make install
  5. # cd ../
复制代码

[安装Nginx 0.7.19]
  1. # tar zxvf nginx-0.7.19.tar.gz
  2. # cd nginx-0.7.19/
  3. # ./configure --user=www --group=www --prefix=/usr/local/webserver/nginx --with-http_stub_status_module --with-http_ssl_module --with-openssl = /home /usb/ webserver-linux/webserver/centos_lib/openssl-1.0.0d
  4. # make
  5. # make install
  6. # cd ../
复制代码

[创建Nginx日志目录]
  1. # mkdir -p /logs
  2. # chmod +w /logs
  3. # chown -R www:www /logs
复制代码

[创建nginx.conf配置文件]


  1.     # rm -f /usr/local/webserver/nginx/conf/nginx.conf
  2.     # vi /usr/local/webserver/nginx/conf/nginx.conf
  3.     输入以下内容(请注意以下内容中"↑"标志后的内容不能出现在实际文件中):

  4.     user www www;

  5.     worker_processes 8;
  6.     ↑ Nginx每个进程耗费10M~12M内存

  7.     error_log /logs/nginx_error.log warn;

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

  9.     #Specifies the value for maximum file descriptors that can be opened by this process.
  10.     worker_rlimit_nofile 51200;

  11.     events
  12.     {
  13.     use epoll;
  14.     worker_connections 51200;
  15.     }

  16.     http
  17.     {
  18.     include       mime.types;
  19.     default_type application/octet-stream;

  20.     #charset gb2312;

  21.     server_names_hash_bucket_size 128;
  22.     client_header_buffer_size 32k;
  23.     large_client_header_buffers 4 32k;

  24.     sendfile on;
  25.     tcp_nopush     on;

  26.     keepalive_timeout 60;

  27.     tcp_nodelay on;

  28.     fastcgi_connect_timeout 300;
  29.     fastcgi_send_timeout 300;
  30.     fastcgi_read_timeout 300;
  31.     fastcgi_buffer_size 64k;
  32.     fastcgi_buffers 4 64k;
  33.     fastcgi_busy_buffers_size 128k;
  34.     fastcgi_temp_file_write_size 128k;

  35.     gzip on;
  36.     gzip_min_length 1k;
  37.     gzip_buffers     4 16k;
  38.     gzip_http_version 1.0;
  39.     gzip_comp_level 2;
  40.     gzip_types       text/plain application/x-javascript text/css application/xml;
  41.     gzip_vary on;

  42.     limit_zone crash $binary_remote_addr 10m;
  43.     ↑ 定义一个叫“crash”的记录区,总容量为 10M,以变量 $binary_remote_addr 作为会话的判断基准(即一个地址一个会话),当区的大小为 1M 的时候,大约可以记录 32000 个会话信息(一个会话占用 32 bytes)

  44.     server
  45.     {
  46.     listen       80;
  47.     server_name 222.17.177.205;
  48.     index index.html index.htm index.php;
  49.     root /wwwroot;

  50.     ########

  51.     #下面的配置是为了支持qeephp的路由重写功能

  52.     if (-d $request_filename){

  53.                     rewrite ^/(.*)([^/])$ http://$host/$1$2/ permanent;

  54.                     }

  55.                 if (-f $request_filename/index.html){

  56.                     rewrite (.*) $1/index.html break;

  57.                 }

  58.                 if (-f $request_filename/index.php){

  59.                     rewrite (.*) $1/index.php;

  60.                 }

  61.                 if (!-f $request_filename){

  62.                     rewrite (.*) /index.php;

  63.                 }
  64.     #######

  65.     #limit_conn   crash 5;
  66.     ↑ *此处已被#注释掉了,即不起作用*定义整个网站的限制。此处为在"crash"记录区中,以变量 $binary_remote_addr 作为会话的判断基准(即一个地址一个会话),限制网站全局目录,一个会话只能进行5个连接(即一个IP只能发起5个连接,多过5个,一律503错误)

  67.     location ~ .*\.(php|php5)?$
  68.     {
  69.     #fastcgi_pass unix:/tmp/php-cgi.sock;
  70.     fastcgi_pass 127.0.0.1:9000;
  71.     fastcgi_index index.php;
  72.     include fcgi.conf;
  73.     }

  74.     location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
  75.     {
  76.     expires      30d;
  77.     }

  78.     location ~ .*\.(js|css)?$
  79.     {
  80.     expires      1h;
  81.     }

  82.     location /resource/ {
  83.     limit_conn   crash 2;
  84.     ↑ 定义resource目录的限制。此处为在"crash"记录区中,以变量 $binary_remote_addr 作为会话的判断基准(即一个地址一个会话),限制resource目录,一个会话只能进行2个连接(即一个IP只能发起2个连接,多过2个,一律503错 误)
  85.     }

  86.     log_format access '$remote_addr - $remote_user [$time_local] "$request" '
  87.     '$status $body_bytes_sent "$http_referer" '
  88.     '"$http_user_agent" $http_x_forwarded_for';
  89.     access_log /logs/access.log access;
  90.     sendfile on;
  91.     tcp_nopush on;
  92.     client_max_body_size 50m;
  93.     ↑ 网站程序中允许上传的最大size,这里设置成50M,这里只是nginx的限制,PHP本身限制2M
  94.     }
  95.     }
复制代码

[创建fcgi.conf配置文件]


  1.     # vi /usr/local/webserver/nginx/conf/fcgi.conf
  2.     输入以下内容:

  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;
复制代码

[启动Nginx]
  1. # ulimit -SHn 51200
  2. # /usr/local/webserver/nginx/sbin/nginx
复制代码

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


  1.     修改/usr/local/webserver/nginx/conf/nginx.conf配置文件后,请执行以下命令检查配置文件是否正确:
  2.     # /usr/local/webserver/nginx/sbin/nginx -t
  3.     如果测试ok successfully,则可以使用下面命令重启Nginx
  4.     (第1种)# pkill nginx
  5.     # /usr/local/webserver/nginx/conf/nginx.conf
  6.     (第2种)# kill -HUP `cat /usr/local/webserver/nginx/nginx.pid`
  7.     # /usr/local/webserver/nginx/conf/nginx.conf
  8.     (第3种)# ps -ef | grep "nginx: master process" | grep -v "grep" | awk -F ' ' '{print $2}'
  9.     # kill -HUP 数字
  10.     ↑ 此数字来自于上一条命令执行后屏幕输出的数字,即Nginx的pid进程号
  11.     # /usr/local/webserver/nginx/conf/nginx.conf

  12.     如果屏幕显示以下两行信息,说明配置文件正确:
  13.     the configuration file /usr/local/webserver/nginx/conf/nginx.conf syntax is ok
  14.     the configuration file /usr/local/webserver/nginx/conf/nginx.conf was tested successfully
复制代码

[配置开机自动启动Nginx + PHP + MySQL]
  1. # vi /etc/rc.local
  2. 在末尾增加以下内容:
  3. /bin/sh /usr/local/webserver/mysql/bin/mysqld_safe --defaults-file=/usr/local/webserver/mysql/my.cnf &
  4. ulimit -SHn 51200
  5. /usr/local/webserver/php/sbin/php-fpm start
  6. /usr/local/webserver/nginx/sbin/nginx
复制代码

[优化Linux内核参数]


  1.     # vi /etc/sysctl.conf
  2.     在文件末尾增加以下内容:

  3.     net.ipv4.tcp_fin_timeout = 30
  4.     net.ipv4.tcp_keepalive_time = 300
  5.     net.ipv4.tcp_syncookies = 1
  6.     net.ipv4.tcp_tw_reuse = 1
  7.     net.ipv4.tcp_tw_recycle = 1
  8.     net.ipv4.ip_local_port_range = 5000    65000

  9.     # /sbin/sysctl -p
  10.     ↑ 使配置立即生效
复制代码

[编写每天定时切割Nginx日志的脚本]
  1. # vi /usr/local/webserver/nginx/sbin/cut_nginx_log.sh
  2. ↑ 创建切割脚本

  3. 输入以下内容:
  4. #!/bin/bash
  5. # This script run at 00:00

  6. # The Nginx logs path
  7. logs_path="../logs/"

  8. mkdir -p ${logs_path}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/
  9. mv ${logs_path}access.log ${logs_path}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/nginx_access_$(date -d "yesterday" +"%Y%m%d").log
  10. mv ${logs_path}error.log ${logs_path}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/nginx_error_$(date -d "yesterday" +"%Y%m%d").log
  11. kill -USR1 `cat /usr/local/webserver/nginx/logs/nginx.pid`

  12. #chmod 755 cut_nginx_log.sh

  13. #./cut_nginx_log.sh   //运行完之后在logs目录下就会出现切割文件及存放目录
复制代码

[设置切割日志的计划任务]


  1.     # crontab -e
  2.     ↑ 编辑计划任务列表

  3.     输入以下内容:
  4.     00 00 * * * /bin/bash /usr/local/webserver/nginx/sbin/cut_nginx_log.sh
  5.     ↑ 每天凌晨00:00切割nginx访问日志
复制代码

回复

使用道具 举报

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

本版积分规则

Archiver|手机版|ZBlogger技术交流中心 ( 鄂ICP备11007414号 鄂公网安备 42060602000101号

GMT+8, 2017-3-30 05:06 , Processed in 0.240422 second(s), 19 queries , Apcu On.

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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