1. 选择稳定版还是主线版

主线版:包含最新的功能且修复了已知的bug,但该版本可能会含有一些属于实验性的模块,同时可能会引入新的其他bug,所以如果只是做测试使用,可以使用主线版。

稳定版:不包含最新的功能,但修复了严重的bug,建议用在生产环境。

2. 使用预编译安装包还是源码安装包

预编译包:这种是最简单和最快速的用于安装源码nginx的方式。预编译包几乎包含了所有的官方模块,且大部分的操作系统都能安装。

源码安装:这种方式的特点是灵活,你可以只安装需要的模块,或者第三方模块,或者一些最近发布的安全补丁。

3. 源码安装nginx

(1) 安装nginx的依赖

首先是PCRE库,nginx的core模块和rewrite模块依赖于这个库,同时这个库还提供了正则表达式的支持。

$ wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.40.tar.gz
$ tar -zxf pcre-8.40.tar.gz
$ cd pcre-8.40
$ ./configure
$ make
$ sudo make install

然后是zlib库,Gzip模块需要这个库来做headers压缩。

$ wget http://zlib.net/zlib-1.2.11.tar.gz
$ tar -zxf zlib-1.2..tar.gz
$ cd zlib-1.2.
$ ./configure
$ make
$ sudo make install

最后是openssl库,nginx ssl模块需要这个库来支持https协议。

$ wget http://www.openssl.org/source/openssl-1.0.2f.tar.gz
$ tar -zxf openssl-1.0.2f.tar.gz
$ cd openssl-1.0.2f
$ ./configure darwin64-x86_64-cc --prefix=/usr
$ make
$ sudo make install

(2) 下载nginx源码包

下载主线版本:

$ wget http://nginx.org/download/nginx-1.11.13.tar.gz
$ tar zxf nginx-1.11..tar.gz
$ cd nginx-1.11.

下载稳定版本:

$ wget http://nginx.org/download/nginx-1.12.0.tar.gz
$ tar zxf nginx-1.12..tar.gz
$ cd nginx-1.12.

(3) 配置构建选项

下面是一个样例,具体的安装路径你可以根据你的情况来:

$ ./configure
--sbin-path=/usr/local/nginx/nginx
--conf-path=/usr/local/nginx/nginx.conf
--pid-path=/usr/local/nginx/nginx.pid
--with-pcre=../pcre-8.40
--with-zlib=../zlib-1.2.
--with-http_ssl_module
--with-stream
--with-mail=dynamic
--add-module=/usr/build/nginx-rtmp-module
--add-dynamic-module=/usr/build/3party_module

上面的配置选项中,我们指定了二进制程序的目录,配置文件的目录,PID文件的目录,以及依赖库的目录(这样指定是为了将pcre库和ssl库静态链接到nginx二进制程

序中,以免使用时动态寻找pcre库和ssl库),同时带上了http_ssl_module,mail,stream,另外指定了一个静态模块nginx-rtmp-module和一个动态的第三方模块。

还可以指定的选项有:

--error-log-path=path  默认是prefix/logs/error.log

--http-log-path=path   默认是prefix/logs/access.log

--user=user            默认是nobody,表示由哪个用户运行nginx worker thread

--group=group          组名经常设置为一个没有权限的用户名

--with-pcre-jit        构建pcre库时,同时带上"just-in-time compilation"的功能,这样就能在配置文件中使用pcre_jit指令了

除了指定nginx的构建选项,同时还可以指定编译器的选项:

--with-cc-opt=parameters   添加额外的参数到CFLAGS 变量中

在FreeBSD下,如果使用的是系统自带的pcre库,那么编译时必须添加:--with-cc-opt="-I /usr/local/include";
如果需要增加select()方法支持的文件数量,可以添加:--with-cc-opt="-D FD_SETSIZE=2048"; --with-ld-opt=parameters   添加linking时需要的额外参数
在FreeBSD下,如果使用的是系统自带的pcre库,那么编译时必须添加:--with-ld-opt="-L /usr/local/lib";

指定nginx的连接处理方式:

--with-select_module

--without-select_module

select是默认的连接处理方式,如果平台不支持kqueue,epoll,/dev/poll,默认会自动构建这个方法。

--with-poll_module

--without-poll_module

如果想使用poll这个方法,就使用上面的方式。这样就能替换掉默认的select。

nginx的模块选择:

某些模块默认已经编译了,所以不需要在configure后面加上它们。但是如果你不想要这个模块,可以在configure后面加上--without来去掉它。

模块可以静态链接到nginx的二进制程序中,这样当nginx启动的时候,就会加载它们;使用--add-module选项来做静态链接。所谓静态链接,就是将模块完全打进nginx的二进制文件中。nginx启动,它就运行。

