本文首先介绍Nginx几大流派(分支),然后简述Nginx核心组成部分,最后介绍在编译安装时的重要参数和核心目录。

文章目录

  • 1.Nignx几大分支
  • 2.Nginx组成部分:
  • 3.编译安装Nginx
    • 编译参数说明
    • 编译中间文件介绍:
    • 安装目录介绍:
  • 4.源码目录介绍
  • 5.conf配置文件高亮显示:

1.Nignx几大分支

1.开源版nginx.org

2.商业版:nginx.com

3.阿里巴巴的 Tengine

4.OpenResty:分为开源和商业版

首先俄罗斯人开发出了Nignx,最后发展为开源版本Nginx和商业版Nginx,有点类似Centos和RedHat。后来张玉春在Nginx基础上,扩展开发形成OpenResty,也成为一个很重要的分支。阿里巴巴最后在Nginx基础上开发了自己的Tengine。 三者用法几乎一致,而且底层都是基于最开始的Nginx核心模块,并且相互之间的一些模块可以互相使用。

2.Nginx组成部分:

Nginx就像一辆高性能的汽车,Nginx二进制可执行文件是发动机(可更换,即热部署),Nginx.conf配置文件就是驾驶舱,access.log就是行车记录仪,而error.log便是黑匣子。

3.编译安装Nginx

使用编译源码方式安装。这里不推荐其他安装方式。源码安装一方面可以获取最新的Nginx,另一方面可以方便灵活的编译不同模块到Nginx,在生产环境可能需要经常热部署升级等,这些都必须是编译源码安装。

这里我仅以Centos7为例演示安装Nginx:

  • 第一步:在官网下载Nginx源码 ,

    Nginx官网提供了三个类型的版本
    Mainline version:Mainline 是 Nginx 目前主力在做的版本,可以说是开发版
    Stable version:最新稳定版,生产环境上建议使用的版本
    Legacy versions:遗留的老版本的稳定版

sudo wget http://nginx.org/download/nginx-1.16.0.tar.gz
  • 第二步:安装必要的一些类库和软件支持(如果已装,可跳过)
#1.安装gcc g++开发类库是否装好
ububtu平台编译环境可以使用以下指令
apt-get install build-essential
apt-get install libtoolcentos平台编译环境使用如下指令
yum -y install gcc automake autoconf libtool make
yum install gcc gcc-c++
#2.正则表达相关PCRE
sudo apt-get install libpcre3 libpcre3-dev centos:
yum install -y pcre pcre-devel#3.安装openssl
ubuntu下:
apt-get install openssl
apt-get install libssl-devcentos下:
yum -y install openssl openssl-devel#4.安装zlib库
sudo wget
https://nchc.dl.sourceforge.net/project/libpng/zlib/1.2.11/zlib-1.2.11.tar.gztar -zxf zlib-12.11.tar.gz
cd zlib-1.2.11
./configure
make
make install
  • 第三步:解压并进入解压目录
sudo tar -zxf nginx-1.16.0.tar.gz
cd cd nginx-1.16.0
  • 第四步:编译安装(老三步)
./configure --prefix=/home/zx/nginx
make
make install
  • 第五步:启动和停止Nginx服务
sudo ./nginx -c /usr/local/src/nginx/conf/nginx.conf  //启动
sudo /usr/local/src/nginx/sbin/nginx -s reload //平滑重启./nginx -s stop #立即停止服务
./nginx -s quit #优雅的停止服务
./nginx -s reload #重载配置文件
./nginx -s reopen #重新开始记录日志文件停止:
ps -ef|grep nginx
kill -QUIT 2072 //停止kill -TERM 2132
kill -9 nginx //强制停止重启:
kill -HUP 进程号
编译参数说明

第四步中 --prefix 可以指定安装目录,如果不指定该参数默认是/usr/local/nginx 目录。

通过下面命令可以查看更多可选编译参数:

./configure --help | more

这些参数主要分为三类:

  • 1.指定一些目录

    比如:–prefix 可以指定安装目录。

  • 2.指定编译时使用或者排除那些模块:

    其中–with开头的说明默认不会编译进nginx如果需要该模块,需要加上该参数去编译进Nginx二进制文件,–without开头则说明默认会编译进去,如果不需要,需要指定进行移除。

  • 3.指定一些特殊参数:比如要打印一些debug日志等

编译中间文件介绍:

编译产生的中间文件会在objs目录中。其中最重要的是ngx_modules.c 这里边会决定nginx会将那些模块进行安装。另外nginx的运行二进制文件也会在objs中,如果我们是做nginx升级,我们不能运行make install ,而需要将nginx文件拷贝到nginx目录中覆盖原有的二进制文件。objs中的src是c语言编译产生的中间文件。

安装目录介绍:

执行make install便会安装nginx到指定目录。安装目录中的nginx.conf配置文件就是从源码的conf中拷贝的,sbin目录中则是核心的二进制执行文件。

4.源码目录介绍

上面编译安装的第三步解压后目录如下:

