• Nginx安装、配置、优化

    普通类
    • 支持
    • 批判
    • 提问
    • 解释
    • 补充
    • 删除
    • 一、安装步骤

    1、安装linux操作系统(略)
    2、如果要装第三方模块,那么要装第三方库的支持
    GCC(GNU Compiler Collection)编译器及相关工具:yum –y install gcc gcc-c++ autoconf automake
    gzip模块需要zlib库,rewrite模块需要pcre库,ssl功能需要openssl库等。yum –y install zlib zlib-devel openssl openssl-devel pcre pcre-devel
    3、Nginx的安装
    去http://nginx.org/en/download.html 下载相关安装文件并拷贝到linux服务器的根目录下
    安装命令如下:
    tar zxvf nginx-0.x.xx.tar.gz
    cd nginx-0.x.xx
    ./configure
    make
    sudo make install
    按照上面的命令,Nginx被默认安装到/usr/local/nginx目录下,您可以通过./configure –help命令查看Nginx可选择的编译选项。
    4、Nginx的基本命令
    启动:/usr/local/nginx/sbin/nginx –c /usr/local/nginx/conf/nginx.conf
    停止:
    通过发送系统信号给Nginx主进程的方式来停止,查找Nginx主进程号:ps –ef | grep nginx,备注信息是”master process”的才是主进程。如果在nginx.conf配置文件中指定了pid文件存放的路径(如:pid /usr/local/nginx/logs/nginx.pid),该文件存放的就是Nginx当前的主进程号。如果没有指定pid文件存放的路径,nginx.pid文件默认存放在Nginx安装目录的logs目录下。可以直接通过以下命令来完成平滑重启,省下寻找Nginx主进程号的步骤:
    Kill – 信号类型 ‘/usr/local/nginx/logs/nginx.pid’
    (1) 从容停止Nginx:kill –QUIT Nginx主进程号
    或 kill –QUIT ‘/usr/local/nginx/logs/nginx.pid’
    (2) 快速停止Nginx:kill – TERM Nginx主进程号 或 kill –INT Nginx主进程号 Nginx主进程号也可用pid文件路径代替
    (3) 强制停止所有Nginx进程:pkill -9 nginx
    Nginx的平滑重启:如果改变了Nginx的配置文件(nginx.conf),想重启Nginx,同样可以通过发送系统信号给Nginx主进程的方式来进行。不过,重启前要确认Nginx的配置文件的语法是否正确,否则Nginx将不会加载新的配置文件。判断配置文件是否正确:
    /user/local/nginx/sbin/nginx –t –c /user/local/nginx/conf/nginx.conf
    如果配置文件不正确会提示第几行出错,如果正确就可以平滑重启了:
    Kill –HUP Nginx主进程号 或者 kill –HUP ‘/usr/local/nginx/logs/nginx.pid’
    Nginx的信号控制
    TERM,INT 快速关闭
    QUIT 从容关闭
    HUP 平滑重启,重新加载配置文件
    USR1 重新打开日志文件,在切割日志时用途较大
    USER2 平滑升级可执行程序
    WINCH 从容关闭工作进程
    Nginx的平滑升级:略

    • 二、Nginx的基本配置与优化

    /usr/local/nginx/nginx.conf
    # 使用的用户和组
    user www www;
    # 指定工作衍生进程数(一般等于CPU的总核数或总核数的两倍,例如两个四核CPU,则总核数为8)
    worker_processes 8;
    # 指定错误日志存放的路径,错误日志记录级别可选项为:[ debug | info | notice | warn | error | crit ]
    error_log /data1/logs/nginx_error.log crit;
    # 指定 pid 存放的路径
    pid /usr/local/nginx/nginx.pid;

    # 指定文件描述符数量
    worker_rlimit_nofile 51200;

    events
    {
    # 使用的网络I/O模型,Linux系统推荐采用epoll模型,FreeBSD系统推荐采用kqueue模型
    use epoll;

    # 允许的连接数
    worker_connections 51200;
    }

    http
    {
    include mime.types;
    default_type application/octet-stream;
    # 设置使用的字符集,如果一个网站有多种字符集,请不要随便设置,应让程序员在HTML代码中通过Meta标签设置
    #charset gb2312;

    server_names_hash_bucket_size 128;
    client_header_buffer_size 32k;
    large_client_header_buffers 4 32k;

    # 设置客户端能够上传的文件大小
    client_max_body_size 8m;

    sendfile on;
    tcp_nopush on;

    keepalive_timeout 60;

    tcp_nodelay on;

    fastcgi_connect_timeout 300;
    fastcgi_send_timeout 300;
    fastcgi_read_timeout 300;
    fastcgi_buffer_size 64k;
    fastcgi_buffers 4 64k;
    fastcgi_busy_buffers_size 128k;
    fastcgi_temp_file_write_size 128k;
    # 开启gzip压缩
    gzip on;
    gzip_min_length 1k;
    gzip_buffers 4 16k;
    gzip_http_version 1.1;
    gzip_comp_level 2;
    gzip_types text/plain application/x-javascript text/css application/xml;
    gzip_vary on;

    #limit_zone crawler $binary_remote_addr 10m;

    server
    {
    listen 80;
    server_name www.yourdomain.com yourdomain.com;
    index index.html index.htm index.php;
    root /data0/htdocs;

    #limit_conn crawler 20;

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

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

    log_format access '$remote_addr - $remote_user [$time_local] "$request" '
    '$status $body_bytes_sent "$http_referer" '
    '"$http_user_agent" $http_x_forwarded_for';
    access_log /data1/logs/access.log access;

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

    1、创建脚本/usr/local/nginx/sbin/cut_nginx_log.sh
    vi /usr/local/nginx/sbin/cut_nginx_log.sh

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

    # The Nginx logs path
    logs_path="/usr/local/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/nginx/nginx.pid`

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

    输入以下内容:
    引用
    00 00 * * * /bin/bash /usr/local/nginx/sbin/cut_nginx_log.sh

    • 标签:
    • 进程
    • 配置
    • nginx
    • usr
    • 优化
    • 学习元
    • local
  • 加入的知识群:
    学习元评论 (0条)

    评论为空
    聪明如你,不妨在这 发表你的看法与心得 ~



    登录之后可以发表学习元评论
      
暂无内容~~
顶部