模块可以动态链接到nginx的二进制程序中,这样只有在配置文件中指定这个模块时,nginx才会去加载它们,使用--add-dynamic-module选项来做动态链接。所谓动态链接,就是只在需要的时候才去加载那个模块,不需要的时候,就不加载,很好地控制了内存的使用。通过在配置文件中来指定是否使用某模块。

nginx中默认已编译的模块列表:

http_charset_module
http_gzip_module
http_ssi_module
http_userid_module
http_access_module
http_auth_basic_module
http_autoindex_module
http_geo_module
http_map_module
http_split_clients_module
http_referer_module
http_rewrite_module
http_proxy_module
http_fastcgi_module
http_uwsgi_module
http_scgi_module
http_memcached_module
http_limit_conn_module
http_limit_req_module
http_empty_gif_module
http_browser_module
http_upstream_hash_module
http_upstream_ip_hash_module
http_upstream_least_conn_module
http_upstream_keepalive_module
http_upstream_zone_module

nginx中默认没有编译的模块:

--with-threads
--with-file-aio
--with-ipv6
--with-http_ssl_module
--with-http_v2_module
--with-http_realip_module
--with-http_addition_module
--with-http_xslt_module or --with-http_xslt_module=dynamic
--with-http_image_filter_module or --with-http_image_filter_module=dynamic
--with-http_geoip_module or --with-http_geoip_module=dynamic
--with-http_sub_module
--with-http_dav_module
--with-http_flv_module
--with-mp4_module
--with-http_gunzip_module
--with-http_gzip_static_module
--with-http_auth_request_module
--with-http_random_index_module
--with-http_secure_link_module
--with-http_slice_module
--with-http_degradation_module
--with-http_stub_status_module
--with-http_perl_module or --with-http_perl_module=dynamic
--with-mail or --with-mail=dynamic
--with-mail_ssl_module
--with-stream or --with-stream=dynamic
--with-stream_ssl_module
--with-google_perftools_module
--with-cpp_test_module
--with-debug

第三方模块的地址:

https://www.nginx.com/resources/wiki/modules/

注意:第三方模块的质量不被保证,所以需要你自己承担风险。

静态链接第三方模块:

$  ./configure ... --add-module=/usr/build/nginx-rtmp-module

动态链接第三方模块:

$  ./configure ... --add-dynamic-module=/path/to/module

编译出的动态模块会出现在目录/usr/local/nginx/modules/目录下,以*.so的格式存在。

使用时需要在配置文件中添加load_module指令。

完成安装:

$ make
$ sudo make install

4. 使用预编译安装包

最快速的方式是使用Redhat/CentOS仓库的预编译包nginx.***.rpm,但是这些包都是过期的,比如对于CentOS 7.0,它的仓库中,nginx的版本居然还是1.6.5的,现在的

官方版本都到1.12.0了,所以最好是替换掉CentOS的默认仓库地址,修改为nginx官方的仓库地址(修改repo文件)。

(1)使用默认的RedHat/CentOS仓库

安装EPEL仓库(这是红帽维护的一个仓库)

$ sudo yum install epel-release

更新仓库,从而安装开源的nginx

$ sudo yum update

确认安装

$ sudo nginx -v
nginx version: nginx/1.6.

(2)使用nginx的官方仓库

首先编辑仓库文件:

$ sudo vi /etc/yum.repos.d/nginx.repo

添加内容:

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/mainline/OS/OSRELEASE/$basearch/
gpgcheck=
enabled=

说明:

“OS” is either rhel or centos
“OSRELEASE” is the release number: , .x, , .x
“/mainline” points to the latest mainline verson. Delete to get the latest stable version

比如:如果你的操作系统是CentOS 7.0,你要安装主线版的nginx,那么文件内容如下:

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/mainline/centos/7/$basearch/
gpgcheck=
enabled=

更新仓库:

$ sudo yum update

运行nginx:

$ sudo nginx

确认nginx已经起来并且运行正常:

$ curl -I 127.0.0.1
HTTP/1.1 OK
Server: nginx/1.11.

