zoukankan      html  css  js  c++  java
  • nginx 编译安装与配置使用

    1、安装编译环境

    yum -y install gcc gcc-c++

    2、安装pcre软件包(使nginx支持http rewrite模块)

    yum install -y pcre pcre-devel

    3、安装openssl-devel(使nginx支持ssl)

    yum install -y openssl openssl-devel

    4、安装zlib

    yum install -y zlib zlib-devel

    5、创建用户nginx

    useradd nginx

    passwd nginx

    6、安装nginx

    [root@localhost ~]# wget http://nginx.org/download/nginx-1.16.0.tar.gz
    [root@localhost ~]# tar xzf nginx-1.16.0.tar.gz -C /usr/local/
    [root@localhost ~]# cd nginx-1.16.0
    [root@localhost ~]# wget https://github.com/openresty/echo-nginx-module/archive/v0.61.tar.gz
    [root@localhost ~]# tar xf v0.61.tar.gz
    [root@localhost nginx-1.16.0]# ./configure --prefix=/usr/local/nginx --group=nginx --user=nginx --sbin-path=/usr/local/nginx/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --http-client-body-temp-path=/tmp/nginx/client_body --http-proxy-temp-path=/tmp/nginx/proxy --http-fastcgi-temp-path=/tmp/nginx/fastcgi --pid-path=/var/run/nginx.pid --lock-path=/var/lock/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-pcre --with-http_realip_module --with-stream --add-module=./echo-nginx-module-0.61 --add-module=./ngx_req_status-master
    [root@localhost nginx-1.16.0]# make && make install
    

    7、Nginx 编译参数

    # 查看 nginx 安装的模块
    [root@localhost ~]#/usr/local/nginx/sbin/nginx -V
    # 模块参数具体功能 
    --with-cc-opt='-g -O2 -fPIE -fstack-protector    //设置额外的参数将被添加到CFLAGS变量。(FreeBSD或者ubuntu使用)
    --param=ssp-buffer-size=4 -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2' 
    --with-ld-opt='-Wl,-Bsymbolic-functions -fPIE -pie -Wl,-z,relro -Wl,-z,now' 
    
    --prefix=/usr/local/nginx                        //指向安装目录
    --conf-path=/etc/nginx/nginx.conf                //指定配置文件
    --http-log-path=/var/log/nginx/access.log        //指定访问日志
    --error-log-path=/var/log/nginx/error.log        //指定错误日志
    --lock-path=/var/lock/nginx.lock                 //指定lock文件
    --pid-path=/run/nginx.pid                        //指定pid文件
    
    --http-client-body-temp-path=/var/lib/nginx/body    //设定http客户端请求临时文件路径
    --http-fastcgi-temp-path=/var/lib/nginx/fastcgi     //设定http fastcgi临时文件路径
    --http-proxy-temp-path=/var/lib/nginx/proxy         //设定http代理临时文件路径
    --http-scgi-temp-path=/var/lib/nginx/scgi           //设定http scgi临时文件路径
    --http-uwsgi-temp-path=/var/lib/nginx/uwsgi         //设定http uwsgi临时文件路径
    
    --with-debug                                        //启用debug日志
    --with-pcre-jit                                     //编译PCRE包含“just-in-time compilation”
    --with-ipv6                                         //启用ipv6支持
    --with-http_ssl_module                              //启用ssl支持
    --with-http_stub_status_module                      //获取nginx自上次启动以来的状态
    --with-http_realip_module                 //允许从请求标头更改客户端的IP地址值,默认为关
    --with-http_auth_request_module           //实现基于一个子请求的结果的客户端授权。如果该子请求返回的2xx响应代码,所述接入是允许的。如果它返回401或403中,访问被拒绝与相应的错误代码。由子请求返回的任何其他响应代码被认为是一个错误。
    --with-http_addition_module               //作为一个输出过滤器,支持不完全缓冲,分部分响应请求
    --with-http_dav_module                    //增加PUT,DELETE,MKCOL:创建集合,COPY和MOVE方法 默认关闭,需编译开启
    --with-http_geoip_module                  //使用预编译的MaxMind数据库解析客户端IP地址,得到变量值
    --with-http_gunzip_module                 //它为不支持“gzip”编码方法的客户端解压具有“Content-Encoding: gzip”头的响应。
    --with-http_gzip_static_module            //在线实时压缩输出数据流
    --with-http_image_filter_module           //传输JPEG/GIF/PNG 图片的一个过滤器)(默认为不启用。gd库要用到)
    --with-http_spdy_module                   //SPDY可以缩短网页的加载时间
    --with-http_sub_module                    //允许用一些其他文本替换nginx响应中的一些文本
    --with-http_xslt_module                   //过滤转换XML请求
    --with-mail                               //启用POP3/IMAP4/SMTP代理模块支持
    --with-mail_ssl_module                    //启用ngx_mail_ssl_module支持启用外部模块支持
    

    8、修改配置文件/etc/nginx/nginx.conf

    # 全局参数设置 
    worker_processes  4;          #设置nginx启动进程的数量,一般设置成与逻辑cpu数量相同 
    error_log  logs/error.log;    #指定错误日志 
    worker_rlimit_nofile 102400;  #设置一个nginx进程能打开的最大文件数 
    pid        /var/run/nginx.pid; 
    events { 
        worker_connections  1024; #设置一个进程的最大并发连接数 
    }
    # http 服务相关设置 
    http { 
        include      mime.types; 
        default_type  application/octet-stream; 
        log_format  main  'remote_addr - remote_user [time_local] "request" '
                          'status body_bytes_sent "$http_referer" '
                          '"http_user_agent" "http_x_forwarded_for"'; 
        access_log  /var/log/nginx/access.log  main;    #设置访问日志的位置和格式 
        sendfile          on; #是否调用sendfile函数输出文件,一般设置为on,若nginx是用来进行磁盘IO负载应用时,可以设置为off,降低系统负载 
        gzip              on;      #是否开启gzip压缩,将注释去掉开启 
        keepalive_timeout  65;     #设置长连接的超时时间
    # 虚拟服务器的相关设置 
        server { 
            listen      80;        #设置监听的端口 
            server_name  localhost;        #设置绑定的主机名、域名或ip地址 
            charset koi8-r;        # 设置编码字符 
            location / { 
                root  /var/www/nginx;           #设置服务器默认网站的根目录位置,需要手动创建
                index  index.html index.htm;    #设置默认打开的文档 
                } 
            error_page  500 502 503 504  /50x.html; #设置错误信息返回页面 
            location = /50x.html { 
                root  html;        #这里的绝对位置是/usr/local/nginx/html
            } 
        } 
     }
    
    nginx.conf的组成:nginx.conf一共由三部分组成,分别为:全局块、events块、http块。在http块中又包含http全局块、多个server块。每个server块中又包含server全局块以及多个location块。在统一配置块中嵌套的配置快,各个之间不存在次序关系。
    

    检测nginx配置文件是否正确

    [root@localhost ~]# /usr/local/nginx/sbin/nginx -t
    [root@localhost ~]# mkdir -p /tmp/nginx
    

    10、启动nginx服务

    [root@localhost ~]# /usr/local/nginx/sbin/nginx
    

    11、通过 nginx 命令控制 nginx 服务

    nginx -c /path/nginx.conf  	     # 以特定目录下的配置文件启动nginx:
    nginx -s reload            	 	 # 修改配置后重新加载生效
    nginx -s reopen   			 	 # 重新打开日志文件
    nginx -s stop  				 	 # 快速停止nginx
    nginx -s quit  				  	 # 完整有序的停止nginx
    nginx -t    					 # 测试当前配置文件是否正确
    nginx -t -c /path/to/nginx.conf  # 测试特定的nginx配置文件是否正确
    
    注意:
    nginx -s reload 命令加载修改后的配置文件,命令下达后发生如下事件
    1. Nginx的master进程检查配置文件的正确性,若是错误则返回错误信息,nginx继续采用原配置文件进行工作(因为worker未受到影响)
    2. Nginx启动新的worker进程,采用新的配置文件
    3. Nginx将新的请求分配新的worker进程
    4. Nginx等待以前的worker进程的全部请求已经都返回后,关闭相关worker进程
    5. 重复上面过程,知道全部旧的worker进程都被关闭掉
    

    12、实现nginx开机自启

    [root@localhost ~]# vim /etc/init.d/nginx
    #!/bin/sh 
    # 
    # nginx - this script starts and stops the nginx daemon 
    # 
    # chkconfig:  - 85 15  
    # description:  Nginx is an HTTP(S) server, HTTP(S) reverse  
    #              proxy and IMAP/POP3 proxy server 
    # processname: nginx 
    # config:      /etc/nginx/nginx.conf 
    # config:      /etc/sysconfig/nginx 
    # pidfile:    /var/run/nginx.pid 
      
    # Source function library. 
    . /etc/rc.d/init.d/functions
      
    # Source networking configuration. 
    . /etc/sysconfig/network
      
    # Check that networking is up. 
    [ "$NETWORKING" = "no" ] && exit 0 
      
    nginx="/usr/local/nginx/sbin/nginx"
    prog=$(basename $nginx) 
      
    NGINX_CONF_FILE="/etc/nginx/nginx.conf"
      
    [ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx
      
    lockfile=/var/lock/nginx
      
    make_dirs() { 
      # make required directories 
      user=`nginx -V 2>&1 | grep "configure arguments:" | sed 's/[^*]*--user=([^ ]*).*/1/g' -` 
      options=`$nginx -V 2>&1 | grep 'configure arguments:'` 
      for opt in $options; do
          if [ `echo $opt | grep '.*-temp-path'` ]; then
              value=`echo $opt | cut -d "=" -f 2` 
              if [ ! -d "$value" ]; then
                  # echo "creating" $value 
                  mkdir -p $value && chown -R $user $value 
              fi
          fi
      done
    } 
      
    start() { 
        [ -x $nginx ] || exit 5 
        [ -f $NGINX_CONF_FILE ] || exit 6 
        make_dirs 
        echo -n $"Starting $prog: "
        daemon $nginx -c $NGINX_CONF_FILE 
        retval=$? 
        echo
        [ $retval -eq 0 ] && touch $lockfile 
        return $retval 
    } 
      
    stop() { 
        echo -n $"Stopping $prog: "
        killproc $prog -QUIT 
        retval=$? 
        echo
        [ $retval -eq 0 ] && rm -f $lockfile 
        return $retval 
    } 
      
    restart() { 
        configtest || return $? 
        stop 
        sleep 1 
        start 
    } 
      
    reload() { 
        configtest || return $? 
        echo -n $"Reloading $prog: "
        killproc $nginx -HUP 
        RETVAL=$? 
        echo
    } 
      
    force_reload() { 
        restart 
    } 
      
    configtest() { 
      $nginx -t -c $NGINX_CONF_FILE 
    } 
      
    rh_status() { 
        status $prog 
    } 
      
    rh_status_q() { 
        rh_status >/dev/null 2>&1 
    } 
      
    case "$1" in
        start) 
            rh_status_q && exit 0 
            $1 
            ;; 
        stop) 
            rh_status_q || exit 0 
            $1 
            ;; 
        restart|configtest) 
            $1 
            ;; 
        reload) 
            rh_status_q || exit 7 
            $1 
            ;; 
        force-reload) 
            force_reload 
            ;; 
        status) 
            rh_status 
            ;; 
        condrestart|try-restart) 
            rh_status_q || exit 0 
                ;; 
        *) 
            echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"
            exit 2 
    esac
    

    b、添加权限

    chmod +x /etc/init.d/nginx
    

    c、重新加载系统启动文件

    systemctl daemon-reload
    

    d、启动并设置开机自启

    systemctl start nginx
    [root@localhost ~]# /sbin/chkconfig nginx on ---开机启动
  • 相关阅读:
    Direct3D 光照和材质
    UGUI 过渡动画插件,模仿NGUI的Tween (转载)
    Unity 功夫猫
    LinkedList和List在三种简单算法中效率比较
    学习Modern UI for WPF
    H3 BPM Sheet表单 NTKO功能使用说明
    H3 BPM MVC表单SheetOffice控件使用分享
    H3 BPM初次安装常见错误详解5-7
    吕学敏:全面、细致功能锻造灵活审批
    华陆工程——业务流程管理方案
  • 原文地址:https://www.cnblogs.com/pengpengboshi/p/13167834.html
Copyright © 2011-2022 走看看