本节书摘来异步社区《精通Nginx》一书中的第1章,第1.2节,作者: 【瑞士】Dimitri Aivaliotis 译者: 陶利军 责编: 陈冀康,更多章节内容可以访问云栖社区“异步社区”公众号查看。
1.2 从源代码安装Nginx
Nginx代码提供了两个独立的下载分支—标准版和开发版。开发分支是一个正处于积极开发状态的版本。在这个版本中将会有一些新的功能被集成到其中,在标准版中是找不到这些功能的。当一个“开发”版被发布时,它会经历同样的QA和作为标准版的一组类似功能的测试。因此无论哪一个分支都可以用于生产环境。两者主要的不同在于对第三方模块的支持。在开发版本里内部的API可能会改变,而标准版本却保持不变,因此为了向下兼容第三方模块,在标准版本中第三方模块都可以有效使用。
1.2.1 准备编译环境
为了从源代码编译Nginx,系统需要具备某些必要的条件。除了编译器之外,如果想启用SSL支持和能够使用rewrite模块,那么还需要提供相应的OpenSSL和PCRE (Perl Compatible Regular Expressions)库及开发头文件。这依赖于系统,也有可能在系统中这些必要条件已经被默认安装了,如果没有安装,那么需要从其安装包安装或者是从源码下载并解压安装,但是要在Nginx的配置文件中指定它们在系统中安装的位置。
如果在配置文件中使用了–with-<library>=<path>选项,那么Nginx将试图建立一个静态的依赖库。如果你想是的Nginx不依赖于系统的任何其他部分,也可能是你想多榨取一点nginx二进制额外的性能,那么你可能会使用构建静态库的做法。如果你使用的外部库的功能只能从某个版本起(例如,NPN[Next Protocol Negotiation] TLS扩展从OpenSSL 1.0.1版本有效),那么你就不得不将其指定到特定版本解压后的源代码路径。
根据你自己的喜好,可能还会提供其他的、可选的安装包。这些安装包包括MD5和SHA-1以支持哈希算法、zlib压缩库、libatomic库。在Nginx中,很多地方会使用到哈希算法,例如,为了计算URI哈希从而计算缓存key。zlib压缩库被用于投递gzip压缩的内容。如果atomic_ops库有效,那么Nginx将会使用它实现自动内存更新操作,以便实现高性能的内存锁定代码。
1.2.2 从源代码编译
可以从http://nginx.org/en/download.html地址下载Nginx,从该页面找到.tar.gz或者.zip格式的下载分支,按照下面的步骤将下载的安装包解压到一个临时的目录中。
$ mkdir $HOME/build
$ cd $HOME/build && tar xzf nginx-<version-number>.tar.gz
使用下面的命令来配置Nginx。
$ cd $HOME/build/nginx-<version-number> && ./configure
然后使用下面的命令编译并且安装。
$ make && sudo make install
下表的配置选项将帮助您设计出自己的Nginx二进制。这些选项对Nginx都是有效的,模块可以被独立激活。
在编译自己的二进制Nginx时,你会有很大的灵活性来包含你仅使用的功能。你已经说定使用哪个用户运行Nginx了吗?你要使用默认的logfile位置,以便不用在Nginx的配置文件明确地说明它们吗?表1-1所示是配置选项列表,通过它来帮助你设计你自己的nginx命令。
如表1-2所示,可以优化编译,这正是下表中的选项的用武之地。