zoukankan      html  css  js  c++  java
  • 源码编译安装nginx

    安装依赖软件

    1、安装编译工具gcc

      gcc是一个开源编译器集合,用于处理各种各样的语言:C、C++、Java、Ada等,在linux世界中是最通用的编译器,支持大量处理器:x86、AMD64、PowerPC、ARM、MIPS等。
      
    首先确定系统是否安装gcc

    [root@localhost ~]# gcc

    若输出以下消息则已经安装gcc:
    这里写图片描述
    若输出以下消息则未安装gcc:
    这里写图片描述
    使用包管理器yum安装gcc:

    [root@localhost ~]# yum -y install gcc

    2.安装PCRE库

      nginx的Rewrite模块和HTTP核心模块会使用到PCRE正则表达式语法,因此nginx编译需要使用PCRE(Perl Compatible Regular Expression)库,需要安装pcre和pcre-devel,pcre提供编译版本的库,pcre-devel提供开发阶段的头文件和编译项目的源代码。
    使用yum安装:

    [root@localhost ~]# yum -y install pcre pcre-devel

    如果系统已经安装了pcre包则会输出:

    Nothing to do

    即系统没有安装或升级pcre。

    3.安装zlib库

    zlib库提供了压缩算法,在nginx的各种模块中需要使用gzip压缩,因此需要安装zlib库和zlib-devel(zlib源代码)。

    [root@localhost ~]# yum -y install zlib zlib-devel

    4.安装OpenSSL

    OpenSSL项目是一个协作开发健壮的、商业级的、全功能的执行于安全套接层(SSL v2/v3)和传输层安全(TLS v1)的协议,也是一个完整强壮的通用加密库。在nginx中如果服务器需要提供安全网页则会用到OpenSSL库,因此需要安装它的库文件和它的开发安装包。
    yum安装openssl和openssl-devel

    [root@localhost ~]# yum -y install openssl openssl-devel

    安装nginx

    可以去nginx官网找到各个版本的链接

    下载并解压:

    [root@localhost src]# wget http://nginx.org/download/nginx-1.10.1.tar.gz
    [root@localhost src]# tar zxvf nginx-1.10.1.tar.gz
    [root@localhost src]# cd nginx-1.10.1

    ##配置选项 linux下创建一个应用程序分为三步,配置源代码、编译、安装编译,配置步骤可以选择更多选项,这些选项在程序安装完成后不可编辑,配置即添加某些开关选项(switch)到配置(configure)脚本, 可以激活的开关类型有三种。 ###**容易的安装方法** 不加任何配置参数直接编译安装nginx

    [root@localhost src]# ./configure
    [root@localhost src]# make&&make install

    路径选项

    在运行configure脚本命令的时候,可能需要开启一些开关选项,开关选项可能因为下载的版本不同有差异,使用./configure --help 列出有效的开关选项:
    这里写图片描述

    路径选项用法默认值
    –prefix nginx安装位置 /usr/local/nginx
    –sbin-path nginx二进制执行文件路径 /sbin/nginx
    –conf-path 配置文件存放位置 /conf/nginx.conf
    –error-log-path 错误日志文件位置 /logs/error.log
    –pid-path pid文件路径 /logs/nginx.pid(pid文件包含进程的标识符)
    –lock-path 锁文件存放路径 /logs/nginx.log(锁文件用于控制nginx进程没有被启动两次)
    –with-perl_modules_path perl模块路径(如果需要包含另外的perl模块,必须定义该参数)  
    –with-perl perl执行文件路径  
    –http-log-path 访问日志文件路径 /logs/access.log
    –http-client-body-temp-path 客户端请求产生的临时文件路径 /client_body_temp
    –http-proxy-temp-path 代理存储临时文件路径 /proxy_temp_path
    –http-fastcgi-temp-path HTTP FastCGI模块使用的临时文件路径  
    –builddir 创建应用程序位置  

    先决条件选项

    先决条件的格式有库文件二进制文件,在配置之前需要先安装这些依赖软件,有时即使这些软件已经安装在系统中,可能有时配置脚本还是找不到它们的位置,因此可以使用开关项指出它们的路径。

    编译选项用法
    –with-cc 指定C编译器位置
    –with-cpp 指定备用C预处理位置
    –with-cc-opt 定义额外选项,然后在命令行传递给C编译器
    –with-ld-opt 定义额外选项,然后在命令行传递给C连接器
    –with-cpu-opt 指定不同的目标处理器结构,可以是下列值:pentium、pentiumpro、ppc64等
    PCRE选项用法
    –without-pcre 不使用PCRE库()
    –with-pcre 强制使用pcre
    –with-pcre=… 指定pcre源代码(注意不是安装目录)
    –with-pcre-opt 用于建立PCRE库的额外选项
    MD5选项用法
    –with-md5=… 指定MD5库源代码路径
    –with-md5-opt 建立MD5库的另外选项
    –with-md5-asm 建立MD5库使用汇编语言源代码
    SHA1选项用法
    –with-sha1=… 源代码路径
    –with-sha1-opt 建立SHA1库的另外选项
    –with-sha1-asm 建立SHA1库使用汇编语言源代码
    zlib选项用法
    –with-zlib 源代码路径
    –with-zlib-opt 建立zlib库的另外选项
    –with-zlib-asm 使用汇编语言最大限度的优化下列目标结构:Pentium、pentiumpro
    OpenSSL选项用法
    –with-openssl 源代码路径
    –with-openssl-opt 建立openssl库的另外选项

    模块选项

    在编译nginx之前需要选择模块,一些模块默认开启,有些模块需要手动开启。

    默认禁用模块描述
    –without-http_charset_module 禁用Charset模块,该模块用于对网页重新编码
    –without-http_gzip_module 禁用gzip压缩模块
    –without-http_ssi_module 禁用服务端包含模块
    –without-http_userid_module 禁用用户ID模块,该模块为用户通过cookie验证身份
    –without-http_access_module 禁用访问模块,对于指定的IP段,允许访问配置
    –without-http_auth_basic_module 禁用基本的认证模块
    –without-http_autoindex_module 禁用自动索引模块
    –without-http_geo_module 禁用Geo模块,该模块允许你定义依赖于IP地址段的变量
    –without-http_map_module 禁用map模块,该模块允许你定义map区段
    –without-http_referer_module 禁用referer控制模块
    –without-http_rewrite_module 禁用rewrite模块
    –without-http_proxy_module 禁用代理模块,该模块用于向其他服务器传输请求
    –without-http_fastcgi_module 禁用FastCGI模块,该模块用于和FastCGI进程配合工作
    –without-http_memcached_module 禁用memcached模块
    –without-http_limit_req_module 禁用Limit Request模块,该模块允许限制每个用户请求总数
    –without-http_empty_gif_module 禁用Empty Gif模块,该模块用于在内存中提供空白GIF图像
    –without-http_browser_module 禁用Browser模块,该模块用于解释用户代理字符串
    –without-http_upstream_ip_hash_module 禁用Upstream模块,该模块用于配置负载均衡结构
    默认开启模块描述
    –with-http_ssl_module 开启SSL模块,支持使用HTTPS协议的网页
    –with-http_realip_module 开启Real IP支持,该模块用于从用户的请求头数据中读取real IP地址
    –with-http_addition_module 开启Addition模块,该模块允许你追加或前置数据到响应的主体部分
    –with-http_xslt_module 开启XLST模块,该模块实现XLST转化为XML文档
    –with-http_image_filter_module 开启Image Filter模块,该模块允许修改图像(注意:若编译该模块,需安装libgd库)
    –with-http_geoip_module 开启GeoIP模块,该模块通过使用MaxMind’s GeoI二进制数据库来获取客户端在地理上的分布(注意:如果希望编译该模块,需要安装libgeoip)
    –with-http_sub_module 开启Substitution模块,该模块用于在网页中替换文本
    –with-http_dav_module  
    –with-http_flv_module 开启FLV模块,该模块用于处理.flv(flash视频)文件
    –with-http_gzip_static_module 开启Gzip静态模块,该模块用于发送预压缩文件
    –with-http_random_index_module 开启Random Index模块,该模块用于挑选一个随机的文件作为该目录的index
    –with-http_secure_link_module 开启Secure Link模块,该模块用于在URL中检测关键字的存在
    –with-http_stub_status_module 开启Stub Status模块,该模块会产生一个服务器状态和信息页
    –with-google_perftools_module 开启google性能工具

    杂项

    邮件服务代理描述
    –with-mail 开启服务代理模块(mail server proxy),支持POP3,IMAP4和SMTP,该功能默认禁用
    –with-mail_ssl_module 开启邮件代理服务对SSL的支持,默认禁用
    –without-mail_pop3_module 邮件代理模块禁用POP3功能,在开启邮件代理模块后该功能默认启用
    –without-mail_imap_module 邮件代理模块禁用IMAP4功能,在开启邮件代理模块后该功能默认启用
    –without-mail_smtp_module 邮件代理模块禁用SMTP功能,在开启邮件代理模块后该功能默认启用
    事件管理(为nginx定时器选择事件通知系统)描述
    –with-select_module 开启select模块,使用select作为事件通知机制,默认开启
    –without-select_module 禁用select模块
    –with-poll_module 开启poll模块,使用poll作为事件通知机制,默认开启
    –without-poll_module 禁用poll模块
    用户和组选项描述
    –user=… 指定启动nginx进程的默认用户
    –group=… 指定启动nginx进程的默认用户组
    其他选项描述
    –with-ipv6 开启对ipv6支持
    –without-http 禁用http服务
    –without-http-cache 禁用http缓冲功能
    –add-module 通过指定的路径编译添加第三方模块,如果需要编译多个模块,该选项可以多次使用
    –with-debug 开启记录额外调试信息

    配置可能出现的错误问题

    在运行configure命令时可能会报错,大多数情况下是因为丢失先决条件未指定路径目录权限,可以查看objs/autoconf.err文件来查看编译出错问题。

    编译

    一旦配置成功就可以编译nginx,在源代码目录执行:

    [root@localhost src]#make

    成功编译后将输出以下信息:

    make[1]: Leaving directory `/usr/local/src/nginx-1.10.1’

    编译过程可能出现错误,错误原因可能是找不到先决条件或指定路径无效,如果是这种问题,可以检查开关选项和路径,重新执行configure编译即可。还可能的错误原因是下载了比较新的nginx版本,新版本没有很好的做到向下兼容,这样可以下载比较旧的稳定版本重新尝试。

    安装

    编译成功后执行安装命令:

    [root@localhost src]#make&&make install

    --------------------- 作者:zsl10 来源:CSDN 原文:https://blog.csdn.net/zsl10/article/details/52181748?utm_source=copy 版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    $POST数组论证($GET || $COOKIE || $REQUEST 同理)
    PHP之preg_replace()与ereg_replace()正则匹配比较讲解
    PHP之mysql_real_escape_string()函数讲解
    浅析白盒审计中的字符编码及SQL注入
    PHP之list()函数讲解
    PHP之implode与explode函数讲解
    PHP之Error与Logging函数讲解
    Nextcloud私有云盘在Centos7下的部署笔记
    Linux下路由配置梳理
    实验c语言不同类型的指针互用(不推荐只是学习用)
  • 原文地址:https://www.cnblogs.com/zhengchunyuan/p/9770968.html
Copyright © 2011-2022 走看看