实验环境:macOS,Nginx 版本:1.16.0

说明:其实在 macOS 系统上,使用 brew 才是进行软件安装管理的正确姿势,这里仅是为了演示。

源码下载 & 目录结构

首先,前往开源版本的 Nginx 官网下载页面:http://nginx.org/en/download.html ,选择你需要的版本直接下载或者复制下载链接,然后使用各种下载工具下载:

1
2
$ wget http://nginx.org/download/nginx-1.16.0.tar.gz # 下载源码文件
$ tar -zxf nginx-1.16.0.tar.gz # 解压缩源码文件

为了更为清晰地看到编译安装的过程,我们 cd 到解压后的源码文件中并查看其目录结构如下:

部分目录释义如下:

  • conf/ 目录存放了默认配置文件,在接下来安装 make install 的时候会被复制到安装目录中去。
  • src/ 目录存放了 Nginx 项目的源代码

编译前配置

支持哪些配置参数?

在执行 shell 脚本 ./configure 之前,我们可以使用 ./configure --help 查看一下它都支持哪些选项参数,比如 --prefix=PATH 用来设置安装目录。

关于 configure 支持哪些参数及其含义,Nginx 官方文档对此提供了详细的解释:Building nginx from Sources

开始配置

这里我们仅仅指定了安装目录选项 --prefix

1
$ ./configure --prefix=/usr/local/nginx # 将 Nginx 安装在 /usr/local/nginx 目录下

执行完 ./configure shell 脚本后,会生成一些中间文件:文件 Makefile 和目录 objs/

编译 & 安装

接下来,就可以执行 make 编译了。这个过程也会在 objs 生成多个中间文件,其中就包括目标文件 nginx ,即可执行的二进制程序。

最后,我们就可以通过执行 make install 来安装 Nginx 了,安装完成后,在我们之前指定的安装目录中就会如下图所示:

图中带红色标记的文件夹实在 nginx 第一次启动时创建的。

后台启动

我们通过 sudo /usr/local/nginx/sbin/nginx 可以直接启动服务器,默认情况下,nginx 是以后台守护进程的方式运行的,我们可以通过配置文件 nginx.confdaemon 配置指令控制此行为。