• 如何源码编译安装并控制nginx


    安装nginx

    1. 注意
      Linux操作系统需要2.6及其以上的内核(支持epoll)

    2. 使用nginx的必备软件
      gcc编辑器
      yum -y install gcc gcc-c++
      pcre库(支持正则表达式)
      yum install -y pcre pcre-devel
      zlib库(支持gzip压缩传输)
      yum install -y zlib zlib-devel
      OpenSSL开发库(支持SSL协议)
      yum install -y openssl openssl-devel

    3. Linux内核参数优化方案
      配置步骤

    4. 编译安装

    # nginx版本下载链接:http://nginx.org/en/download.html
    wget http://nginx.org/download/nginx-1.15.7.tar.gz
    tar zxvf nginx-1.15.7.tar.gz
    cd nginx-1.15.7
    ./configure --prefix=/data1/server/nginx --sbin-path=/data1/bin/nginx --user=www --group=www --modules-path=/data1/server/nginx/modules --conf-path=/data1/config/nginx/nginx.conf --error-log-path=/data1/logs/nginx/error.log --http-log-path=/data1/logs/nginx/access.log --pid-path=/data1/tmp/nginx/ngix.pid --lock-path=/data1/tmp/nginx/nginx.lock --with-debug
    make
    make install
    

    控制nginx

    • 启动
      • 默认方式启动 /usr/local/nginx/sbin/nginx
      • 另行指定配置文件启动 /usr/local/nginx/sbin/nginx -c /tmp/nginx.conf
      • 另行指定安装目录启动 /usr/local/nginx/sbin/nginx -p /usr/local/nginx
      • 另行指定全局配置项启动 /usr/local/nginx/sbin/nginx -g "pid /var/nginx/test.pid"
    • 测试配置信息是否有错误
      • /usr/local/nginx/sbin/nginx -t
    • 在测试配置阶段不输出信息
      • /usr/local/nginx/sbin/nginx -t -q
    • 显示版本信息
      • /usr/local/nginx/sbin/nginx -v
    • 显示编译阶段的参数
      • /usr/local/nginx/sbin/nginx -V
    • 停止服务
      • /usr/local/nginx/sbin/nginx -s stop 或者 kill -s SIGTERM <nginx master pid##
    • 重载配置文件
      • /usr/local/nginx/sbin/nginx -s reload 或者 kill -s SIGHUP <nginx master pid##
    • 日志文件回滚
      • /usr/local/nginx/sbin/nginx -s reopen 或者 kil -s SIGUSR1 <nginx master pid##
    • 平滑升级nginx
      • 通知正在运行的旧版本nginx准备升级 kill -s SIGUSR2 <nginx master pid##
      • 重新编译nginx
          获取新版nginx源码   wget http://nginx.org/download/nginx-1.15.7.tar.gz   
          解压               tar zxvf nginx-1.15.7.tar.gz   
          进入解压目录        cd nginx-1.15.7   
          配置               ./configure [参数]   
          编译               make (千万不能运行make install,这样会覆盖安装;make完之后在objs目录下就多了个nginx)   
          备份旧的nginx程序  cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
          覆盖旧的nginx程序  cp -rfp objs/nginx /usr/local/nginx/sbin/nginx
      
    • 显示帮助 nginx -h 或者 nginx -?

    nginx编译参数详解

    • 路径相关参数
      prefix=PATH # nginx安装部署后的根目录,默认为/usr/local/nginx目录
      sbin-path=PATH # 可执行文件的放置路径,默认为<prefix##/scgi_temp
      modules-path=PATH # 模块放置路径
      conf-path=PATH # nginx.conf配置文件放置路径
      error-log-path=PATH # 错误日志放置路径
      pid-path=PATH # nginx.pid放置路径
      lock-path=PATH # nginx.lock放置路径

    • 编译相关参数
      with-cc=PATH # C编译器的路径
      with-cpp=PATH # C预编辑器的路径
      with-cc-opt=OPTIONS # 在nginx编译期间指定加入一些编译选项
      with-ld-opt=OPTIONS # 用于加入链接时的参数
      with-cpu-opt=CPU # 指定CPU处理器架构,只能从以下取值中选择:pentium、pentiumpro、pentium3、pentium4、athlon、opteron、sparc32、sparc64、ppc64

    • 依赖软件的相关参数

      • pcre
        without-pcre # 配置文件关闭正则表达式匹配
        with-pcre # 强制使用PCRE库
        with-pcre=DIR # 指定pcre库的源码位置,在编译nginx时会进入该目录编译pcre源码
        with-pcre-opt=OPTIONS # 编译pcre源码时希望加入的编译选项
        with-pcre-jit # 编译PCRE库支持即时编译

      • OpenSSL
        with-openssl=DIR # 指定OpenSSL库的源码位置,在编译nginx时会进入该目录编译OpenSSL源码(可以访问http://www.openssl.org下载)
        with-openssl-opt=OPTIONS # 编译OpenSSL源码时希望加入的编译选项

      • 原子库
        with-libatomic # 强制使用atomic库
        with-libatomic=DIR # atomic所在的位置

      • zlib库
        with-zlib=DIR # 指定zlib库的源码位置,在编译nginx时会进入该目录编译zlib源码
        with-zlib-opt=OPTIONS # 编译zlib源码时加入的编译选项
        with-zlib-asm=CPU # 指定对特定的CPU使用zlib库的汇编优化功能,目前仅支持两种架构:pentium和pentiumpro

    • 模块相关参数

      • 事件模块(默认情况下安装epoll)
        with-select_module # 使用select module处理事件驱动
        without-select_module # 不按照select module
        with-poll_module # 使用poll module处理事件驱动
        without-poll_module # 不安装poll module

      • 默认即编译进入nginx的http模块
        without-http_charset_module # 不安装http charset module,这个模块可以将服务器发出的http响应重编码
        without-http_gzip_module # 不安装http gzip module,在服务器发出的http响应包中,这个模块可以按照配置文件指定的content-type对特定大小的http相应包体执行gzip压缩
        without-http_ssi_module # 不安装http ssi module,这个模块可以在向用户返回的http响应包体中加入特定的内容,如html文件中固定的页头和页尾
        without-http_userid_module # 不安装http userid module,这个模块可以通过http请求头部信息里的一些字段认证用户信息,以确定请求是否合法
        without-http_access_module # 不安装http access module,这个模块可以根据ip地址限制能够访问服务器的客户端
        without-http_auth_basic_module # 不安装http auth basic module,这个模块可以提供最简单的用户名/密码认证
        without-http_autoindex_module # 不安装http autoindex module,该模块提供简单的目录浏览功能
        without-http_geo_module # 不安装http geo module,这个模块可以定义一些变量,这些变量的值将与客户端IP地址关联,这样nginx针对不同的地区的客户端(根据IP地址判断)返回不一样的结果,例如不同地区显示不同语言的网页
        without-http_map_module # 不安装http map module,这个模块可以建立一个key/value映射表,不同的key得到相应的value,这样可以针对不同的URL做特殊处理。例如:返回302重定向响应时,URL不同时返回的Location字段也不一样
        without-http_split_clients_module # 不安装http split_clients module,这个模块可以根据客户端的信息,例如IP地址、header头、cookie等,来区分处理
        without-http_referer_module # 不安装http referer module,这个模块可以根据请求中的referer字段来拒绝请求
        without-http_rewrite_module # 不安装http rewrite module, 这个模块提供http请求在nginx服务内部的重定向功能,依赖pcre库
        without-http_proxy_module # 不安装http proxy module,这个模块提供基本的http反向代理功能
        without-http_fastcgi_module # 不安装http fastcgi module,这个模块提供FastCGI功能
        without-http_uwsgi_module # 不安装http uwsgi module,这个模块提供uWSGI功能
        without-http_scgi_module # 不安装http scgi module,这个模块提供SCGI功能
        without-http_memcached_module # 不安装http memcached module,这个模块可以使得nginx直接由上游的memcached服务读取数据,并简单地适配成HTTP相应返回给客户端
        without-http_limit_conn_module # 不安装http limit conn module,这个模块针对某个IP地址限制并发连接数。例如:使nginx对一个IP地址仅允许一个连接
        without-http_limit_req_module # 不安装http limit_req module,module,这个模块针对某个IP地址限制并发连接数。
        without-http_empty_gif_module # 不安装http empty_gif module,这个模块可以使得nginx在收到无效请求时,立刻返回内存中的1*1像素的GIF图片。这种好处在于,对于明显的无效请求不会去试图浪费服务器资源
        without-http_browser_module # 不安装http browser module,这个模块会根据http请求中的user-agent字段(该字段通常由浏览器填写)来识别浏览器
        without-http_upstream_hash_module # 不安装http upstream_hash module,在后端集群session共享的情况,这个模块提供当nginx与后端server建立连接时,会根据ip做散列运算来决定与后端哪台server通信,这样可以实现负载均衡
        without-http_upstream_ip_hash_module # 不安装http upstream_ip_hash module,这个模块在后端集群session共享时提供当nginx与后端server建立连接时,会根据ip做散列运算来决定与后端哪台server通信,这样可以实现负载均衡

      • 默认不会编译进入nginx的http模块
        with-http_ssl_module # http ssl module,这个模块使nginx支持ssl协议,提供https服务(确保已配置OpenSSL)
        with-http_realip_module # http realip module,这个模块可以从客户端请求里的header信息(如X-real-ip或者X-forwarded-for)中获取真正的客户端ip地址
        with-http_addition_module # http addition module,这个模块可以在返回客户端的http包体头部或者尾部增加内容
        with-http_xslt_module # http xslt module,这个模块可以使xml格式的数据在发给客户端前加入xsl渲染(确保已安装libxml2和libxslt)
        with-http_image_filter_module # http image_filter module,这个模块将符号配置的图片实时压缩为指定大小(width*height)的缩略图再发送给用户,目前支持JPEG、PNG、GIF格式(确保已安装libgd)
        with-http_geoip_module # http geoip module,这个模块可以依据MaxMind GeoIP的IP地址数据库对客户端的IP地址得到实际的地理位置信息(确保有MaxMind GeoIP的库文件,访问http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz获取)
        with-http_sub_module # http sub module,这个模块可以在nginx返回客户端的http响应包中将指定的字符串替换为自己需要的字符串
        with-http_dav_module # http dav module,这个模块可以让nginx支持webdav标准,如支持webdav协议中的PUT、DELETE、COPY、MOVE、MKCOL等请求
        with-http_flv_module # http flv module,这个模块可以在向客户端返回响应时,对FLV格式的视频文件在header头做一些处理,使得客户端可以观看、拖动FLV视频
        with-http_mp4_module # http mp4 module,这个模块使客户端可以观看、拖动MP4视频
        with-http_gzip_static_module # http gzip_static module,这个模块可以在做gzip压缩前,先查看相同位置是否有已经做过gzip压缩的.gz文件,如果有,就直接返回,这样就可以预先在服务器上做好文档的压缩,给CPU减负
        with-http_random_index_module # http random_index module,这个模块在客户端访问某个目录时,随机返回该目录下的任意文件
        with-http_secure_link_module # http secure_link module,这个模块提供一种验证请求是否有效的机制。例如:它会验证URL中需要加入的token参数是否属于特定客户端发来的,以及检查时间戳是否过期
        with-http_stub_status_module # http stub_status module,这个模块可以让运行中的nginx提供性能统计页面,获取相关的并发连接、请求的信息
        with-google_perftools_module # google perftools module,这个模块提供google的性能测试工具

      • 邮件代理服务器相关的mail模块
        with-mail # 安装邮件服务器反向代理模块,使nginx可以反向代理IMAP、POP3、SMTP等协议。该模块默认不安装
        with-mail_ssl_module # 安装mail ssl module。该模块可以使IMAP、POP3、SMTP等协议基于SSL/TLS协议之上使用。该模块默认不安装并依赖于openSSL库
        without-mail_pop3_module # 不安装 mail pop module。在使用--with-mail参数后,pop3 module是默认安装的,以使nginx支持pop3协议
        without-mail_imap_module # 不安装 mail imap module。在使用--with-mail参数后,imap module是默认安装的,以使nginx支持IMAP协议
        without-mail_smtp_module # 不安装 mail smtp module。在使用--with-mail参数后,smtp module是默认安装的,以使nginx支持SMTP协议

    • 其他模块参数
      with-debug # 打印debug调试级别日志
      add-module=PATH # 当在nginx里加入第三方模块时,通过这个参数指定第三方模块的路径
      without-http # 禁用HTTP服务器
      without-http-cache # 禁用http服务器里的缓存cache特性
      with-file-aio # 启动文件的异步i/o功能来处理磁盘文件,这需要linux内核支持原生的异步i/o
      user=USER # 指定nginx worker进程运行时所属的用户
      group=GROUP # 指定nginx worker进程运行时所属的组

  • 相关阅读:
    40个Java集合面试问题和答案
    jsp九大内置对象:request、response、session、application、out、page、pageContext、config、exception
    JAVA多线程和并发基础面试问答
    线程的五大状态
    人物与动物快速抠图技巧
    实时监听数据库变化
    inter jion与WITH (NOLOCK) 排他锁(脏读)
    Win定时任务未正常运行的bug(win Server2019)
    HttpWebRequest与HttpWebResponse的关系
    A5M2 sql自动换行快捷键
  • 原文地址:https://www.cnblogs.com/phonecom/p/10932863.html
Copyright © 2020-2023  润新知