nginx学习之详细安装篇(二)的更多相关文章

  1. Nginx 学习笔记之安装篇

    在windows下安装Nginx其实非常简单,只需如下几个步骤: 1. 在Nginx官网下载相应版本的安装程序,上面有最新版.稳定版等各种版本,正式运营的项目建议下载最新的稳定版 2.将下载后的压缩包 ...

  2. nginx学习之简化安装篇(一)

    环境:CentOS 6.5 1. 安装依赖环境 [root@localhost ~]# yum install pcre-devel zlib-devel openssl-devel -y 2. 安装 ...

  3. Nginx学习笔记之应用篇

    Nginx服务器的安装请参考Nginx学习笔记之安装篇 关于Nginx配置文档的API在这里就不一一列出,现在我们来配置第一个Nginx架构实现负载均衡的网站. 1.打开IIS,配置如下站点 重复上述 ...

  4. OracleDesigner学习笔记1――安装篇

    OracleDesigner学习笔记1――安装篇   QQ:King MSN:qiutianwh@msn.com Email:qqking@gmail.com 一.       前言 Oracle是当 ...

  5. Nginx学习笔记之加强篇

    在上一篇文章Nginx学习笔记之应用篇中,我们已经可以正式运行自己的网站了.但是在使用Nginx服务器时还需要注意几个问题: 1.Nginx服务器上配置的单个站点的并发量不超过1024 2.Nginx ...

  6. 轻量级HTTP服务器Nginx(入门与安装篇)

    轻量级HTTP服务器Nginx(入门篇)   文章来源于南非蚂蚁   一.什么是Nginx 相信很多读者都对Apache非常熟悉,与Apache类似,Nginx是一款高性能的HTTP和反向代理服务器软 ...

  7. nginx学习(一):安装nginx

    学习下nginx,本篇文章主要讲解下在linux下安装nginx 下载nginx 安装包 1.去官网http://nginx.org/下载对应的nginx包,推荐使用稳定版本: 2.上传tar包到li ...

  8. Oracle11g R2学习系列 之一安装篇

    前言 最近想去前同事推荐的一个Oracle相关的岗位竞争一下,由于之前没有使用Oracle的相关经验,所以决定学习一下,就算最终岗位应聘不成,至少也有了一些Oracle经验了,说不定哪天就用上了.再说 ...

  9. Docker学习系列之一——安装篇

    一.目的 Docker是目前非常流行的虚拟技术,在云计算领域得到了广泛的应用.国内的阿里.京东等大厂都非常普遍地应用了Docker.本文记录了Docker的基本安装过程及最终运行结果,以期备忘,及和同 ...

随机推荐

  1. jconsole使用记录

    jconsole/JVisualVM连接linux服务器查看JVM使用情况 现需要在本地电脑上查看服务器的tomcat的整体的运行状态,使用jconsole工具. JMX配置 拷贝$JAVA_HOME ...

  2. elasticsearch升级步骤

    ES从1.2.1升级到1.4.0 升级步骤,基本上是按照官网的叙述来完成的,链接是:http://www.elasticsearch.org/guide/en/elasticsearch/refere ...

  3. Nginx include和Nginx指令的使用

    Nginx include和Nginx指令的使用 1.nginx include 主配置文件nginx.conf中指定包含其他扩展配置文件,从而简化nginx主配置文件,实现多个站点功能 [root@ ...

  4. eCos系统无法正确链接到在C++源文件里自己定义的cyg_user_start函数的问题和解决的方法

    在C++源文件里定义cyg_user_start函数前,将其声明成C函数.就可以解决这个问题. eCos官网:http://ecos.sourceware.org eCos中文技术网:http://w ...

  5. 你今天Restful了吗?

    大家都宣称自己已经满足REST架构的风格, 那到底需要怎么去评价是否符合REST架构, 至少得有以下几个特征. REST 的约束包括: 无状态.在不同的客户端请求之间,服务器并不保存客户端相关的上下文 ...

  6. Java虚拟机对锁优化所做的努力(读书笔记)

    锁偏向      是一种加锁操作的优化手段,他的核心思想是:如果一个线程获得了锁,那么就进入偏向模式,当这个线程再次请求锁时,无须在做任何同步操作,因此在几乎没有锁竞争的场合,偏向锁是比较好的优化效果 ...

  7. Android学习(二十三)SubMenu 子菜单

    一.SubMenu子菜单 和功能菜单相似,但是可以添加子菜单. 二.实现步骤: 1.通过onCreateOptionsMenu方法创建子菜单,可以通过代码动态创建,也可以通过xml进行创建. 2.通过 ...

  8. Rosbridge 的使用

      参考文献: http://rosclub.cn/post-569.html ROS与Android的窃窃私语   1.简介 ROSbridge 顾名思义,是一个ROS当中的中间件,ROS 桥,是用 ...

  9. Linux系统防CC攻击自动拉黑IP增强版Shell脚本 《Linux系统防CC攻击自动拉黑IP增强版Shell脚本》来自张戈博客

    前天没事写了一个防CC攻击的Shell脚本,没想到这么快就要用上了,原因是因为360网站卫士的缓存黑名单突然无法过滤后台,导致WordPress无法登录!虽然,可以通过修改本地hosts文件来解决这个 ...

  10. java.lang.IllegalArgumentException: Request header is too large的解决方法

    <Connector port="8080" protocol="HTTP/1.1"               connectionTimeout=&q ...