drwxr-xr-x 6 1001 1001    326 Aug 26 20:14 auto
-rw-r--r-- 1 1001 1001 296223 Apr 23 21:13 CHANGES
-rw-r--r-- 1 1001 1001 451813 Apr 23 21:13 CHANGES.ru
drwxr-xr-x 2 1001 1001    168 Aug 26 20:14 conf
-rwxr-xr-x 1 1001 1001   2502 Apr 23 21:12 configure
drwxr-xr-x 4 1001 1001     72 Aug 26 20:14 contrib
drwxr-xr-x 2 1001 1001     40 Aug 26 20:14 html
-rw-r--r-- 1 1001 1001   1397 Apr 23 21:12 LICENSE
drwxr-xr-x 2 1001 1001     21 Aug 26 20:14 man
-rw-r--r-- 1 1001 1001     49 Apr 23 21:12 README
drwxr-xr-x 9 1001 1001     91 Aug 26 20:14 src
  • auto中是一些判断操作系统支持,编译等相关的文件。

  • CHANGES:是版本的更改日志(.ru是俄语版,因为作者是俄罗斯)

  • conf中是示例配置文件,可方便配置,可以直接拷贝到安装目录,简化配置。

  • configure脚本:是编译生成中间文件前的一个必备动作。

  • contrib : 提供了语法高亮支持脚本,让vim打开时,语法高亮。需要拷贝contrib中到 本地vim目录(如果根目录没有该目录,先mkdir ~/.vim)

cp -r contrib/vim/* ~/.vim/
  • man:帮助目录

  • html: 有两个默认页面一个是报错后的显示

  • src: 源码目录

5.conf配置文件高亮显示:

将源码目录的vim目录拷到系统用户根目录:(如果系统不存在.vim目录,先新建目录)

cp -r contrib/vim/* ~/.vim/

Nginx源码目录介绍相关推荐

  1. Java源码学习--00源码目录介绍

    源码目录中的   rj.jar就是我们需要学习的源码所在目录,打开后发现有,com,java,javax,jdk,org,sun等不同的包 我们学习源码肯定需要排除干扰,如com,jdk,sun,or ...

  2. thinkPHP源码目录介绍

    解压源码目录 Application 整个应用的存储代码(项目代码存储的模型.视图.控制器) Extend 第三放扩展文件的存储目录(针对没有命名空间的类) Public 域名解析的目录,也可以存储各 ...

  3. Redis源码解析(1)——源码目录介绍

    概念 redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合)和zset(有序集合).这些 ...

  4. linux内核源码系统调用有多少个,Linux内核源码目录介绍

    Linux的内核源代码可以从很多途径得到,我一般常常去kernel.org看看.一般来讲,在安装的linux系统下,usr/src/linux目录下的东西就是内核源代码.源码的版本号有一个非常简单的编 ...

  5. Linux内核源码目录介绍

    Linux内核目录如下: arch: 不同平台体系结构的相关代码 block:设备驱动 certs:与认证和签名相关代码 crypto:内核常用压缩算法.常用加密算法等等源代码 document:描述 ...

  6. android framework源码目录介绍

    简介 之前的研究太偏向应用层功能实现了,很多原理不了解没有深究,现在研究framework框架层了. 记录 1.下载源码,目录如下: 2.Android系统的层次如下: 3.项目目录简单分析如下: 4 ...

  7. RK3568平台开发系列讲解(环境篇)瑞芯微原厂源码目录介绍

  8. SRS流媒体服务器——单机环境搭建和源码目录介绍

    SRS流媒体服务器--单机环境搭建和源码目录介绍 1. 目录 环境搭建 源码目录介绍 1. 环境搭建 srs官⽹:https://github.com/ossrs/srs 码云的源速度快:https: ...

  9. Android系统源码学习——源码目录结构介绍

    2019独角兽企业重金招聘Python工程师标准>>> Android 4.0源码目录结构: 本文介绍Android源码目录结构,以便读者理清Android编译系统核心代码在Andr ...

  10. Live555源码阅读笔记(一):源码介绍文档 及 源码目录结构

    目录 一.Live555介绍 1.Live555项目介绍 2.官网及帮助文档介绍 二.源码目录结构 1.UsageEnvironment 2.BasicUsageEnvironment 3.group ...

最新文章

  1. yjk只算弹性的不计算弹塑性_基于ANSYS Workbench的表面裂纹计算
  2. Mysql服务器问题(2013.3.5日发现)
  3. Python1217作业
  4. MOS和三极管不同接法对应的性能比较
  5. Luogu 1941 飞扬的小鸟
  6. CRM_MESSAGES_DISPLAY debug
  7. 程序安装mysql数据库_安装Mysql数据库
  8. Bootstrap面包屑导航
  9. 当Ext.js中xtype: 'checkboxfield'时,没勾选则向后台发送的数据没有字段的解决方法...
  10. HttpClient配置
  11. 从SVN服务器下载project到本地
  12. java Swing+mysql实现的家庭收支管理系统(个人收支录入和查询)
  13. 性能测试---影响性能的因素
  14. 二极管和稳压管的区别
  15. Java设计模式——工厂模式——模拟Spring
  16. iOS应用性能调优的建议和技巧--中高级--王朋
  17. 海康SDK的NET_DVR_GET_FTPCFG_V40
  18. C/C++ 如何设计框架
  19. C++ 快速学习(一)
  20. 554 5.7.1详细排错过程

热门文章

  1. 如何把html文件转化为mp3,如何将Flash转换为MP3
  2. SuperMap GIS 10i大数据GIS 技术白皮书
  3. Windows系统修改Docker镜像下载地址
  4. (原)SCOR模型在化工行业的应用
  5. 嵌入式UWB定位测距设备开发实战(7)硬件之天线选型
  6. Eclipse 最佳字体 推荐
  7. amesim2020安装
  8. 2020年这些正则应该被收藏(更新, 63条)
  9. cad 万能字体_好东西!相见恨晚的50个CAD技巧
  10. H5网页漫画小说苹果cms模板源码/支持对接公众号/支持三级分销