Nginx学习之编译nginx1.16.1

什么是Nginx? Nginx 是一个跨平台的web服务器,可运行在Linux,FressBSD,Solaris,AIX,MacOS,Windows等操作系统上,并且它还可以使用当前操作系统特有的一些高效API来提高自己的性能。

上面就是一段关于Nginx的简单描述,我们用一个软件,理当对它的优点有所理解,Nginx的优点主要有以下几方面。

  1. 相对其他服务器更快,一方面,在正常情况下,单次请求会得到更快的响应;另一方面,在高并发情况下比其他服务器更快的响应请求。
  2. 高扩展性,Nginx由C语言开发,并且拥有大量的插件库,根据需要我们可以将自己所需要的插件库编译进Nginx中,还可以自己开发自己所需的插件库。
  3. 高可靠性,Nginx是采用多进程的方式工作,由一个master进程和多个worker进程组成,可以实现不停机版本自我更新,所以基本上Nginx很少挂掉。
  4. 低内存消耗,Nginx由C语言开发,相对Tomcat 等等,其占用内存非常低。
  5. 热部署,Nginx可以在不停止当前服务的情况下,实现热部署,无缝切换。
  6. Nginx采用了最开放最自由的BSD许可协议。

了解了Nginx,我们就开始Nginx学习的第一步,编译自己的Nginx。由于Nginx使用C语言编写,使用gcc编译器。故我们优先选用Linux平台编译,我这里使用的是阿里云的一台Ubuntu服务器。

1.下载Nginx
Nginx学习之编译nginx1.16.1_第1张图片

  • Mainline version(主线版本,最新的特性都是在这个版本中,不适合生产环境下载,懂的都懂)

  • Stable version(稳定版,生产使用首选)

  • Legacy versions(历史版本,大多公司会使用历史版本,因为这些往往经过了大量时间的考验)
    我们选择下载Stable version版本。登录我们的阿里云服务器。执行如下命令:

    wget http://nginx.org/download/nginx-1.16.1.tar.gz
    tar xzvf nginx-1.16.1.tar.gz
    

Nginx学习之编译nginx1.16.1_第2张图片
进入Nginx的目录,我们可以看到以下几个文件或目录。这里我们简要说明一下:

  • auto目录主要是存放Nginx用到的一些c或c++库,以及对于各个操作系统的适配。
  • CHANGES文件主要是记录Nginx版本更新中添加的一些功能以及修复的Bug。
  • CHANGES.ru CHANGES文件的俄语版本(Nginx是俄罗斯人写的,理当如此)
  • conf 目录Nginx的配置文件。
  • configure 这个脚本是Linux软件中很重要的一个步骤,检验目标平台是否符合当前软件的 编译环境。
  • contrib 这个目录下都是Nginx提供的一些插件,诸如Vim支持Nginx配置文件语法高亮等等,有兴趣的可以打开自己看看,里面有README。
  • html 目录Nginx用到的Html页面。
  • LICENSE 协议
  • man 帮助手册,懂的都懂
  • README 懂的都懂
  • src Nginx源代码目录。

了解了目录,接下来就开始我们的准备编译环境,首先我们安装三个linux库。分别是

  • gcc

  • libpcre3 libpcre3-dev (debian系列的是这样,如果是redhat系列的,库名请自行搜索),pcre
    是Perl语言编写的正则表达式库,如果你的Nginx配置文件中需要使用正则表达式,需 要此库。

  • zlib1g-dev (debian系列的是这样,如果是redhat系列的,库名请自行搜索),Zlib是一个gzip库,如果你想使用nginx的gzip压缩功能,需要此库

  • openssl libssl-dev ,我们的Nginx不仅要支持http也要支持https,故必须安装此库。

执行如下命令:

apt install gcc libpcre3 libpcre3-dev zlib1g-dev openssl libssl-dev

完成这些之后,我们进入Linux程序编译的四步走:

  1. 执行configure脚本生成目标平台makefile (使用./configure --help 可以查看可以配置的参数,比如编译后存放的目录,二进制可执行文件的目录,等等,今天我们就按照默认配置编译即可)
  2. make -编译源代码。
  3. make install - 安装可执行文件。
  4. make clean。清理编译过程中的文件。
    依次执行后结果如下:
    Nginx学习之编译nginx1.16.1_第3张图片

Nginx学习之编译nginx1.16.1_第4张图片
Nginx学习之编译nginx1.16.1_第5张图片
Nginx学习之编译nginx1.16.1_第6张图片

在make install执行成功之后我们可以看到Nginx将我们需要Nginx可执行文件编译到了/usr/local/nginx目录,如果想更改这个目录,请在执行configure脚本时,加入参数改变。可以执行./configure --help 查看。

接下来我们进入usr/local/nginx 目录。先将端口改为8888,然后执行启动脚本,如下图所示我们启动了一个master进程和一个worker进程。
Nginx学习之编译nginx1.16.1_第7张图片

接下来我们访问:47.103.40.0:8888可以看到nginx的欢迎页面,Nginx编译成功。
Nginx学习之编译nginx1.16.1_第8张图片
如果有兴趣可持续关注我的后续博文!谢谢。有问题,有疑问请在评论中说出。我会一一回答。

你可能感兴趣的:(Nginx)