源码编译安装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
版权声明:本文为博主原创文章,转载请附上博文链接!
源码编译安装nginx的更多相关文章
- CentOS7 源码编译安装Nginx
源码编译安装nginx 1.下载nginx源码包(这里以nginx-1.18.0为例) wget http://nginx.org/download/nginx-1.18.0.tar.gz 2 ...
- 源码编译安装nginx及设置开机启动项
1.上传nginx文档:解压到/data目录下,并安装依赖包tar xf nginx-1.20.1.tar.gz -C /data/cd /data/nginx-1.20.1/ && ...
- Linux系统 - 源码编译安装Nginx
什么是Nginx? Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器,在高连接并发的情况下N ...
- Centos7通过yum跟源码编译安装Nginx
源码编译安装 http://nginx.org/en/download.html 到官网下载,然后用XFTP上传到root目录 把文件解压出来 tar -zxvf nginx-1.16.0.tar.g ...
- Ubuntu 16.04源码编译安装nginx 1.10.0
一.下载相关的依赖库 pcre 下载地址 http://120.52.73.43/jaist.dl.sourceforge.net/project/pcre/pcre/8.38/pcre-8.38.t ...
- Centos6.5源码编译安装nginx
1.安装pcre下载地址:http://jaist.dl.sourceforge.net/project/pcre/pcre/8.38/pcre-8.38.tar.gz #tar -axvf pcre ...
- CentOS 7 源码编译安装 Nginx
这里安装的是nginx 1.14版本 1.下载源码 #下载 wget http://nginx.org/download/nginx-1.14.0.tar.gz #解压 tar -xzf nginx- ...
- CentOS中源码编译安装Nginx
1.从官网通过wget命令将Nginx源码包下载到Linux上 Nginx下载页面:http://nginx.org/en/download.html 2.在Linux上安装需要依赖的环境 yum ...
- centos7 源码编译安装 nginx
安装步骤 下载 nginx 源码包 官网 $ wget http://nginx.org/download/nginx-1.16.0.tar.gz 解压 nginx 压缩包 $ tar -zxvf n ...
随机推荐
- Redis资料整理
1.Redis命令參考中文简体版. 2.java操作redis.jedis使用api 3.Redis学习笔记. 4.浅谈Redis数据库的键值设计 5.Redis资料汇总专题 6.MongoDB资料汇 ...
- sed 简明教程 (转)
sed 简明教程 2013年2月20日 awk于1977年出生,今年36岁本命年,sed比awk大2-3岁,awk就像林妹妹,sed就是宝玉哥哥了.所以 林妹妹跳了个Topless,他的哥哥sed ...
- memcached配置 启动
memcached:http://memcached.org/ libevent:http://libevent.org/ #下载包 cd /opt wget https://github.com/d ...
- 【30集iCore3_ADP出厂源代码(ARM部分)讲解视频】30-11层驱动之FSMC
视频简介:该视频介绍iCore3应用开发平台中FSMC通信的配置方法及ARM与FPGA通信的方法. 源视频包下载地址:链接:http://pan.baidu.com/s/1slbHOCH 密码:n06 ...
- uboot i2c 操作函数记录
I2C 在 u-boot 上面,有直接操作 I2C 的函数 // drivers/i2c/i2c_core.c // 设置在哪个 I2C bus 上工作 276 int i2c_set_bus_num ...
- Java多线程的同步机制(synchronized)
一段synchronized的代码被一个线程执行之前,他要先拿到执行这段代码的权限,在 java里边就是拿到某个同步对象的锁(一个对象只有一把锁): 如果这个时候同步对象的锁被其他线程拿走了,他(这个 ...
- hosts 不启作用的解决办法
查各种编码ANSI flushdns无用 停止DNS Client 服务 0.0
- Angular4学习笔记(六)- Input和Output
概述 Angular中的输入输出是通过注解@Input和@Output来标识,它位于组件控制器的属性上方. 输入输出针对的对象是父子组件. 演示 Input 新建项目connInComponents: ...
- 这才是真正的裸眼3D!超级震撼!!
大家有没认为有意思啦,反正俺是被震撼到了. 好奇异-- ! " src="http://www.yixieshi.com/uploads/allimg/141116/1446431 ...
- js 异步请求
<p id="check"> <label>验证码:</label> <input class="vid" id=&q ...