如何源码编译安装并控制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进程运行时所属的组

posted on 2019-05-27 20:15  果然朝辉  阅读(606)  评论(0编辑  收藏  举报

导航